Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1361

 
azolotta:

Obrigado, isso realmente resolveu o problema!!!

Se você não se importa, pode me dizer que tipo de construção deve ser acrescentada para que não exiba dois altos/baixos seguidos, mas uma variabilidade (alto-baixo-alto)? Entendo que preciso de uma verificação, como "se o elemento da matriz anterior fosse alto, não inclua o segundo alto consecutivo na matriz, e espere por baixo", mas como devo fazer isso?

Já lhe expliquei isso.

 
DanilaMactep:

Boa tarde a todos. Eu tenho o cheque, mas esqueci de testá-lo. Ainda bem que me lembrei disso hoje... Aqui está esta verificação no nível de parada mod

Quando testada, esta verificação dá os erros mostrados na captura de tela abaixo

E o que é interessante como fui avisado adicionei a esta dominação de cheque por 1,5 como segue


Esta adição não resolve o problema apareceu teste dá erros como na captura de tela abaixo.

Se esta verificação no nível de mod stop for comentada, não há erros. Qual é o erro na verificação, por favor avise? Sem ele, você não pode começar o graal no mundo real - será banido imediatamenteL O_o

Eu acho que o erro não está no teste, mas onde você o prescreveu

e também aqui você pode remover "*1,5".

if(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5)
if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5)
 
DanilaMactep:

Boa tarde a todos. Eu tenho o cheque, mas esqueci de testá-lo. Ainda bem que me lembrei disso hoje... Aqui está esta verificação no nível de parada mod

Quando testada, esta verificação dá os erros mostrados na captura de tela abaixo

E o que é interessante como fui avisado adicionei a esta dominação de cheque por 1,5 como segue


Esta adição não resolve o problema apareceu teste dá erros como na captura de tela abaixo.

Se esta verificação no nível de mod stop for comentada, não há erros. Qual é o erro na verificação, por favor avise? Sem ele, você não pode começar o graal no mundo real - será banido imediatamenteL O_o

Verifique se ele retorna um nível de parada, muitas vezes é 0.

   int    Stoplevel = (int)MarketInfo(Symbol(), MODE_STOPLEVEL);
   int    Spread = (int)MarketInfo(Symbol(), MODE_SPREAD);

   if (Stoplevel == 0) Stoplevel = 2 * Spread;

   

Assim, assim.

 
Alekseu Fedotov:

Verifique o que o nível de parada retorna , muitas vezes é 0.

Assim.

Ele não precisa disso, é "se for menos do que um rombo".

 
DanilaMactep:

Boa tarde a todos.

Erro grosseiro... não o vi de imediato.

if(sl<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  sl= MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5;//СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

if(tp<MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
 {
  tp= MarketInfo(Symbol(),MODE_STOPLEVEL)*1,5;// ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
 }

Deve ser o DOTS.

 
azolotta:
Não exibir dois alto/baixo em uma fileira, mas ser variável (alto-baixo-alto)

Você pode fazer isso de uma maneira simples. Declarar uma variável global e mudá-la dependendo dos eventos.

int direction=0;

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {


   for(n=0; n<=limit; n++)
     {
      if(direction>=0 && ((Close[n+1]>Open[n+1] && Open[n+2]>=Close[n+2]) || (Close[n+1]>Open[n+1] && Open[n+3]>Close[n+3])))
        {
         val_index=iLowest(NULL,0,MODE_LOW,3,n+1);
         myAZBuffer[n]=Low[val_index];
         ExtLowBuffer[n]=Low[val_index];
         direction=-1;
        }
      else
         if(direction<=0 && ((Open[n+1]>Close[n+1] && Close[n+2]>=Open[n+2]) || (Close[n+1]<Open[n+1] && Close[n+3]>Open[n+3])))
          {
            val_index=iHighest(NULL,0,MODE_HIGH,3,n+1);
            myAZBuffer[n]=High[val_index];
            ExtHighBuffer[n]=High[val_index];
            direction=1;
           }
      }
.......

Nos indicadores, utilize a função OnCalculate e todas as suas variáveis.

E Start já é antiquado:)

 
Aleksei Stepanenko:

Você pode fazer isso de uma maneira simples. Declarar uma variável global e mudá-la dependendo dos eventos.

Nos indicadores, utilize a função OnCalculate e todas as suas variáveis.

E Start está fora de moda:)

Obrigado! É uma maneira legal!)

tenho sobreOnCalculate, eu estarei nele))

 
Aleksei Stepanenko:

Você pode fazer isso de uma maneira simples. Declarar uma variável global e mudá-la dependendo dos eventos.

Nos indicadores, utilize a função OnCalculate e todas as suas variáveis.

E Start já é antiquado:)

não funcionam, o novo alto/baixo não os levará em conta
 

Boa tarde. Quando chamo o indicador no meu Expert Advisor, há um erro indicado na caixa. Por que ele ocorre? E nem sempre. Funciona bem em

terminal, ele funciona bem.


 
Sergey Fionin:

Boa tarde. Quando chamo o indicador no meu Expert Advisor, há um erro indicado na caixa. Por que ele ocorre? E nem sempre. Funciona bem em

terminal, ele funciona bem.


Isto é uma violação da lei, uma proibição de escrita do sistema.
Razão: