Советник GreenTrade не открывает сделки ни на демо, ни на реале. А на истории торгует без проблем...
1) в терминале все разрешения для торговли советниками включены
2) никаких дополнительных индюков и прочего советник не требует
3) в логах всё чисто => ОШИБОК 0 и каких либо сообщений тоже...
4) при компиляции кода ошибок не выдаёт (есть некоторые предупреждения, но это даже я могу исправить, чтобы не выдавало мусора лишнего)
5) код писал не я!!! прошу помощи понять, почему советник ничего не делает. (есть подозрение на "GlobalVariableSet", но могу и ошибаться)
весь код советника:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // GreenTrade.mq4 // // kozaka@ukr.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #property copyright "Kozak Andrey" #property link "Kozaka@ukr.net" extern int MA_period = 67; extern int RSI_period = 57; extern int Tral = 150; extern int TakeProfit = 300; extern int StopLoss = 300; extern int Index_orders = 7; int init() { GlobalVariableSet("time",Time[0]); return; } int start() { int ticket; //if(Period() && Symbol()) { double Ma0 = iMA(NULL,0,MA_period,0,MODE_SMMA,PRICE_MEDIAN,0); double Ma5 = iMA(NULL,0,MA_period,0,MODE_SMMA,PRICE_MEDIAN,2); double Ma10 = iMA(NULL,0,MA_period,0,MODE_SMMA,PRICE_MEDIAN,4); double Ma15 = iMA(NULL,0,MA_period,0,MODE_SMMA,PRICE_MEDIAN,7); double RSI = iRSI(NULL,PERIOD_H1,RSI_period,PRICE_CLOSE,0);
if(OrdersTotal()<Index_orders) { if((Ma0>Ma5) > (Ma5>Ma10) > (Ma10>Ma15) && RSI>60) { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,30,Bid-StopLoss*Point,Ask+TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); }
if((Ma0<Ma5) < (Ma5<Ma10) < (Ma10<Ma15) && RSI<36) { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,30,Ask+StopLoss*Point,Bid-TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); } } if(OrdersTotal()<1) { for(int i=0;i<OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS); if(OrderType() == OP_BUY) { if(Ask+100*Point<OrderOpenPrice()) { OrderClose(OrderTicket(),OrderLots(),Bid,30,Red); ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,30,Ask+StopLoss*Point,Bid-TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); }
}
if(OrderType() == OP_SELL) { if(Bid-100*Point>OrderOpenPrice()) { OrderClose(OrderTicket(),OrderLots(),Ask,30,Red); ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,30,Bid-StopLoss*Point,Ask+TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); }
}
} } if(GlobalVariableGet("time")!= Time[0]) { for(int col=0;col<OrdersTotal(); col++) { OrderSelect(col,SELECT_BY_POS); { if(OrderType()==OP_BUY) { if(Bid-Tral*Point>OrderOpenPrice()) { OrderClose(OrderTicket(),0.05,Bid,30,Red);// && OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Tral*Point,OrderTakeProfit(),0);
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,30,Ask+StopLoss*Point,Bid-TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); } }
if(OrderType()==OP_SELL) { if(Ask+Tral*Point<OrderOpenPrice()) { OrderClose(OrderTicket(),0.05,Ask,30,Red);// && OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Tral*Point,OrderTakeProfit(),0);
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,30,Bid-StopLoss*Point,Ask+TakeProfit*Point); OrderSelect(ticket,SELECT_BY_TICKET); } }
}
GlobalVariableSet("time",Time[0]); } } } return; } |
---|
Вы про этот советник? Этого автора? Да, бросьте зачем он Вам? Есть много советников более лучших.
да, я в курсе, что это за советник, но мне нужно чтобы он начал совершать сделки
В журнале ошибок нет?
Нет. Я писал уже выше, что всё чисто. Советник простоял двое суток, но так и не открыл ни одной сделки, а на истории торгует ...
А на истории он что, каждую минуту по 100 ордеров открывает, что ли? На дату и время в результатах тестирования смотреть не пробовали?
Кроме того, торги на истории - это совсем не то же самое, что торговля в реальном времени. Всегда есть разница, история не повторяется один в один на реале.
тема, закрыта из-за того, что никто даже и не собирается вникать в суть вопроса, а только пишут коментарии, которые и так знаю, ни одного по делу...
Спасибо за пояснение, но это не у меня од бестолково построен, а у автора данного советника. Я не программист, но попробую исправить этот код. Спасибо!
Выражение (Ma0>Ma5) > (Ma5>Ma10) > (Ma10>Ma15) && RSI>60 будет истинно, если истинны (Ma0>Ma5) > (Ma5>Ma10) > (Ma10>Ma15) и RSI>60 т.к. по приоритетам сначала вычисляются >>> слева направо и уж затем &&. Нужно, чтобы Ma0>Ma5 Ma5<=Ma10 Ma10<=Ma15 RSI>60. И тогда будет покупать... А что, разумно! Покупаем на развороте!

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
с