Скачать MetaTrader 5

Модификация ордеров

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Roman
20
Roman  

Добрый день.

Столкнулся с одной проблемой:

Есть кусок кода отвечающий за сопровождение открытых ордеров:

for(i=OrdersTotal()-1;i>=0;i--)
   {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) //- если ордеров нет стоп
      {
      break;
      }
   if(OrderType()==OP_BUYSTOP) //- если выделенный ордер отложенный байстоп, то закрыть если цена прошла максимальный откат
      {
      if (Low[0]<=OrderOpenPrice()-MPB*Point)
         {
         OrderDelete(OrderTicket());
         }
      }
   if (OrderType()==OP_SELLSTOP) //- если выделенный ордер отложенный селлстоп, то закрыть если цена прошла максимальный откат
      {
      if (High[0]>=OrderOpenPrice()+MPB*Point)
         {
         OrderDelete(OrderTicket());
         }
      }
   if(OrderType()==OP_BUY)
      {
      if(OrderStopLoss()>=OrderOpenPrice())
         {
         if(High[0]<High[1] && Low[0]<Low[1])
            {
            OrderClose(OrderTicket(),OrderLots(), Bid,3);
            }
         }
      else
         {
         if(Bid>=OrderOpenPrice()+BE*Point)
            {
            OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+MinTP*Point, OrderTakeProfit(),0);
            }
         }
    if (OrderType()==OP_SELL)
         {
         if(OrderStopLoss()<=OrderOpenPrice())
            {
            if(High[0]>High[1] && Low[0]>Low[1])
               {
               OrderClose(OrderTicket(), OrderLots(), Ask, 3);
               }
            }
         else
            {
            if(Ask<=OrderOpenPrice()-BE*Point)
               {
               OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-MinTP*Point,OrderTakeProfit(),0);
               }
            }
         }
      }
   }

Не могу понять почему не работает последняя часть отвечающая за модификацию ордеров Селл при прохождении ценой определенного расстояния... такой же код выше для бай ордеров работает...

Журнал не выдат никаких ошибок.. т.е. он даже не начинает модифицировать... Где я накосячил?

Спасибо.

Andrey F. Zelinsky
32068
Andrey F. Zelinsky  
DAHTuCT:

Где я накосячил?

Самый главный "косяк" - это размещение кода - надо по кнопке "SCR".

Вы в приведенном "отлично структурированном" коде видите что-то?

Roman
20
Roman  
abolk:
Самый главный "косяк" - это размещение кода - надо по кнопке "SCR"

Главный косяк исправил. Первый пост комом.
o_o
Модератор
23912
o_o  
DAHTuCT:

Журнал не выдат никаких ошибок.. т.е. он даже не начинает модифицировать... Где я накосячил?

1. расставьте принты

2. нормализуйте цену стоплоса

Roman
20
Roman  
sergeev:
нормализуйте цену стоплоса


изменил на

 OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-MinTP*Point,5),OrderTakeProfit(),0);

не помогло...

Roman
20
Roman  
sergeev:

1. расставьте принты

2. нормализуйте цену стоплоса


что значит расставить принты?
o_o
Модератор
23912
o_o  
DAHTuCT:

что значит расставить принты?
RTFM
Roman
20
Roman  
sergeev:
RTFM

я так понимаю ответить на вопрос что такое принты выше Вашего достоинства? В любом случае спасибо.
o_o
Модератор
23912
o_o  
DAHTuCT:

я так понимаю ответить на вопрос что такое принты выше Вашего достоинства? В любом случае спасибо.
был рад помочь. обращайтесь ещё.
Roman
20
Roman  
sergeev:
был рад помочь. обращайтесь ещё.


Прочитал про принты и понял что основная их задача выводить сообщение в логи при наступлении тех или иных событий.

Так же я написал что в логах никаких ошибок нет. т.е. в модификации ошибки вроде нет. при этом я вижу что наступило событие при котором модификация должна стартануть. Но этого не происходит.

Именно поэтому выложил код, чтобы более профессиональные люди возможно сразу увидели бы очевидную для них ошибку и указали бы на нее.

Roman
20
Roman  
Тема закрыта. Нашел где скобку неправильно поставил.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий