Aiuto per la codifica - pagina 201

 
Slow Moe:
Ciao, voglio chiedere, se è possibile riscrivere questo indicatore, in modo che mostri solo le frecce, e queste dovrebbero apparire alle candele? Qualcuno potrebbe aiutarmi con questo, o magari codificarlo per me, per favore?

saluti

Lento

fxmtn-test.mq4

Slow

Prova così

File:
 

Grazie mille mladen funziona benissimo!

Sto cercando di far attivare anche "extern int arrowDistance = XXX;" in qualche modo.

Ora appare nel menu di selezione, ma non ha cambiato Distance. Dove mettere la *arrowDistance?

O mi sbaglio completamente?

L'ho messo in diversi posti, ma mi ha dato solo più punti, non più distanza....

Noob cercando di capire il codice, e sperando in qualche luce

 

L'ho fatto ora in questo modo:

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

se (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);

Questo è un modo giusto? Solo perché funziona, può essere sbagliato

 
Slow Moe:
L'ho fatto ora in questo modo:

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

se (BelowBuff < -24.0) LongBuffe = Low- (Point*arrowDistance /2);

È un modo giusto? Solo perché funziona, può essere sbagliato

Questo dovrebbe funzionare, c'è un altro modo per farlo in questo modo

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

 

Lento,

Meglio usare la modalità iATR(). Cambiate i time frame e vedrete cosa intendo. Visivamente avrete un problema sui time frame più alti quando la distanza di una freccia dal massimo o dal minimo è fissa (sembreranno disordinati su alcuni time frame). Usare iATR() invece di usare la distanza fissa risolve questo problema

 

Grazie mrtools, mladen funziona davvero molto meglio.

Un ultimo indicatore che non riesco a controllare....

Cerco di cambiarlo qui: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Pensavo che questo fosse il punto giusto, dato che cambiando il 50 cambia la distanza. Ma niente di quello che ho provato ha funzionato con arrowDistance.

 
Slow Moe:
Grazie mrtools, mladen funziona davvero molto meglio.

Un ultimo indicatore che non riesco a controllare ....

Cerco di cambiarlo qui: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Ho pensato che questo fosse il punto giusto, dato che cambiando il 50 cambia la distanza. Ma niente di quello che ho provato ha funzionato con arrowDistance.

Lento

Quando si usa l'atr per la distanza delle frecce, probabilmente il modo migliore per modificare tale distanza è una sorta di moltiplicatore. Per esempio :

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

Dove arrowDistance è definito come doppio e può essere frazionario (quindi potresti usare valori come 0,5 o come 10,5). Cambiare il periodo atr non cambierà significativamente la distanza (prenderà solo in considerazione una media più lunga di intervalli)

 

cercare di ottenere il valore da un altro indicatore

ciao com,

sto cercando di scrivere il mio primo indicatore e voglio usare anche un valore da un indicatore esistente che ho preso da questo sito. ho appena copiato il codice dall'indi qui.

cosa devo codificare nel mio nuovo indicatore per sapere se la barra è blu/rossa o 1/0 non mi dispiace ma ho provato già molto e tutto il tempo solo ottenere zero

ho anche provato a prendere l'intero codice nel mio indicatore che non ha funzionato.

qualsiasi aiuto sarebbe apprezzato

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:
ciao com,

Sto cercando di scrivere il mio primo indicatore e voglio usare anche un valore da un indicatore esistente che ho preso da questo sito.

cosa devo codificare nel mio nuovo indicatore per sapere se la barra è blu/rossa o 1/0 non mi dispiace ma ho provato già molto e tutte le volte ottengo solo zero

ho anche provato a prendere l'intero codice nel mio indicatore che non ha funzionato.

qualsiasi aiuto sarebbe apprezzato

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

Si potrebbe fare qualcosa del genere:

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

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

Ma fai attenzione. Quell'indicatore è una variazione dell'indicatore super signal, e l'indicatore super signal ricalcola (ridipinge)

 

grazie mille e per il tuo avvertimento^^, lo proverò ora ...

Motivazione: