Hilfe bei der Codierung - Seite 201

 
Slow Moe:
Hallo, ich möchte fragen, ob es möglich ist, diesen Indikator so umzuschreiben, dass er nur die Pfeile anzeigt, und diese bei den Candlesticks auftauchen sollten ? Könnte mir jemand dabei helfen, oder es für mich programmieren, bitte?

Grüße

Langsam

fxmtn-test.mq4

Langsam

Versuchen Sie es so

Dateien:
 

Vielen Dank, dass mladen so schön funktioniert!

Ich versuche, "extern int arrowDistance = XXX;" irgendwie auch aktiviert zu bekommen.

Es taucht jetzt im Auswahlmenü auf, hat aber keine sich ändernde Distanz. Wo kann ich die *arrowDistance einfügen ?

Oder liege ich da völlig falsch ?

Ich habe es an mehreren Stellen eingefügt, aber es hat mir nur mehr Punkte gebracht, nicht mehr Entfernung....

Noob versucht, den Code zu verstehen, und hofft auf etwas Licht

 

Habe es jetzt so gemacht:

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

if (BelowBuff < -24.0) LongBuffe = Low- (Punkt*Pfeilabstand /2);

Ist das der richtige Weg? Nur weil es funktioniert, kann es falsch sein

 
Slow Moe:
Habe es nun so gemacht:

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

if (BelowBuff < -24.0) LongBuffe = Low- (Punkt*Pfeilabstand /2);

Ist das der richtige Weg? Nur weil es funktioniert, kann es falsch sein

Das sollte funktionieren, es gibt aber auch eine andere Möglichkeit, wie man es machen kann

LongBuffe = Niedrig-Pfeildistanz*iATR(NULL,0,20,i) und ShortBuff = Hoch+Pfeildistanz**iATR(NULL,0,20,i)

 

Langsam,

Besser ist es, den iATR()-Modus zu verwenden. Ändern Sie die Zeitrahmen und Sie werden sehen, was ich meine. Bei höheren Zeitrahmen gibt es ein optisches Problem, wenn der Abstand eines Pfeils vom Hoch oder Tief fixiert ist (sie sehen auf einigen Zeitrahmen unschön aus). Die Verwendung von iATR() anstelle eines festen Abstands löst dieses Problem.

 

Danke mrtools, mladen funktioniert wirklich viel besser.

Ein letzter Indikator, den ich nicht kontrollieren kann ....

Ich versuche es hier zu ändern: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Ich dachte, das sei die richtige Stelle, da die Änderung von 50 den Abstand ändert. Aber nichts, was ich getestet habe, hat mit arrowDistance funktioniert.

 
Slow Moe:
Danke mrtools, mladen funktioniert wirklich viel besser.

Ein letzter Indikator, den ich nicht kontrollieren kann ....

Ich versuche es hier zu ändern: SignalGap = MathCeil(iATR(NULL,0,50,0)/Point);

Dachte, das wäre die richtige Stelle, da eine Änderung der 50 die Entfernung verändert. Aber nichts, was ich getestet habe, hat mit arrowDistance funktioniert.

Langsam

Wenn Sie atr für Pfeile Abstand wahrscheinlich der beste Weg, um diesen Abstand zu ändern ist eine Art von Multiplikator. Zum Beispiel :

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

Wobei arrowDistance als Double definiert ist und einen Bruchwert haben kann (man könnte also sowohl Werte wie 0.5 als auch Werte wie 10.5 verwenden). Das Ändern der atr-Periode wird die Entfernung nicht signifikant verändern (es wird nur ein längerer Durchschnitt der Entfernungen in Betracht gezogen)

 

Versuch, den Wert von einem anderen Indikator zu erhalten

hallo com,

ich versuche, meinen ersten eigenen Indikator zu schreiben und ich möchte auch einen Wert von einem bestehenden Indikator verwenden, den ich von dieser Seite bekommen habe. ich habe einfach den Code von dem Indikator hier kopiert.

Was muss ich in meinem neuen Indikator codieren, um zu wissen, ob der Balken blau/rot oder 1/0 ist, aber ich habe schon viel probiert und bekomme immer nur Null.

ich habe sogar versucht, den ganzen Code in meinen Indikator zu bekommen, was nicht funktioniert hat.

jede Hilfe würde geschätzt werden

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

ich versuche, meinen ersten eigenen Indikator zu schreiben und ich möchte auch einen Wert aus einem bestehenden Indikator verwenden, den ich von dieser Seite bekommen habe. ich habe gerade den Code aus dem Indi hier kopiert.

Was muss ich in meinem neuen Indikator codieren, um zu wissen, ob der Balken blau/rot oder 1/0 ist, aber ich habe schon viel versucht und bekomme immer nur Null.

ich habe sogar versucht, den ganzen Code in meinen Indikator zu bekommen, was nicht funktioniert hat.

jede Hilfe würde geschätzt werden

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

Sie könnten so etwas tun:

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

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

Aber seien Sie vorsichtig. Dieser Indikator ist eine Variation des Supersignal-Indikators, und der Supersignal-Indikator berechnet neu (repaints)

 

vielen Dank und für die Warnung^^, ich werde es jetzt versuchen ...

Grund der Beschwerde: