Как обратиться к OrderLots() ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Макс Сопельцев
58
Макс Сопельцев  
Вопрос такой...

Хочу чтобы OrderSend("Lot") - Брал параметр лот из какого-то предыдущего ордера.

Предварительно я выбрал OrderSelect прошлый ордер и вывел в переменную его значение типа L=OrderLots()

После, при функции OrderSend (L*2) - аля легкий мартингейл - терминал орет на ошибку Лотов, как исправить?

for (i = (OrdersHistoryTotal()-2); i <= (OrdersHistoryTotal()-1); i++){  // Запускаем цикл для перебора последних двух ордеров среди закрытых //
      if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) // Ищем по истории закрытых ордеров //
         if (OrderType() == OP_BUY && Ask >= OrderOpenPrice() && ProfitOrder >= (TakeProfit-30) && ProfitOrder <= (TakeProfit + 30)) // Ищем плюсовой ордер с прибылью +- 30 пунктов от Тейкпрофита //
               {int ProfitOrder1Buy = ProfitOrder; // устанавливаем прибыль по ордеру в переменную //
                int typeOrder11 = OrderType(); // запоминаем направление ордера
                LotsOrder11 = OrderLots();//запоминает объем ордера
                OrderCloseTime11 = OrderCloseTime();
                if (TimeCurrent() == OrderCloseTime())

OrderSend(Symbol(),OP_BUY,LotsOrder11*3,Ask,20,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,211,0,Blue)


Alexey Viktorov
27756
Alexey Viktorov  
Макс Сопельцев:
Вопрос такой...

Хочу чтобы OrderSend("Lot") - Брал параметр лот из какого-то предыдущего ордера.

Предварительно я выбрал OrderSelect прошлый ордер и вывел в переменную его значение типа L=OrderLots()

После, при функции OrderSend (L*2) - аля легкий мартингейл - терминал орет на ошибку Лотов, как исправить?

for (i = (OrdersHistoryTotal()-2); i <= (OrdersHistoryTotal()-1); i++){  // Запускаем цикл для перебора последних двух ордеров среди закрытых //
      if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) // Ищем по истории закрытых ордеров //
         if (OrderType() == OP_BUY && Ask >= OrderOpenPrice() && ProfitOrder >= (TakeProfit-30) && ProfitOrder <= (TakeProfit + 30)) // Ищем плюсовой ордер с прибылью +- 30 пунктов от Тейкпрофита //
               {int ProfitOrder1Buy = ProfitOrder; // устанавливаем прибыль по ордеру в переменную //
                int typeOrder11 = OrderType(); // запоминаем направление ордера
                LotsOrder11 = OrderLots();//запоминает объем ордера
                OrderCloseTime11 = OrderCloseTime();
                if (TimeCurrent() == OrderCloseTime())

OrderSend(Symbol(),OP_BUY,LotsOrder11*3,Ask,20,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,211,0,Blue)

Логика в этом коде совсем никакая.

Какой такой сакральный смысл проверять текущую цену с ценой открытия ордера из истории Ask >= OrderOpenPrice()

Что за переменная ProfitOrder? Где она получает значение? 

Дальше даже разбираться нет ни желания ни смысла.

Igor Zakharov
6652
Igor Zakharov  
нормализовать лоты пробовали?
Макс Сопельцев
58
Макс Сопельцев  

Да, нормализация не помогла

Edgar Akhmadeev
2578
Edgar Akhmadeev  
Если код вставлять правильно, кнопкой "Код (Alt+S)", в нём будет легче разобраться посторонним. А так большинство проходит мимо этой каши.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий