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

 
Andrey Pereverzev:

Период в 2,5 года не может быть случайным ;)

Идею понял, что нужно код доработать. 

С наступившей продуктивной неделей! :)

И вопрос на зацепку:

Вот как такое возможно: пишу элементарщину -> Лонг если Bid больше чем Close[1] - все работает.

Пишу: Лонг если Bid больше чем High[2] - и не работает 

Пишу: Лонг если Bid больше чем High[1] - и не работает. Точнее срабатывает, но не всегда, а именно тогда, когда сигнал ложный. Но пропускает полно прибыльных сигналов.

 

 

Это как? 

 

Подскажите пожалуйста,

каким кодом можно описать диапазон цен? 

Поясню: чтобы не пришлось писать Close[1]=Close[2]+0.0001 , Close[1]=Close[2]+0.0002, Close[1]=Close[2]+0.0003 и т.д. (так очень длинный код получится)

А написать диапазон Close[2] + от ... до .... 

 
Andrey Pereverzev:

Подскажите пожалуйста,

каким кодом можно описать диапазон цен? 

Поясню: чтобы не пришлось писать Close[1]=Close[2]+0.0001 , Close[1]=Close[2]+0.0002, Close[1]=Close[2]+0.0003 и т.д. (так очень длинный код получится)

А написать диапазон Close[2] + от ... до .... 

Не совсем понятно что вы хотите. Массив цен закрытия только для чтения ему нельзя присваивать значения Close[1] = Close[2] ..... выдаст ошибку. 

 
Vitalii Ananev:

Не совсем понятно что вы хотите. Массив цен закрытия только для чтения ему нельзя присваивать значения Close[1] = Close[2] ..... выдаст ошибку. 

Ну вот например, меня устраивает, если цена 1,001 = 1,002; а так же меня устраивает, что цена 1,001 = 1,003 и так до 1,010 например.

Как сказать кодом, что эти цифры должны быть равны? ))))

Надеюсь в этот раз получилось правильно выразиться. )))))

 

Или так выражусь: Если значение Close[2] попадает в диапазон от Close[1]-5 до Close[1]+5, то применяется следующее условие. 

 
Andrey Pereverzev:

Ну вот например, меня устраивает, если цена 1,001 = 1,002; а так же меня устраивает, что цена 1,001 = 1,003 и так до 1,010 например.

Как сказать кодом, что эти цифры должны быть равны? ))))

Надеюсь в этот раз получилось правильно выразиться. )))))

 

Или так выражусь: Если значение Close[2] попадает в диапазон от Close[1]-5 до Close[1]+5, то применяется следующее условие. 

Можно написать примерно так.

int Delta = 5;//диапазон +\- в пунктах

bool PriceInRange = false;// лог. переменная  

PriceInRange = (Close[2]<=Close[1]+Delta * Point() ) && (Close[2]>=Close[1]-Delta*Point() ); 

if (PriceInRange)

{

 .......

// ваш код 

 
Vitalii Ananev:

Можно написать примерно так.

int Delta = 5;//диапазон +\- в пунктах

bool PriceInRange = false;// лог. переменная  

PriceInRange = (Close[2]<=Close[1]+Delta * Point() ) && (Close[2]>=Close[1]-Delta*Point() ); 

if (PriceInRange)

{

 .......

// ваш код 

Спасибо за ответ. Пока еще не проверял. Времени нет
 

Здравствуйте, помогите советом. пишу сам советник. наверно это все та делают, походу его написания тестирую и смотрю что работает, а что нет. проблема вот в чем. дописал код протестил, все работает как надо, спустя какое-то время, снова тестирую он начинает глючить(открывает и сразу закрывает), почему так? при этом в терминале на демо счете, все работает

void ConditionsB()

{

  if(zspread<=spread)                                                      //проверяю значение спреда  

  {

    if(zth>=0.000150 && TotalTic()<=50 && imacdvB<=imacdv && imacdsB<=imacds)  //условия для открытия ордера

    {

      openB =true;                                                           //сигнал открыть ордер на покупку

      closeS=true;                                                                 //сигнал закрыть ордер на продажу

    }

    else 

    {

      openB =false;                                                         //нет сигнала

      closeS=false;                                                      //нет сигнала

    }

  }

}

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Причина обращения: