[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 603

 
41ckm39fi:
Eu removi tudo relacionado ao PrevSignal, mas a mensagem não aparece.

Não vi o elefante na sala...

fazer uma inicialização de buffer, já que é um indicador.

#janela_do_cartão_indicador de propriedade

int init(){

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

remover o ArraySetAsSeries call... e em

DeMarker_buffer0[i]=iDeMarker(NULL,0,14,1);

colocar o último parâmetro em vez de 1 i

 
keekkenen:

Não vi o elefante na sala...

fazer uma inicialização de buffer, já que é um indicador.

#janela_do_cartão_indicador de propriedade

int init(){

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

}

remover o ArraySetAsSeries call... e em

colocar o último parâmetro em vez de 1 i


Aqui está o que você recebe:

#property  indicator_level1 0.3
#property  indicator_level2 0.7
#property indicator_chart_window
//---- 
extern int        period_MA            = 5,
                  period_DeMarker      = 14;
//---- 
double            DeMarker_buffer0[],
                  MA_buffer1[],
                  Signal_Buffer2[];       
#define SIGNAL_BAR 1
 //+------------------------------------------------------------------+
int init()
{

IndicatorBuffers(2);

SetIndexBuffer(0,DeMarker_buffer0);

SetIndexBuffer(1,MA_buffer1);

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_NONE);

return(0);
  }
  //+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|   
//+------------------------------------------------------------------+
int start()
  {
  int    i,limit=ArraySize(DeMarker_buffer0);
        
  int    counted_bars=IndicatorCounted();
//----
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);
//----  
                if(MA_buffer1[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA_buffer1[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
                if(0.7 - MA_buffer1[SIGNAL_BAR] > 0 && MA_buffer1[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                        
   return(0);
  }

Mas estou confuso com esta linha

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,limit,5,0,MODE_LWMA,i);

Outros indicadores compostos explicitam Barras em vez de limite.

 
41ckm39fi:


Isto é o que saiu:

Mas estou confuso com esta linha

Outros indicadores compostos explicitam Barras em vez de limite.




Estou confuso também... esta função iMAOnArray(), não tenho certeza se ela pode calcular corretamente a média se o segundo parâmetro for diferente de 0, ou seja, cálculo sobre toda a matriz DeMarker_buffer0, é melhor colocar 0...
 
keekkenen:
Estou confuso também... esta função iMAOnArray(), não tenho certeza se ela pode calcular corretamente a média se o segundo parâmetro for diferente de 0, ou seja, cálculo sobre toda a matriz DeMarker_buffer0, é melhor colocar 0...
Eu coloquei Barras em vez de limite e o programa começou a dar mensagens!!! Parece funcionar da maneira que eu queria. Somente as mensagens vão muitas vezes até que a barra de sinais feche.
 
Boa tarde. Descarregou o EA, salvou-o, compilou-o, recarregou o terminal. Você pode me dizer por que o EA adicionado ao MT4 não está anexado ao quadro. Eu fiz algo errado?
 
41ckm39fi:

Eu prescrevi Barras ao invés de ...

Somente as mensagens vão muitas vezes até que a barra de sinais feche.

0 ainda está correto...

e trazer de volta o controle do tempo...

static int  PrevTime = Time[0];
//---- 
if(PrevTime >= Time[0] ) return(0);
//---- 
PrevTime = Time[0];

// а здесь проверяйте условия на алерт
 

Esqueci de mencionar que a linha

int    i,limit=ArraySize(DeMarker_buffer0);

Eu substituí por

int    i,limit;

e substituiu o limite por Bars na linha

MA_buffer1[i]=iMAOnArray(DeMarker_buffer0,Bars,5,0,MODE_LWMA,i);

Agora vou tentar fazer como você diz retornar PrevTime e substituir o segundo parâmetro Barras por 0.

 

Por exemplo, tenho um Consultor Especialista correndo no mql4.

Quando eu o percorro através de variáveis externas, eu defino alguns valores.

Pergunta: Posso mudar a qualquer momento?

algumas variáveis do Expert Advisor durante sua operação (por exemplo, do teclado) e, nesse caso, não causaria um reinício do Expert Advisor?

 
Jazzz:

Por exemplo, tenho um Consultor Especialista correndo no mql4.

Quando eu o percorro através de variáveis externas, eu defino alguns valores.

Pergunta: Posso mudar a qualquer momento?

algumas variáveis do Expert Advisor durante sua operação (por exemplo, do teclado) e, nesse caso, não causaria um reinício do Expert Advisor?


Você pode se usar variáveis de nível global. Para alterar seus valores do teclado sem desligar o EA, pressione F3 no terminal.
 
Obrigado!
Razão: