Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Запусти агентов на свободном компьютере. Это принесет доход!
Roman
20
Roman 2011.02.26 21:40 

Добрый день.

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

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

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
29962
Andrey F. Zelinsky 2011.02.26 21:42  
DAHTuCT:

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

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

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

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

Главный косяк исправил. Первый пост комом.
o_O
Модератор
23319
o_O 2011.02.26 21:46  
DAHTuCT:

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

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

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

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


изменил на

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

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

Roman
20
Roman 2011.02.26 21:50  
sergeev:

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

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


что значит расставить принты?
o_O
Модератор
23319
o_O 2011.02.26 21:50  
DAHTuCT:

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

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

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


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

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

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

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