Bars ()

 

Здравствуйте!

Кому можно задать вопрос из 2 частей

1.как остановить торговлю по  индикатору.

2. как отменить остановку по бару. 

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

 if (m_ema_current>m_ema_previous && m_ema_previous<m_ema_previous2 && m_macd_current<m_macd_previous && m_signal_current>m_signal_previous ||

    m_ema_current<m_ema_previous && m_ema_previous>m_ema_previous2 && m_macd_current>m_macd_previous && m_signal_current<m_signal_previous)

         { stopTrade=true; Print("Дальнейшая торговля временно запрещена"); }  stopTrade=true;  

Хочу запросить к этой остановке бар и сохранить параметры бара. Это основной вопрос.

Во второй части вызываю бар и если изменился то торговля разрешается

int bars=Bars(_Symbol,_Period);

       int Pbars;

    if (Pbars !=bars) //return(0);  stopTrade=false;

 
gergi:

Хочу запросить к этой остановке бар и сохранить параметры бара. Это основной вопрос.

Во второй части вызываю бар и если изменился то торговля разрешается

int bars=Bars(_Symbol,_Period);

       int Pbars;

    if (Pbars !=bars) //return(0);  stopTrade=false;

Для вставки кода на форуме используйте кнопку "SRC", будет луше читаться:  

int bars=Bars(_Symbol,_Period);

       int Pbars;

    if (Pbars !=bars) //return(0);  stopTrade=false;

Что такое "параметры бара"? В коде вижу количество баров

Переменная Pbars должна быть глобальной (объявлена вне функции). После появления нового бара нужно присваивать Pbars значение bars, в вашем коде этого не видно.  Не понял зачем там return(0); 

 

Можно определять новый бар через время открытия: 

datetime Tm[1];

void OnTick()
   {
   datetime NTm[1];
   
   CopyTime(_Symbol,_Period,0,1,NTm);   
   if(Tm[0]!=NTm[0])   
      {

      
      Tm[0]=NTm[0];
      }
   }
 
nasdaq:

Для вставки кода на форуме используйте кнопку "SRC", будет луше читаться:  

Что такое "параметры бара"? В коде вижу количество баров

Переменная Pbars должна быть глобальной (объявлена вне функции). После появления нового бара нужно присваивать Pbars значение bars, в вашем коде этого не видно.  Не понял зачем там return(0); 

 

Можно определять новый бар через время открытия: 

Функция позаимствована из мт4 но там она работает иначе, если текущий бар и одна сделка совершена встает запрет до следующего дневного бара.

 static int Pbars=0;

 if (Pbars == Bars) return(0);  

  Pbars = Bars;

 

Так а в чём проблема?

В функции OnTick(), пишите return; 

 
nasdaq:

Так а в чём проблема?

В функции OnTick(), пишите return; 

День добрый в функции OnTick() return вызывает ошибку. Если я правильно понял то функция должна выглядеть следующим образом

void OnTick(void)
  {
  
  {
   datetime Tm[1];
   datetime NTm[1];
   CopyTime(_Symbol,_Period,0,1,NTm);   
   CopyTime(_Symbol,_Period,0,1,Tm);
   if(Tm[0]!=NTm[0])   
      {

      
      Tm[0]=NTm[0];
      }
   }

 stopTrade создан как класс и в глобальной переменной не работает. Если индикаторы друг другу противоречат то stopTrade(true)  и отменить его нужно как класс. взгляните на код

Файлы:
SMA.mq5  21 kb
 
gergi:

День добрый в функции OnTick() return вызывает ошибку. Если я правильно понял то функция должна выглядеть следующим образом

 stopTrade создан как класс и в глобальной переменной не работает. Если индикаторы друг другу противоречат то stopTrade(true)  и отменить его нужно как класс. взгляните на код

Посмотрел ваш код, компелируется без ошибок. 

 
nasdaq:

Посмотрел ваш код, компелируется без ошибок. 

Я пытаюсь привязать к функции стоп трейд значение бара или даты