Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»
Внимание: для входа на форум используйте e-mail вместо ника, пароль остаётся прежним. Если вы забыли свой e-mail пишите в техподдержку ( MFadmin@bk.ru )

MDM

Пользователи ST test (off)
  • Постов

    17
  • Зарегистрирован

  • Посещение

Достижения MDM

записался

записался (3/5)

0

Репутация

  1. привет Liv. попытался сделать советник на пересечение двух МА. Не могу понять почему не открывает ордера, пожалуйста подскажи в чем тут дело. extern double TakeProfit = 50; extern double Lots = 0.2; extern double TrailingStop = 30; extern double MovingPeriod=12; extern double MovingPeriod2=21; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double MA1Current, MA2Previous, SignalCurrent; double SignalPrevious, MA3Current, MA4Previous; int cnt, ticket, total; // initial data checks // it is important to make sure that the expert works with a normal // chart and the user did not make any mistakes setting external // variables (Lots, StopLoss, TakeProfit, // TrailingStop) in our case, we check TakeProfit // on a chart of less than 100 bars if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } // to simplify the coding and speed up access // data are put into internal variables MA1Current=iMA(NULL,12,0,0,PRICE_CLOSE,MODE_MAIN,0); MA2Previous=iMA(NULL,21,0,0,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMA(NULL,12,0,0,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMA(NULL,21,0,0,PRICE_CLOSE,MODE_SIGNAL,1); MA3Current=iMA(NULL,0,MovingPeriod,0,MODE_EMA,PRICE_CLOSE,0); MA4Previous=iMA(NULL,0,MovingPeriod2,0,MODE_EMA,PRICE_CLOSE,1); total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility if(MA1Current>MA2Previous && MA1Current>SignalPrevious && MA2Previous<SignalCurrent && MA3Current>MA4Previous ) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,Ask+TakeProfit*Point,"Moving Averages",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } // check for short position (SELL) possibility if(MA1Current<MA2Previous && MA1Current<SignalPrevious && MA2Previous>SignalCurrent && MA3Current<MA4Previous) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,4,0,Bid-TakeProfit*Point,"Moving Averages",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } // it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? if(MA1Current<MA2Previous && MA1Current<SignalPrevious && MA2Previous>SignalCurrent && MA3Current<MA4Previous) { OrderClose(OrderTicket(),OrderLots(),Bid,4,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? if(MA1Current>MA2Previous && MA1Current>SignalPrevious && MA2Previous<SignalCurrent && MA3Current>MA4Previous) { OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } // the end.
  2. Посоветуте торговую систему. Я новичок и от большого количества все ТС немного не посебе да и некоторые до токой степени замудрены, что голова кругом идет
×
×
  • Создать...