Especialistas: Flat Channel

 

Flat Channel:

Breve Descrição

Flat Channel

Autor: Vladimir Karputov

 

Os autores são bons! Bom trabalho, atingi o objetivo - um Expert Advisor plano e lucrativo. Agora eu o testei em nosso mercado, em particular no Si-12.18, e ele dá um bom lucro! Há muito tempo que estou procurando esse tipo de Consultor Especialista.

Há alguns comentários: 1. Leva muito tempo para desenhar, toda a lógica está no OnTick, não é um tick, você pode usar o CBarDetector com o período M1 ou M5. Eu o criei com M5 - é muito mais divertido de trabalhar. 2. Eu gostaria de ter uma largura de canal mínima e máxima na dinâmica, dependendo da volatilidade atual do mercado.

 
Rashit Ibatullin:

Os autores são bons! Bom trabalho, atingi o objetivo - um Expert Advisor plano e lucrativo. Agora eu o testei em nosso mercado, em particular no Si-12.18, e ele dá um bom lucro! Há muito tempo que estou procurando um Expert Advisor desse tipo.

Há alguns comentários: 1. Leva muito tempo para desenhar, toda a lógica está no OnTick, não é um tick, você pode usar o CBarDetector com o período M1 ou M5. Eu o criei com M5 - é muito mais divertido de trabalhar. 2. Eu gostaria de ter uma largura de canal mínima e máxima na dinâmica, dependendo da volatilidade atual do mercado.

Para testar rapidamente no modo visual, você precisa desativar a saída de comentários no código:

/*   Comment("\nСоветник "+__FILE__+" весь в работе:  ",TimeControl(),
           "\nДень:  ",Dayof(STimeCurrent),
           "\nТорговый счёт:  ",m_account.Login(),
           "\nCompany:  ",m_account.Company(),
           "\nEquity:  ",m_account.Equity(),
           "\nВремя по GMT:  "+TimeToString(TimeGMT(),TIME_DATE|TIME_SECONDS),
           "\nSpread:  ",m_symbol.Spread(),
           "\nStopLevel:  ",m_symbol.StopsLevel(),
           "\nПлечо:  ",m_account.Leverage()
           );*/
//--- trabalhamos somente no momento do nascimento da nova barra
 

Obrigado a todos que implementaram esse EA!

Estou desmontando esse EA linha por linha para adaptá-lo ao moex (afinal, ele foi projetado para forex), então tenho uma pergunta sobre o código.

//--- FreezeLevel -> para ordem pendente e modificação

   double freeze_level=m_symbol.FreezeLevel()*m_symbol.Point();
   if(freeze_level==0.0)
      freeze_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   freeze_level*=1.1;
   
   
   
   
//--- StopsLevel -> para TakeProfit e StopLoss
   double stop_level=m_symbol.StopsLevel()*m_symbol.Point();
   if(stop_level==0.0)
      stop_level=(m_symbol.Ask()-m_symbol.Bid())*3.0;
   stop_level*=1.1;
   

Por que há multiplicação, exatamente por 3 e depois por 1,1?

 
refounder83:

Obrigado a todos que implementaram esse EA!

Estou desmontando esse EA linha por linha para adaptá-lo ao moex (afinal, ele foi projetado para forex), portanto, tenho uma pergunta sobre o código.

Por que há multiplicação, exatamente por 3 e depois por 1,1?

Conheço o mercado de câmbio, conheço a bolsa de valores. Mas não sei o que diabos é moex.

 
Você mesmo criou um tópico ontem chamado ---- Expert Advisor for moex. Está recebendo o preço?
 
Eu só quero entender a lógica do código e adaptá-lo à troca.
 
refounder83:
Só quero entender a lógica do código e adaptá-lo à bolsa de valores

1) Observação: se eu responder a alguém, usarei o botão "Reply".

2) Para escrever o código com precisão, primeiro descubra tudo sobre os níveis SYMBOL_TRADE_STOPS_LEVEL e SYMBOL_TRADE_FREEZE_LEVEL com o suporte técnico da corretora: esses níveis são zero em todos os símbolos? O que significa "zero" - é um nível flutuante ou não há realmente nenhum nível.

 
Vladimir Karputov:

1- Observação: se eu estiver respondendo a alguém, uso o botão "Responder".

2 - Para escrever o código com precisão, primeiro descubra tudo sobre os níveis SYMBOL_TRADE_STOPS_LEVEL e SYMBOL_TRADE_FREEZE_LEVEL com o suporte técnico da corretora: esses níveis são zero em todos os símbolos? O que significa "zero" - é um nível flutuante ou não há realmente nenhum nível.

Escrevi para o suporte técnico da corretora dizendo que esses níveis não são transmitidos.

 
refounder83:

Escrevi para o suporte técnico da corretora informando que esses níveis não são transmitidos.

Então, basta ignorá-los (comentar temporariamente as linhas em que esses níveis são aprendidos).

 
Vladimir Karputov:

Então, simplesmente ignore-os (comente temporariamente as linhas em que esses níveis são aprendidos).

Você pode me dizer se o controle de tempo não funciona nesse EA? Há linhas no procedimento TimeControl.

  if(!InpTimeControl)
      return(true);

Por exemplo, se o valor de InpTimeControl for falso, ele ainda retornará verdadeiro para o procedimento TimeControl?

bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
      
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if(InpStartHour<InpEndHour) // intervalo de tempo intradiário
     {

      if(STimeCurrent.hour>=InpStartHour && STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else if(InpStartHour>InpEndHour) // intervalo de tempo com a transição em um dia
     {

      if(STimeCurrent.hour>=InpStartHour || STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }