Кто может помочь? Нужен трейлинг стоп, который ставит для buy стоп на LOW предыдущей свечи. Для sell ставит на HI предыдущей свечи. При закрытии 0 свечи, переносит для sell на hi стоп, для buy на low. Если слишком близко, то оставляет на текущем уровне. Ждем другой свечи, если возможно то переносим. Если нет, то опять ждем.
- Помощь в кодировании
- Сделал я как-то такую штуку ...
- Кто шарит MQL нужен совет!!!
Syte:
Кто может помочь? Нужен трейлинг стоп, который ставит для buy стоп на LOW предыдущей свечи. Для sell ставит на HI предыдущей свечи. При закрытии 0 свечи, переносит для sell на hi стоп, для buy на low. Если слишком близко, то оставляет на текущем уровне. Ждем другой свечи, если возможно то переносим. Если нет, то опять ждем.
в каком виде нужен?
Кто может помочь? Нужен трейлинг стоп, который ставит для buy стоп на LOW предыдущей свечи. Для sell ставит на HI предыдущей свечи. При закрытии 0 свечи, переносит для sell на hi стоп, для buy на low. Если слишком близко, то оставляет на текущем уровне. Ждем другой свечи, если возможно то переносим. Если нет, то опять ждем.
Я хочу вставить функцию трала, в советник. В конце кода советника. Трал написал, но он не такой, какой нужен. Поставил обычный, который тралит, после входа в прибыль на N пунктов. Вообщем нужен код трала, по выше указанному условию, для вставки в советника.
//------------------------------------------------------------------ TralPos void TralPos(int magic, string smb, int tf, int b) { for (int i=0; i<OrdersTotal(); i++) // проходим по всем ордерам и двигаем стопы { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderMagicNumber()!=magic || OrderSymbol()!=smb) continue; int dir=OrderType(); if (dir!=OP_BUY && dir!=OP_SELL) continue; double csl=OrderStopLoss(); double cop=OrderOpenPrice(); double ctp=OrderTakeProfit(); double apr=Bid; if (dir==OP_SELL) apr=Ask; double sl; double StopLvl=MarketInfo(smb, MODE_STOPLEVEL)*Point; if (dir==OP_BUY) sl=iLow(smb, tf, b); else sl=iHigh(smb, tf, b); if (dir==OP_BUY) sl=MathMin(apr-StopLvl, sl); else sl=MathMax(apr+StopLvl, sl); sl=NormalizeDouble(sl, Digits); if ((dir==OP_BUY && (sl<cop || (sl<=csl && csl!=0))) || (dir==OP_SELL && (sl>cop || (sl>=csl && csl!=0)))) continue; if (!OrderModify(OrderTicket(), cop, sl, ctp, 0)) Print("error "+GetLastError()); } }
это трал по Хай/Лоу.
Первый перенос будет выше цены открытия.
Не могу понять. Пишет ошибку. Может я не так что то делаю? Вот код, советника, с обычным тралом. При замене, обычного трала, пишет ошибку. Как от нее избавиться? Скорее всего пропустил, что то.
extern double TrailingStop = 20; int cnt; int ticket,Y; datetime t; bool eorder; double tp,sl; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- int j; for (j = 0; j < OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) { if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket(), CLR_NONE); } } } //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int j; eorder=false; for (j = 0; j < OrdersTotal(); j++) { if (OrderSelect(j, SELECT_BY_POS)) { if (OrderSymbol() == Symbol()) { if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUY || OrderType()==OP_SELL) { eorder=true; } } } } if (iBarShift(NULL,0,t)>0) Y=0; if (eorder==false) if ((TimeCurrent()-Time[0])<1) { if (Y==0) { if (Open[1]>Close[1]) { //Медвежья свеча sl=High[1]-Low[1]; tp=(High[1]-Low[1])-((High[1]-Low[1])*0.25); ticket = OrderSend(Symbol(), OP_SELL, 1, NormalizeDouble(MarketInfo(Symbol(),MODE_BID), Digits), 3, NormalizeDouble(MarketInfo(Symbol(),MODE_ASK)+sl, Digits), NormalizeDouble(MarketInfo(Symbol(),MODE_BID)-tp, Digits), "My order Sell", 16384, 0, Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Sell order opened : ",OrderOpenPrice()); Print("SL : ",sl," TP: ",tp); } else { Print("Error opening Sell order : ",GetLastError()); } } else { //бычья свеча sl=High[1]-Low[1]; tp=(High[1]-Low[1])-((High[1]-Low[1])*0.25); ticket = OrderSend(Symbol(),OP_BUY, 1, NormalizeDouble(MarketInfo(Symbol(),MODE_ASK), Digits), 3, NormalizeDouble(MarketInfo(Symbol(),MODE_BID)-sl, Digits), NormalizeDouble(MarketInfo(Symbol(),MODE_ASK)+tp, Digits), "My order Sell", 16384, 0, Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); Print("SL : ",sl," TP: ",tp); } else { Print("Error opening BUY order : ",GetLastError()); } } Y=1; t=TimeCurrent(); } } for(cnt=0;cnt<OrdersTotal();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? // 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? // 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); } //+------------------------------------------------------------------+
Профессиональная работа :)
chepikds:
Профессиональная работа :)
Профессиональная работа :)
С меня программист, как с собаки балерина. Я по ТЗ собираю своего советника, и все по учебнику, уже запарился. Неделю собирал все в кучу. Теперь нашел, что нужно переделать трал, но не знаю как это сделать. Обычный сделал, а вот с другим мозгов не хватает. :(
Вы само сообщение об ошибке забыли указать.
gisip:
Вы само сообщение об ошибке забыли указать.
что за ашипка?
Вы само сообщение об ошибке забыли указать.
'(' - function definition unexpected C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (172, 13)
'i' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (174, 23)
'i' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (174, 40)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (174, 43)
'i' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (176, 34)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (176, 64)
'magic' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (177, 41)
'smb' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (177, 65)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (177, 68)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (178, 69)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (180, 49)
'smb' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (181, 54)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 32)
'smb' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 42)
'tf' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 47)
'b' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 51)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 52)
'smb' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 69)
'tf' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 74)
'b' - variable not defined C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 78)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (182, 79)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (183, 32)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (183, 60)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (183, 94)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (184, 46)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (186, 77)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (187, 65)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (187, 95)
')' - unbalanced right parenthesis C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (191, 12)
'}' - unbalanced parentheses C:\Program Files\Forex4you MetaTrader 4\experts\EasyTrade.mq4 (192, 3)
Все ошибки ссылаются на новый код.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь