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

 
Andrey Pereverzev:
Нужно условие вынести за пределы цикла?
Если цена ниже, то закрыть.
А закрываем в цикле.
Верно же?
Верно. А вы огород городите ;)
 
Artyom Trishkin:
Если цена ниже, то закрыть.
А закрываем в цикле.
Верно же?
Верно. А вы огород городите ;)

Не пинайтесь если сильно туплю ))))

Так:

if

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

 for(int i=OrdersTotal()-1;i>=0;i--)
     {
     
        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)  ставлю Bid<Low[1]

тоже не работает

перегрелся я наверно

Помогите плииииз чайнику 

 

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

 
Vitalii Ananev:

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

Это не я решил, что он не работает, а он (код) решил ))

Потому что запускаю тестер стратегий, а там закрытие по данному коду не срабатывает.

Запустил сейчас Error Sending Order Buy ???? что это? У меня он вообще не запустился - весь советник. А в тестере все идет норм (покупает, продает)

 
Andrey Pereverzev:

Это не я решил, что он не работает, а он (код) решил ))

Потому что запускаю тестер стратегий, а там закрытие по данному коду не срабатывает.

Запустил сейчас Error Sending Order Buy ???? что это? У меня он вообще не запустился - весь советник. А в тестере все идет норм (покупает, продает)

Код сам ни чего не решает, он делает только то что вы запрограммировали :) 

Вот и ответ почему ваш кусочек кода на работает. У вас нет открытой позиции buy. А так как ее нет то и закрывать не чего. Смотрите тот участок кода где вы открываете позицию на покупку.

 
Vitalii Ananev:

Код сам ни чего не решает, он делает только то что вы запрограммировали :) 

Вот и ответ почему ваш кусочек кода на работает. У вас нет открытой позиции buy. А так как ее нет то и закрывать не чего. Смотрите тот участок кода где вы открываете позицию на покупку.

Но когда я запускаю тестер стратегий, открываются новые бай позиции и новые селл позиции, и ставятся как нужно SL. Все это в тестере работает.

А вот закрытие по нужным мне условиям не происходит .

 
Andrey Pereverzev:

Но когда я запускаю тестер стратегий, открываются новые бай позиции и новые селл позиции, и ставятся как нужно SL. Все это в тестере работает.

А вот закрытие по нужным мне условиям не происходит .

Попробуйте так.

 

if (MarketInfo(_Symbol,MODE_BID)<iLow(_Symbol,0,1))
{ 
 Print("Bid < Low");
 for(int i=OrdersTotal()-1;i>=0;i--)
 {
      
        if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        if (OrderType()==OP_BUY) 
        {
            Print("Пытаюсь закрыть бай");
             OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
        }

 }
}

 

И посмотрите журнал что там вам пишет советник. 

 
Vitalii Ananev:

Попробуйте так.

 

 

И посмотрите журнал что там вам пишет советник. 

А ничего он там не пишет (((

Пишет, что идут покупки (как и следует),

но о попытке закрыть Лонги ничего не пишет.

Ваше сообщение "Пытаюсь закрыть бай" не указывается нигде 

 
Всем спасибо за попытки помочь. Буду изучать где напортачил
 

Почему режим отладки включается на EUR/USD?

Можно изменить как-то на другой инструмент? 

Причина обращения: