Ajuda na codificação - página 201

 
Slow Moe:
Olá, quero perguntar se é possível reescrever este Indicador, para que ele mostre apenas as setas, e elas devem aparecer nos candelabros ? Alguém poderia me ajudar com isto, ou codificá-lo para mim, por favor?

cumprimentos

Lento

fxmtn-test.mq4

Lento

Tente assim

Arquivos anexados:
 

Muito obrigado mladen trabalhando maravilhosamente !!

Estou tentando obter "flecha interna externaDistância = XXX;" de alguma forma ativada também.

Ela aparece agora no menu de seleção, mas não mudou a Distância. Onde colocar a *arrowDistance ?

Ou estou totalmente errado ?

Eu o coloquei em vários lugares, mas só me deu mais pontos, não mais distância....

Noob tentando entender o código, e esperando por alguma luz

 

Agora foi assim:

if (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);

if (AbaixoBuff < -24,0) LongBuff = Low- (Ponto*arrowDistance /2);

Esta é uma maneira correta ?? Só porque funciona, pode ser errado

 
Slow Moe:
Agora foi assim:

if (AboveBuff > 24.0) ShortBuff = High+ (Point*arrowDistance /2);

if (AbaixoBuff < -24,0) LongBuff = Low- (Ponto*arrowDistance /2);

Esta é uma maneira correta?? Só porque funciona, pode ser errado

Isso deve funcionar, há outra maneira de fazer isso assim

LongBuffe = Low-arrowDistance*iATR(NULL,0,20,i) e ShortBuff = High+arrowDistance**iATR(NULL,0,20,i)

 

Devagar,

É melhor usar o modo iATR(). Mude os prazos e você verá o que quero dizer. Visualmente, você terá um problema em quadros de tempo mais altos quando a distância de uma seta de cima para baixo for fixada (eles parecerão confusos em algum quadro de tempo). Usar iATR() em vez de usar a distância fixa resolve esse problema.

 

Obrigado mrtools,mladen trabalhando realmente muito melhor.

Um último indicador que eu não consigo controlar....

Tentando mudá-lo aqui : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Pensei que este era o lugar certo, já que mudar os 50 muda a distância. Mas nada que eu testei funcionou com o arrowDistance.

 
Slow Moe:
Obrigado mrtools,mladen trabalhando realmente muito melhor.

Um último indicador que eu não posso controlar ....

Tentando mudá-lo aqui : SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Pensei que este era o lugar certo, já que mudar os 50 muda a distância. Mas nada do que eu testei funcionou com o arrowDistance.

Lento

Quando você está processando atr por flechas a distância provavelmente a melhor maneira de modificar essa distância é uma espécie de multiplicador. Por exemplo :

arrowPrice = High+iATR(NULL,0,50,0)*arrowDistance;

Onde arrowDistance é definido como duplo e pode ser fracionário (assim você poderia usar valores como 0,5, assim como valores como 10,5 também). A mudança do período atr não mudará a distância significativamente (apenas levará em conta uma média mais longa de faixas).

 

tentar obter o valor de outro indicador

olá com,

estou tentando escrever meu primeiro indicador e quero usar também um valor de um indicador existente que obtive deste site. acabei de copiar o código do indi aqui.

o que tenho que codificar em meu novo indicador para saber se a barra é azul/vermelho ou 1/0 não me importo, mas já tentei muito e o tempo todo só conseguir zero

tentei até obter o código inteiro no meu indicador que não funcionava.

qualquer ajuda seria apreciada

thx bob

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}
 
BobMorane1000:
olá com,

estou tentando escrever meu primeiro indicador e quero usar também um valor de um indicador existente que obtive deste site. acabei de copiar o código do indi aqui.

o que tenho que codificar em meu novo indicador para saber se a barra é azul/vermelho ou 1/0 não me importo, mas já tentei muito e o tempo todo só conseguir zero

tentei até obter o código inteiro no meu indicador que não funcionava.

qualquer ajuda seria apreciada

thx bob

#property copyright "fxfariz"

#property link "fxfariz@gmail.com"

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Blue //Red //Aqua

#property indicator_color2 Red

extern int SSP=7;

extern double Kmax=50.6; //24 21.6 21.6

extern int CountBars=300;

extern int myPeriod = 0 ;

//---- buffers

double ExtMapBuffer1[];

double ExtMapBuffer2[];

double ExtHBuffer1[];

double ExtHBuffer2[];

int xPeriod ;

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

string TimeFrameToString(int tf)

{

string tfs;

switch(tf) {

case PERIOD_M1: tfs="M1" ; break;

case PERIOD_M5: tfs="M5" ; break;

case PERIOD_M15: tfs="M15" ; break;

case PERIOD_M30: tfs="M30" ; break;

case PERIOD_H1: tfs="H1" ; break;

case PERIOD_H4: tfs="H4" ; break;

case PERIOD_D1: tfs="D1" ; break;

case PERIOD_W1: tfs="W1" ; break;

case PERIOD_MN1: tfs="MN1";

}

return(tfs);

}

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicators

IndicatorBuffers(4);

SetIndexStyle(0,DRAW_HISTOGRAM,0,4); //Red

SetIndexBuffer(0,ExtHBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM,0,4); //Lime

SetIndexBuffer(1,ExtHBuffer2);

SetIndexBuffer(2,ExtMapBuffer1);

SetIndexBuffer(3,ExtMapBuffer2);

if(myPeriod==0){xPeriod=Period();} {xPeriod=myPeriod;}

string tPeriod = TimeFrameToString(xPeriod) ;

IndicatorShortName(tPeriod + " Trade What You see ("+SSP+")");

//----

return(0);

}

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

//| Custor indicator deinitialization function |

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

int deinit()

{

return(0);

}

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

//| Custom indicator iteration function |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

SetIndexDrawBegin(0,Bars-CountBars+SSP);

SetIndexDrawBegin(1,Bars-CountBars+SSP);

int i, counted_bars=IndicatorCounted();

double SsMax, SsMin, smin, smax;

if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)

{

for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;

for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;

}

for(i=CountBars-SSP;i>=0;i--) {

SsMax = High;

SsMin = Low[Lowest(NULL,xPeriod,MODE_LOW,SSP,i-SSP+1)];

smax = SsMax-(SsMax-SsMin)*Kmax/100;

ExtMapBuffer1=smax;

ExtMapBuffer2=smax;

}

for(int b=CountBars-SSP;b>=0;b--)

{

if(ExtMapBuffer1>ExtMapBuffer2)

{

ExtHBuffer1=1;

ExtHBuffer2=0;

}

else

{

ExtHBuffer1=0;

ExtHBuffer2=1;

}

}

return(0);

}

BobMorane1000

Você poderia fazer algo como isto :

bool blueValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,0,0)!=0);

bool redValue = (iCustom(NULL,0,"indicatorNameHere",SSP,Kmax,1,0)!=0);

Mas tenha cuidado. Esse indicador é uma variação do super indicador de sinal, e o super indicador de sinal recalcula (re-pinturas)

 

muito obrigado e por seu aviso ^^, vou tentar agora ...

Razão: