- Как сделать советник что бы сразу покупал или продавал MQL4
- Вопросы от начинающих MQL5 MT5 MetaTrader 5
- Спрашивайте!
Покупки или продажи? Когда покупки, а когда продажи?
Если две покупки, то что между ними? Расстояние, время, ещё что...
Какое закрытие? Стоп и тейк, или условие какое...
Новое открытие после закрытия обоих или после закрытия одного.
Точный вопрос - половина правильного ответа.
Покупки или продажи? Когда покупки, а когда продажи?
Если две покупки, то что между ними? Расстояние, время, ещё что...
Какое закрытие? Стоп и тейк, или условие какое...
Новое открытие после закрытия обоих или после закрытия одного.
Точный вопрос - половина правильного ответа.
Без временных рамок просто покупка либо продажа (регулировать в программе либо все покупки либо продажи либо один продажа другая покупка) . открытие неважно с какой цены просто чтобы открывало затем автоматически выставляло стоп и тейк. Новое открытие после закрытия обоих , как только закроются оба так сразу же открываются 2 следующих.
#property version "1.00" #property strict enum My{buy/*покупка*/, sell/*продажа*/}; input My Order1Type=buy; //Тип первого ордера input My Order2Type=sell; //Тип второго ордера input int StopLoss=1000; //Уровень убытка, пункты input int TakeProfit=1000; //Уровень прибыли, пункты input double Lot=0.1; //Размер лота sinput int Magic=10001; //Номер советника string symbol; int ticket; MqlTick tick; int digits; double point; double price, loss, take; color ccolor; int OnInit() { symbol=Symbol(); digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); point=SymbolInfoDouble(symbol,SYMBOL_POINT); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { } void OnTick() { if(!FindOrder(Magic,symbol)) { SymbolInfoTick(symbol,tick); if(Order1Type==buy) { price=NormalizeDouble(tick.ask,digits); loss=(StopLoss!=0)?NormalizeDouble(price-point*StopLoss,digits):0; take=(TakeProfit!=0)?NormalizeDouble(price+point*TakeProfit,digits):0; ccolor=clrBlue; } else { price=NormalizeDouble(tick.bid,digits); loss=(StopLoss!=0)?NormalizeDouble(price+point*StopLoss,digits):0; take=(TakeProfit!=0)?NormalizeDouble(price-point*TakeProfit,digits):0; ccolor=clrRed; } ticket=OrderSend(symbol,(Order1Type==buy?OP_BUY:OP_SELL),Lot,price,2*(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD),loss,take,NULL,Magic,0,ccolor); if(Order2Type==buy) { price=NormalizeDouble(tick.ask,digits); loss=(StopLoss!=0)?NormalizeDouble(price-point*StopLoss,digits):0; take=(TakeProfit!=0)?NormalizeDouble(price+point*TakeProfit,digits):0; ccolor=clrBlue; } else { price=NormalizeDouble(tick.bid,digits); loss=(StopLoss!=0)?NormalizeDouble(price+point*StopLoss,digits):0; take=(TakeProfit!=0)?NormalizeDouble(price-point*TakeProfit,digits):0; ccolor=clrRed; } ticket=OrderSend(symbol,(Order2Type==buy?OP_BUY:OP_SELL),Lot,price,2*(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD),loss,take,NULL,Magic,0,ccolor); } } bool FindOrder(int eMagicNumber, string eSymbol) { int eIterator, eTotal=OrdersTotal(); for(eIterator=0; eIterator<eTotal; eIterator++) { if(!OrderSelect(eIterator,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=eSymbol) continue; if(OrderMagicNumber()!=eMagicNumber) continue; if(OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue; return(true); } return(false); }не проверял, но по идее...
не проверял, но по идее...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования