Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен программист? Оставь заказ и он сам тебя найдет!
Sasha
15
Sasha 2012.02.04 04:18 

Доброго времени суток форумчани . Данный код работает. Эта часть кода из эксперта ilan1.6dynamic - как показал разбор данного кода - крякозябл полный. Вопрос заключается в том, что в строчке эксперт изменяет тейкпрофит и цену (другого кода меняющего тейкпрофит в нем нет). Согласно справки "Замечания: цену открытия и время истечения можно изменять только у отложенных ордеров.
Если в качестве параметров функции передать неизмененные значения, то в этом случае будет сгенерирована ошибка 1 (ERR_NO_RESULT)." Как видно из кода ордера не отложные, но тейкпрофит изменяется. Я так думаю что если ошибка то и тейкпрофит не измениться. По идее туда надо поставить функцию OrderOpenPrice(). Кто что думает. За ранние всем спасибо.

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) OrderModify(OrderTicket(), NormalizeDouble(AveragePrice,Digits), NormalizeDoubl ...


total = CountTrades();
   AveragePrice = 0;
   double Count = 0;
   for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
            AveragePrice += OrderOpenPrice() * OrderLots(); // общая цена всех ордеров
            Count += OrderLots(); // количесвто ордеров 
         }
      }
   }
   
   if (total > 0) AveragePrice = NormalizeDouble(AveragePrice / Count, Digits); // AveragePrice - среднеея цена октрытия 
   if (NewOrdersPlaced) {
      for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
         OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_BUY) {
               PriceTarget = AveragePrice + TakeProfit * Point;
               BuyTarget = PriceTarget;
               Stopper = AveragePrice - Stoploss * Point;
               flag = TRUE;
            }
         }
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
            if (OrderType() == OP_SELL) {
               PriceTarget = AveragePrice - TakeProfit * Point;
               SellTarget = PriceTarget;
               Stopper = AveragePrice + Stoploss * Point;
               flag = TRUE;
            }
         }
      }
   }
   if (NewOrdersPlaced) { // Модификация ордеров
      if (flag == TRUE) {
         for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
            OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
            if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) OrderModify(OrderTicket(), NormalizeDouble(AveragePrice,Digits), NormalizeDouble(OrderStopLoss(),Digits), NormalizeDouble(PriceTarget,Digits), 0, Yellow);
            NewOrdersPlaced = FALSE;
         }
      }
   }
Victor Nikolaev
Модератор
14085
Victor Nikolaev 2012.02.04 13:29  
Начинать надо с монитора. Что бы другим легче читать было
keekkenen
1128
keekkenen 2012.02.04 13:37  
в чем проблема-то - в ошибке или что поставить в тейкпрофит ?
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий