if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,1)>iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,1) && iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,0)) { if (Ticket_sell==0) { ticket_sell=OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Stop_loss,Take_Profit); } } if(OrderSelect(ticket_sell, SELECT_BY_TICKET,MODE_HISTORY)==true) { t_close=OrderCloseTime(); if (t_close!=0) { t_close=0; ticket_sell=0; } }
Примерно так. А первое условие непонятно зачем нужно. Если MA5 пересекает МА85, то сомо собой она уже до этого персекла МА75. Если необходимо одновременное пересечение, то сверху надо поставить соответствующее условие.
Примерно так надо. Если надо написать полностью советник, то пишите в личку.
if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,1)>iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,1) && iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,0)) { Ticket_sell=-1; } if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)>iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,0) && Ticket_sell<0) { Ticket_sell=0; } if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,1)>iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,1) && iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,0)) { if (Ticket_sell==-1) { Ticket_sell=OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Stop_loss,Take_Profit); } } if(OrderSelect(Ticket_sell, SELECT_BY_TICKET,MODE_HISTORY)==true) { t_close=OrderCloseTime(); if (t_close!=0) { t_close=0; Ticket_sell=0; } }
Примерно Можно ещё так.
if (Ticket_sell==-1) { Ticket_sell=OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Stop_loss,Take_Profit); } }
Тут только одна сделка открывается. Параметры МА описываются Выше. Вообще не понятно что Вы хотите спросить. Убейте пару дней и прочтите учебник. Если нет времени, то все рады выполнить Ваш заказ.
if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,1)>iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,1) && iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,0) && Ticket_sell==0) { Ticket_sell=-1; } if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)>iMA(Symbol(),NULL,75,0,MODE_EMA,PRICE_MEDIAN,0) && Ticket_sell<1) { Ticket_sell=0; } if (iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,1)>iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,1) && iMA(Symbol(),NULL,5,0,MODE_EMA,PRICE_MEDIAN,0)<iMA(Symbol(),NULL,85,0,MODE_EMA,PRICE_MEDIAN,0)) { if (Ticket_sell==-1) { Ticket_sell=OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Bid+Stop_loss*Point,Bid-Take_Profit*Point); } } if(OrderSelect(Ticket_sell, SELECT_BY_TICKET,MODE_HISTORY)==true) { t_close=OrderCloseTime(); if (t_close!=0) { t_close=0; Ticket_sell=0; } }
главное что я теперь логику понял.... (ну как мне кажеться, надеюсь пока вопросов не будет) :)
спасибо FOReignEXchange.
Алгоритм, навреное, своеобразный. Я не учился в специальных учреждениях. Поэтому, может такой код покажется странным грамотным спецам, но он работает.
Можете подобрать свой алгоритм, главное чтоб он работал. Обучайтесь и удачи в деле!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ув. програмисты!
подскажите как решить проблему:
есть ma85, ma75, ma5.
когда ma5 пересекает ma85 и ma75 сверху вниз открытие sell
когда ma5 пересекает ma85 и ma75 снизу в верх открытие buy
закрытие по ТР.
и открывалось только одна сделка на одно пересечение.