MT4. Вопрос по написанию советника: не срабатывает условие завязанное на рыночной цене

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

Здравствуйте, уважаемые форумчане.

если не там создал тему, прошу перекинуть её в нужное место. 

пишу советника...

одно из условий должно быть такое: Если текущая рыночная цена ниже чем Low последней сформировавшейся свечи[1], то ...

 

Вот такая штука работает: Low[1]<Low[2]. - но это слишком запаздывающее событие особенно для малых ТФ. 

 

Прописал как Low[0]<Low[1]  - не работает.

А как прописать текущую рыночную цену (или последнюю известную BID) никак не могу сообразить.

Помогите плиз.

Нутром чую что это элементарно... 

Andrey Pereverzev
300
Andrey Pereverzev  
МТ4
Maxim Kuznetsov
13654
Maxim Kuznetsov  
Andrey Pereverzev:

Здравствуйте, уважаемые форумчане.

если не там создал тему, прошу перекинуть её в нужное место. 

пишу советника...

одно из условий должно быть такое: Если текущая рыночная цена ниже чем Low последней сформировавшейся свечи[1], то ...

 

Вот такая штука работает: Low[1]<Low[2]. - но это слишком запаздывающее событие особенно для малых ТФ. 

 

Прописал как Low[0]<Low[1]  - не работает.

А как прописать текущую рыночную цену (или последнюю известную BID) никак не могу сообразить.

Помогите плиз.

Нутром чую что это элементарно... 

Внезапно : Bid<Low[1]

Или позабористей: MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,1)

Andrey Pereverzev
300
Andrey Pereverzev  
Maxim Kuznetsov:

Внезапно : Bid<Low[1]

Или позабористей: MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,1)

Bid<Low[1] - делал так, но не работает и не могу понять почему пффффф, должно ж
Andrey Pereverzev
300
Andrey Pereverzev  
Maxim Kuznetsov:

Внезапно : Bid<Low[1]

Или позабористей: MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,1)

MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,1)

не работает... 

Maxim Kuznetsov
13654
Maxim Kuznetsov  
Andrey Pereverzev:

MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,1)

не работает... 

вы бы показали больший фрагмент кода, в котором "не работает"
Andrey Pereverzev
300
Andrey Pereverzev  

Вот в таком кусочке: 

for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if

         (  
          MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,0,1) 
     

    


         
        )
        if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        if (OrderType()==OP_BUY) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
     }

 

Смысл данного кода в том, что при выполнении условия "MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,0,1)", т.е. (если рыночная цена оказалась ниже Лоя предыдущей (последней) свечи[1].) , должны быть закрыты все имеющиеся открытые БАЙ-ордера по текущей (рыночной) цене.

Artyom Trishkin
Модератор
56587
Artyom Trishkin  
Andrey Pereverzev:

Вот в таком кусочке: 

for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if

         (  
          MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,0,1) 
     

    


         
        )
        if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        if (OrderType()==OP_BUY) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
     }

 

Смысл данного кода в том, что при выполнении условия "MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,0,1)", т.е. (если рыночная цена оказалась ниже Лоя предыдущей (последней) свечи[1].) , должны быть закрыты все имеющиеся открытые БАЙ-ордера по текущей (рыночной) цене.

Сначала проверка, а потом, если истина, цикл по открытым позициям. Зачем вам проверка цены в цикле?
Andrey Pereverzev
300
Andrey Pereverzev  
Artyom Trishkin:
Сначала проверка, а потом, если истина, цикл по открытым позициям. Зачем вам проверка цены в цикле?

Цикл сделал для того, чтобы закрылись все открытые позиции по заданному условию.

Не так делаю?

Больше года не трогал mql... не могу сообразить.

Но в другом коде (иные задачи и иные паттерны) данный код закрытия работает исправно, но правда там используются уже сформированные свечи [1] и [2].

А вот как прицепить текущую цену не соображу 

Artyom Trishkin
Модератор
56587
Artyom Trishkin  
Andrey Pereverzev:

Цикл сделал для того, чтобы закрылись все открытые позиции по заданному условию.

Не так делаю?

Больше года не трогал mql... не могу сообразить.

Но в другом коде (иные задачи и иные паттерны) данный код закрытия работает исправно, но правда там используются уже сформированные свечи [1] и [2].

У вас условие: если цена ниже то закрыть все.
Почему в коде пишете сначала все, а потом условие?
Andrey Pereverzev
300
Andrey Pereverzev  
Artyom Trishkin:
У вас условие: если цена ниже то закрыть все.
Почему в коде пишете сначала все, а потом условие?
Нужно условие вынести за пределы цикла?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий