#property copyright "Scam Laboratory 2012" #property link "http://www.forex4you.org/?affid=bdbda7b" //=============== Меню =============================================== extern string Name="BeerGodEA (25.06.12)"; extern double Lot = 1.0; extern int TimeBarOpen = 1; extern int Period_MA=20; // Период МА extern int Slippage = 1; extern int mn= 100; //============== Переменные ========================================== string GetNameOP="BeerGodEA"; // комент в открытом ордере double TimeBar_t; // текущее время свечи double sv_close; // цена закрытия свечи double PA; // текущая цена double MA_1_t; // МА текущая double MA_1_p; // МА предыдущая double NewBuy; // сигнал открытия покупки double NewSell; // сигнал открытия продажи //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { if (!IsTesting()) { if (IsExpertEnabled()) { Comment("Советник будет запущен следующим тиком"); } else { Comment("Отжата кнопка \"Разрешить запуск советников\""); } } return (0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {//0 //======== получение данных с индикаторов и текущей цены ====================== {//1 MA_1_t=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0); // МА_1 текущая MA_1_p=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,1); // МА_1 текущая TimeBar_t = (TimeCurrent()-Time[0])/60; // время в минутах с открытия свечи sv_close = iClose(NULL,0,1); // цена закрытия свечи на предыдущем баре PA = Bid; // получение текущей цены RefreshRates (); }//1 // ================= Обработка сигналов =============================== {//2 if ((PA < MA_1_t) && (MA_1_t < MA_1_p) && (PA < sv_close) && (TimeBar_t==TimeBarOpen)) NewBuy = 1; else NewBuy = 0; // условие BUY if ((PA > MA_1_t) && (MA_1_t > MA_1_p) && (PA > sv_close) && (TimeBar_t==TimeBarOpen)) NewSell = 1; else NewSell = 0; // условие BUY }//2 // ================= Открытие сделки =================================== {//3 // открытие BUY if ((NewBuy == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,GetNameOP,mn,0,LightSkyBlue); // открытие Sell if ((NewSell == 1) && (ExistPositions() == false)) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,GetNameOP,mn,0,HotPink); }//3 // ================= Закрытие сделки =================================== {//4 if (NewBuy == 1) { ClossAllProfitSell (); ClossAllLossSell(); } if (NewSell == 1) { ClossAllProfitBuy (); ClossAllLossBuy(); } }//4 // ================= Комментарии ====================================== {//5 Comment("Работаем :)"); // Комментарий в угол окна }//5 // ===================================================================== return(0); }//0 // ================= Функции ========================================== //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 06.03.2008 | //| Описание : Возвращает флаг существования позиций | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //| ot - время открытия ( 0 - любое время открытия) | //+----------------------------------------------------------------------------+ bool ExistPositions(string sy="", int op=-1, datetime ot=0) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i=0; i1--) { if (!OrderSelect(i1,SELECT_BY_POS,MODE_TRADES)) break; if (OrderType()==OP_BUY) { point1=MarketInfo(Symbol(),MODE_POINT); if (point1==0) break; bid1=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point1); open1=MathRound(OrderOpenPrice()/point1); if (bid1-open1=0; i2--) { if (!OrderSelect(i2,SELECT_BY_POS,MODE_TRADES)) break; // if (OrderType()==OP_BUY) // { // point=MarketInfo(Symbol(),MODE_POINT); // if (point==0) break; // bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point); // open=MathRound(OrderOpenPrice()/point); // if (bid-open=0; i4--) { if (!OrderSelect(i4,SELECT_BY_POS,MODE_TRADES)) break; if (OrderType()==OP_BUY) { point4=MarketInfo(Symbol(),MODE_POINT); if (point4==0) break; bid4=MathRound(MarketInfo(Symbol(),MODE_BID)/point4); open4=MathRound(OrderOpenPrice()/point4); if (open4-bid4=0; i5--) { if (!OrderSelect(i5,SELECT_BY_POS,MODE_TRADES)) break; // if (OrderType()==OP_BUY) // { // point5=MarketInfo(Symbol(),MODE_POINT); // if (point5==0) break; // bid5=MathRound(MarketInfo(Symbol(),MODE_BID)/point5); // open5=MathRound(OrderOpenPrice()/point5); // if (open5-bid5