Niedrig und Hoch - Seite 3

 

Ich habe herausgefunden, wo das Problem lag (mit eurer Hilfe). ;)

Vielen Dank an alle von euch!

Jetzt--->TESTEN! (Backtesting sieht sehr gut aus)

 

Ich denke, das Problem ist, dass es öffnet Aufträge auf den Ebenen, die Sie den EA auf dem Chart angehängt, weil Hour() gibt die Zeit in Stunden Sie es angehängt. Aber ich denke, Sie wollen das nutzen:

TimeHour(Timecurrent())

Werfen Sie einen Blick in die Dokumentation, um zu sehen, was ich meine...

EP

 

Wenn wir das hinkriegen, dann habe ich meinen heiligen Gral! :D
 
ErrorProgrammer:

Ich denke, das Problem ist, dass es Aufträge auf den Ebenen öffnet, die Sie den EA an das Diagramm angehängt haben, weil Hour() die Zeit in Stunden zurückgibt, die Sie angehängt haben.

Das hilft zwar nicht wirklich, das Problem von 01005379 zu lösen, aber ich glaube nicht, dass das richtig ist. Wenn Sie zum Beispiel den folgenden EA im Strategietester ausführen, wird ein unterschiedlicher Wert für Hour() angezeigt, der der simulierten Brokerzeit entspricht.


int start() {Comment("Hour: " + Hour() + "   @ " + TimeToStr(TimeCurrent(), TIME_DATE | TIME_MINUTES));}

Ich denke, die Dokumentation will damit sagen, dass sich Hour(), Minute() usw. während eines Aufrufs von start() nicht ändern. Aber sie ändern sich während der Lebensdauer des EAs.


 
01005379:

Wenn wir das beheben können, dann habe ich meinen heiligen Gral! :D

Dieser Balken sieht ziemlich überdimensioniert aus. Passiert das auch bei anderen Aufträgen? Vielleicht liegt es an der Volatilität in diesem speziellen Balken.

 
fxcourt:

Dieser Balken sieht ziemlich überdimensioniert aus. Passiert das auch bei anderen Aufträgen? Vielleicht liegt es an der Volatilität in diesem speziellen Balken.

Jetzt ist es dasselbe mit anderen Aufträgen. Die Order wird einen Takt später geöffnet, wenn der Wert niedriger als der LowValue ist. Für die Verkaufsorder möchte ich, dass die Order geöffnet wird, sobald Bid niedriger als LowValue wird.

 

Sie müssen Ihren Code für die Auftragserteilung bei jedem Tick ausführen lassen. Im Moment wird ein Auftrag nur bei der Eröffnung des Balkens erteilt, vorausgesetzt, die Eröffnung liegt über oder unter der Eingabe.

int start()

{

//beim Öffnen des Balkens Hoch und Tief ermitteln

{

if(got_high_and_low)

{

readytotrade = true;

}

}

//jeden Tick, wenn bereit zum Handel, prüfen, ob der Einstiegskurs erreicht wurde

if(readytotrade)

{

//Kaufen oder Verkaufen

readytotrade = false;

}

}

 
fxcourt:
Sie müssen Ihren Code für die Auftragserteilung bei jedem Tick ausführen lassen. Im Moment wird ein Auftrag nur bei der Eröffnung eines Balkens erteilt, vorausgesetzt, die Eröffnung liegt über oder unter der Eingabe.

Hm, und wie mache ich das?

 

Sie müssen Ihren Code neu strukturieren. sollte nicht zu schwer sein. teilen Sie es einfach in zwei Teile. der erste Teil führt einmal pro Bar, um Ihren Eintrag und andere Daten zu sammeln, der zweite Teil wird für den Eintrag zu beobachten getroffen werden.

 
fxcourt:

Sie müssen Ihren Code für die Auftragserteilung bei jedem Tick ausführen lassen. Im Moment wird ein Auftrag nur bei der Eröffnung des Balkens erteilt, vorausgesetzt, die Eröffnung liegt über oder unter der Eingabe.

int start()

{

//beim Öffnen des Balkens Hoch und Tief ermitteln

{

if(got_high_and_low)

{

readytotrade = true;

}

}

//jeden Tick, wenn bereit zum Handel, prüfen, ob der Einstiegskurs erreicht wurde

if(readytotrade)

{

//Kaufen oder Verkaufen

readytotrade = false;

}

}

wuh, ich bin ein wenig verloren im Moment. Mehr Hilfe wird groß sein. ;)