// если уже TimeBegin то lots = AccountFreeMargin()*0.1*0.00001; //начальный лот lots = NormalizeDouble(lots, LotDigit); //округлили до знаков минимального лота if (MinLot>lots) lots = MinLot;// если текущйи баланс меньше минимального time = StrToTime((TimeBegin-1)+":00");//нашли свечку для Low и High i = iBarShift(NULL, 0, time); // выставляются отложенные ордера СеллЛимит над свечой и БайЛимит под свечой (TimeBegin-1) на H+1 и L-2 пунктах if (nSelllimit<=0 && tSell<=0) { if (Ask>=(High[i]+5*Point)) tSell = OrderSend(Symbol(), OP_SELL, lots, Ask, 2, 0, High[i]+Point*TP, "SellMR", MAGIC, 0, CLR_NONE); else tSell = OrderSend(Symbol(), OP_SELLLIMIT, lots, High[i]+5*Point, 2, 0, High[i]+Point*TP, "SellMR", MAGIC, 0, CLR_NONE); // Sleep (3000);//подождали 3 сек } if (nBuylimit<=0 && tBuy<=0) { if (Bid<=(Low[i]-1*Point)) tBuy = OrderSend(Symbol(), OP_BUY, lots, Bid, 2, 0, Low[i]-Point*TP, "BuyMR", MAGIC, 0, CLR_NONE); else tBuy = OrderSend(Symbol(), OP_BUYLIMIT, lots, Low[i]-1*Point, 2, 0, Low[i]-Point*TP, "BuyMR", MAGIC, 0, CLR_NONE); // Sleep (3000);//подождали 3 сек } } void Trailing(int SysID, color ClrBuy, color ClrSell) { int i, total = OrdersTotal(); if (total<=0) return; double Profit, price, nTP=0.0; int pos, pp; double m, m2, avgLevel, lots, lot1, newPrice, dSLPre; total = CreatTicketArray(OP_BUY, SysID); Profit=0.0; if (total>0) //Заглушка для OP_BUY {//1. Подсчитали прибыль по всем ордерам открытым в направлении dir for (i=1; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); Profit = Profit+(Bid-OrderOpenPrice())*OrderLots(); } //Находим середину всех сделок (точка, когда все + и - позы дают прибыль=0) m=0.0; m2=0.0; avgLevel=0.0; OrderSelect(Ticket[1], SELECT_BY_TICKET); avgLevel=OrderOpenPrice(); m = OrderLots(); for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); m2 = OrderLots(); avgLevel = avgLevel-(m2*(avgLevel-OrderOpenPrice()))/(m2+m); m = m+m2;} if (total>1) for (i=1; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); // if (OrderTakeProfit()<avgLevel) OrderModify(Ticket[i],0, OrderStopLoss(), avgLevel+Point*(TP/total), 0, ClrBuy); } } total = CreatTicketArray(OP_SELL, SysID); Profit=0.0; if (total>0) //Заглушка {//1. Подсчитали прибыль по всем ордерам открытым в направлении dir for (i=1; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); Profit = Profit + (OrderOpenPrice()-Ask)*OrderLots(); } //Находим середину всех сделок (точка, когда все + и - позы дают прибыль=0) m=0.0; m2=0.0; avgLevel=0.0; OrderSelect(Ticket[1], SELECT_BY_TICKET); avgLevel=OrderOpenPrice(); m = OrderLots(); for (i=2; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); m2 = OrderLots(); avgLevel = avgLevel+(m2*(OrderOpenPrice()-avgLevel))/(m2+m); m = m+m2; } if (total>1) for (i=1; i<=total; i++) { OrderSelect(Ticket[i], SELECT_BY_TICKET); // if (OrderTakeProfit()>avgLevel) OrderModify(Ticket[i],0, OrderStopLoss(), avgLevel-Point*(TP/total), 0, ClrSell); } } return; } //+------------------------------------------------------------------+
Файлы:
1.mq4
6 kb
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь