Como faço para indicador para apagar setas?

 

Boa noite


Tenho um bom indicador para timeframes grandes, problema é que se o mercado vai contra a seta dele, ele apaga a seta, ela nao repinta, digo, fica pulando de candle a candle, ela simplesmente apaga e aparece em outros candles a frente, como faço para que ela nao apague, permaneça a seta fixa mesmo errando a entrada?

abaixo, parte do codigo:

int start()

  {

   int counted_bars = IndicatorCounted();

   if(counted_bars < 0)  return(-4);

   if(counted_bars > 0)   counted_bars--;

   int limit = Bars - counted_bars;

   if(counted_bars==0) limit-=5+5;

  //---- îñíîâíîé öèêë

     for(int i = 1; i < limit; i++)

       { 

         double

       HP1=High[i+1],HP2=High[i],HP3=High[i-1],HPi=High[i-1],

       LP1=Low[i+1],LP2=Low[i],LP3=Low[i-1], LPi=Low[i-1],

       

         res=iFractals(NULL, 0, MODE_UPPER, i);

         if(res==0 && INDICADOR)//ïîâûøåííàÿ ÷óâñòâèòåëüíîñòü

            {

               if(HP1<HP2&&HP2>HP3 && (LP2>=LP3 || HP2>HPi)) res=HP2;

            }

         if(Shifth && res!=0)// ñäâèãàåò ôðàêòàë ôëåòà

            while(iHigh(NULL,0,i)==iHigh(NULL,0,i+1)) i++;

         ExtMapBuffer1[i] = res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA PARA "+DoubleToStr(res,Digits));

         

         res= iFractals(NULL, 0, MODE_LOWER, i);

         if(res==0 && INDICADOR)

            {

               if(LP1>LP2&&LP2<LP3&& (HP2<=HP3 || LP2<LPi))  res=LP2;

            }

         if(Shifth && res!=0)

            while(iLow(NULL,0,i)==iLow(NULL,0,i+1)) i++;

         ExtMapBuffer2[i] =res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA"+DoubleToStr(res,Digits));

 
JOHNWAYNER:

Boa noite


Tenho um bom indicador para timeframes grandes, problema é que se o mercado vai contra a seta dele, ele apaga a seta, ela nao repinta, digo, fica pulando de candle a candle, ela simplesmente apaga e aparece em outros candles a frente, como faço para que ela nao apague, permaneça a seta fixa mesmo errando a entrada?

abaixo, parte do codigo:

int start()

  {

   int counted_bars = IndicatorCounted();

   if(counted_bars < 0)  return(-4);

   if(counted_bars > 0)   counted_bars--;

   int limit = Bars - counted_bars;

   if(counted_bars==0) limit-=5+5;

  //---- îñíîâíîé öèêë

     for(int i = 1; i < limit; i++)

       { 

         double

       HP1=High[i+1],HP2=High[i],HP3=High[i-1],HPi=High[i-1],

       LP1=Low[i+1],LP2=Low[i],LP3=Low[i-1], LPi=Low[i-1],

       

         res=iFractals(NULL, 0, MODE_UPPER, i);

         if(res==0 && INDICADOR)//ïîâûøåííàÿ ÷óâñòâèòåëüíîñòü

            {

               if(HP1<HP2&&HP2>HP3 && (LP2>=LP3 || HP2>HPi)) res=HP2;

            }

         if(Shifth && res!=0)// ñäâèãàåò ôðàêòàë ôëåòà

            while(iHigh(NULL,0,i)==iHigh(NULL,0,i+1)) i++;

         ExtMapBuffer1[i] = res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA PARA "+DoubleToStr(res,Digits));

         

         res= iFractals(NULL, 0, MODE_LOWER, i);

         if(res==0 && INDICADOR)

            {

               if(LP1>LP2&&LP2<LP3&& (HP2<=HP3 || LP2<LPi))  res=LP2;

            }

         if(Shifth && res!=0)

            while(iLow(NULL,0,i)==iLow(NULL,0,i+1)) i++;

         ExtMapBuffer2[i] =res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA"+DoubleToStr(res,Digits));

Mt4?
 
Ricardo Branco #:
Mt4?
Sim
 
JOHNWAYNER:

Boa noite


Tenho um bom indicador para timeframes grandes, problema é que se o mercado vai contra a seta dele, ele apaga a seta, ela nao repinta, digo, fica pulando de candle a candle, ela simplesmente apaga e aparece em outros candles a frente, como faço para que ela nao apague, permaneça a seta fixa mesmo errando a entrada?

abaixo, parte do codigo:

int start()

  {

   int counted_bars = IndicatorCounted();

   if(counted_bars < 0)  return(-4);

   if(counted_bars > 0)   counted_bars--;

   int limit = Bars - counted_bars;

   if(counted_bars==0) limit-=5+5;

  //---- îñíîâíîé öèêë

     for(int i = 1; i < limit; i++)

       { 

         double

       HP1=High[i+1],HP2=High[i],HP3=High[i-1],HPi=High[i-1],

       LP1=Low[i+1],LP2=Low[i],LP3=Low[i-1], LPi=Low[i-1],

       

         res=iFractals(NULL, 0, MODE_UPPER, i);

         if(res==0 && INDICADOR)//ïîâûøåííàÿ ÷óâñòâèòåëüíîñòü

            {

               if(HP1<HP2&&HP2>HP3 && (LP2>=LP3 || HP2>HPi)) res=HP2;

            }

         if(Shifth && res!=0)// ñäâèãàåò ôðàêòàë ôëåòà

            while(iHigh(NULL,0,i)==iHigh(NULL,0,i+1)) i++;

         ExtMapBuffer1[i] = res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA PARA "+DoubleToStr(res,Digits));

         

         res= iFractals(NULL, 0, MODE_LOWER, i);

         if(res==0 && INDICADOR)

            {

               if(LP1>LP2&&LP2<LP3&& (HP2<=HP3 || LP2<LPi))  res=LP2;

            }

         if(Shifth && res!=0)

            while(iLow(NULL,0,i)==iLow(NULL,0,i+1)) i++;

         ExtMapBuffer2[i] =res;

         if(res!=0 && i==1 && NewFAlert) Alert("NOVO ALERTA"+DoubleToStr(res,Digits));

Voce que fez o código? Pergunto porque tem variaveis faltando e o conceito de re-pintar parece que voce não entendeu.

Parece que seu problema é que quando não é um fractal e aquela condição dentro do if marcado como INDICADOR (em ambos os casos) tambem não ocorre, a variavel re-pinta tirando a seta. Voce precisa de uma variavel auxiliar se quiser manter a seta para nao perder esse valor em ambos os casos.

Boa sorte!

Razão: