Ajuda na codificação - página 712

 
mladen:
O método é exatamente o mesmo - basta mudar a janela alvo no ChartIndicatorAdd() para ser 0

Oi mladen, obrigado pela resposta... Eu estava estudando aqui...

ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA1Handle);

onde (1) janela superior

CharGetInteger(1=>janela superior)

onde (0) abaixo

ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL),RSI1Handle);
CharGetInteger(0=>below)

não é fácil de descobrir isto... lol

agora eu tento colocar cores diferentes no MA
 
baraozemo:

Oi mladen, obrigado pela resposta... Eu estava estudando aqui...

ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA1Handle);

onde (1) janela superior

CharGetInteger(1=>janela superior)

onde (0) abaixo

ChartIndicatorAdd(0,(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL),RSI1Handle);
CharGetInteger(0=>below)

não é fácil de descobrir isto... lol

agora eu tento colocar cores diferentes no MA

Assim

ChartIndicatorAdd(0,0,MA1Handle);
 
mladen:

Assim

ChartIndicatorAdd(0,0,MA1Handle);

a pergunta sobre colocar o indicador em cima ou em baixo, como disse, descobri...

GráficoIndicadorAdd(0,1,MA1Handle); (topo)

ChartIndicatorAdd(0,2,RS1Handle); (abaixo)

os problemas reais:

1) agora estou tentando aplicar cores diferentes para os MA's

2) e resolver um problema para liberar os MA dos gráficos (os RSI's e os WPR são limpos corretamente... )

por exemplo...

o RSI1,RSI2,RSI3 e WPR é limpo corretamente, mas o MA1,MA2,MA3 não é limpo...

int OnInit()

  {

  

  if (_Period==Signal_0_MA_Timeframe)  

   {

   MA1Handle = iMA(_Symbol,Signal_0_MA_Timeframe,Signal_0_MA_PeriodMA,Signal_0_MA_Shift,Signal_0_MA_Method,Signal_0_MA_Applied);

   if (MA1Handle!=INVALID_HANDLE)

      ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA1Handle);

      //return(INIT_SUCCEEDED);

   }

  

  //---adicionando MA2

  if (_Period==Signal_1_MA_Timeframe)

   {

   MA2Handle = iMA(_Symbol,Signal_1_MA_Timeframe,Signal_1_MA_PeriodMA,Signal_1_MA_Shift,Signal_1_MA_Method,Signal_1_MA_Applied);

   if (MA2Handle!=INVALID_HANDLE)

      ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA2Handle);

      //return(INIT_SUCCEEDED);      

   }   



===============================//===========================


//+------------------------------------------------------------------+

//| Deinitialization function of the expert                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   //limpa do gráfico os indicadores RSI e WPR

    for (int w = (int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); w>=0; w--)

   {

      string name = ChartIndicatorName(0,w,0);

      if (StringFind(name,"RSI(",0)==0)

            ChartIndicatorDelete(0,w,name);

      if (StringFind(name,"%R(",0)==0)

            ChartIndicatorDelete(0,w,name);

      if (StringFind(name,"Moving Average(",0)==0)

            ChartIndicatorDelete(0,w,name);

   }         

   

   ExtExpert.Deinit();

  }

 
baraozemo:

a pergunta sobre colocar o indicador em cima ou em baixo, como disse, descobri...

GráficoIndicadorAdd(0,1,MA1Handle); (topo)

ChartIndicatorAdd(0,2,RS1Handle); (abaixo)

os problemas reais:

1) agora estou tentando aplicar cores diferentes aos MA's

2) e resolver um problema para liberar os MA's dos gráficos (os RSI's e os WPR's são limpos corretamente. )

por exemplo...

os RSI1,RSI2,RSI3 e WPR são limpos corretamente, mas os MA1,MA2,MA3 não são limpos...

int OnInit()

  {

  

  if (_Period==Signal_0_MA_Timeframe)  

   {

   MA1Handle = iMA(_Symbol,Signal_0_MA_Timeframe,Signal_0_MA_PeriodMA,Signal_0_MA_Shift,Signal_0_MA_Method,Signal_0_MA_Applied);

   if (MA1Handle!=INVALID_HANDLE)

      ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA1Handle);

      //return(INIT_SUCCEEDED);

   }

  

  //---adicionando MA2

  if (_Period==Signal_1_MA_Timeframe)

   {

   MA2Handle = iMA(_Symbol,Signal_1_MA_Timeframe,Signal_1_MA_PeriodMA,Signal_1_MA_Shift,Signal_1_MA_Method,Signal_1_MA_Applied);

   if (MA2Handle!=INVALID_HANDLE)

      ChartIndicatorAdd(0,(int)ChartGetInteger(1,CHART_WINDOWS_TOTAL),MA2Handle);

      //return(INIT_SUCCEEDED);      

   }   



===============================//===========================


//+------------------------------------------------------------------+

//| Deinitialization function of the expert                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   //limpa do gráfico os indicadores RSI e WPR

    for (int w = (int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); w>=0; w--)

   {

      string name = ChartIndicatorName(0,w,0);

      if (StringFind(name,"RSI(",0)==0)

            ChartIndicatorDelete(0,w,name);

      if (StringFind(name,"%R(",0)==0)

            ChartIndicatorDelete(0,w,name);

      if (StringFind(name,"Moving Average(",0)==0)

            ChartIndicatorDelete(0,w,name);

   }         

   

   ExtExpert.Deinit();

  }

A média móvel senoidal tem apenas um nome "Média móvel" que você não pode identificar de forma única, portanto não pode ser apagada com segurança
 

Mladen, 1) favor ajudar a fazer dígitos redondos no iCustom a 0,1 ou 0,01 no máximo.

e explique, por favor, como inserir "valor2" (ou 3) em vez do indicador padrão significa?

iCustom(símboloNome,PeriodMinutes,"_1_IFT 2-1",0,i)

 

HELLO mr mladen

Eu executo este indicador{ssa_squeeze_of_averages_mtf_amp_alerts_2.mq4} mas ele não pode mostrar nada

você poderia consertá-lo

melhor consideração

e você poderia fazer MTF deste indicador:ma_count_amp_alerts.mq4

MTF semelhante a este histograma:

 
bilbao:

HELLO mr mladen

Eu executo este indicador{ssa_squeeze_of_averages_mtf_amp_alerts_2.mq4} mas ele não pode mostrar nada

você poderia consertá-lo

melhor consideração

e você poderia fazer MTF deste indicador:ma_count_amp_alerts.mq4

MTF semelhante a este histograma:

Você precisa de "SSA de preço" para o ssa_squeeze . .. para trabalhar
 
kostumer27:

Mladen, 1) favor ajudar a fazer dígitos redondos no iCustom a 0,1 ou 0,01 no máximo.

e explique, por favor, como inserir "valor2" (ou 3) em vez do indicador padrão significa?

iCustom(símboloNome,PeriodMinutes,"_1_IFT 2-1",0,i)

Depende da lista de parâmetros do indicador, mas é preciso passar os parâmetros entre o nome do indicador e o número do buffer

Algo parecido com isto :

iCustom(symbolName,PeriodMinutes,"_1_IFT-1",yourParameter1,yourParameter2,yourParameter3,yourParameter9999,0,i)

A outra parte, eu não entendo

Se você quer dizer quente para limitar os valores de retorno, você não pode fazer isso. Você só pode limitar o valor atribuído a algo da chamada iCustom(), como isto

double result = MathMax(MathMin(iCustom(symbolName,PeriodMinutes,"_1_IFT 2-1",0,i),0.1),0.01);
 
mladen:
Você precisa de "SSA de preço" para o ssa_squeeze . .. para trabalhar

obrigado.

agora funciona

 

mr mladen :

poderia fazer do MTF

semelhante este histograma de imagem

melhor consideração

Arquivos anexados:
Razão: