Wie programmiert man? - Seite 222

 

Danke Roger09

Ursprünglich gepostet von ForExTyro

Ich versuche, einem EA einen Code hinzuzufügen, der die Anzahl der Trades, die er pro Tag durchführt, auf zwei (2) beschränkt. Nur EIN Long-Trade und EIN Short-Trade pro Tag. Dies ist der Code, den ich bis jetzt habe, aber bei einem Backtest funktioniert er nicht.

Können Sie mir helfen?

Antwort geschrieben von Roger09

Ersetzen Sie

datetime LongTrade=0;

datetime ShortTrade=0;

durch

statisch datetime LongTrade=0;

static datetime ShortTrade=0;

Das war's?

Ja, das ist es!

DANKE Roger09

 

Hallo,

Das ist ein schönes Beispiel, wie es aussieht, dekompiliert EA & Ind.

b.

 
Kalenzo:
Bitte sehr! Viel Spaß!

Hallo Kalenzo,

ich brauche wieder deine Hilfe, kannst du für mich eine zusätzliche

Info, wie Sie zuvor getan haben, würde ich gerne LSMA Bar Informationen setzen.

Wenn LSMA Woodie Bar Grün zeigt es Wort LONG (grüne Farbe),

und wenn Woodie Bar Rot zeigt es Wort Short (rote Farbe).

Sehen Sie sich das beigefügte Bild an.

http://i98.photobucket.com/albums/l277/compobey/CCIinfo.jpg

Mit freundlichen Grüßen,

compobey

 

Bitte um Hilfe

Hallo zusammen

Ich habe mit sehr einfachen System, das über +100 Pips pro Monat macht.

Ich würde es gerne in einen EA umwandeln, aber ich bin sehr neu im Programmieren und fühle mich so verloren . Vielleicht könnt ihr mir helfen, diesen EA zu erstellen, damit wir ihn alle nutzen können?

Bitte lassen Sie mich wissen, wenn Sie interessiert sind, und ich werde die Details posten, was der EA zu tun hat.

Ich danke euch

 

Kalenzo

Kalenzo:
Bitte sehr! Guten Appetit!

Hallo nochmal Kalenzo,

Ich habe das von dir behobene Indi beobachtet.

Im Allgemeinen funktioniert es gut, aber gelegentlich kommt es vor, dass es die falsche Farbe auf die Linie setzt.

Wie du auf dem Bild sehen kannst, gibt es Stellen, an denen es Tomato oder Red sein sollte, aber stattdessen wird es DodgerBlue.

Die Regeln waren;

Wenn der Wert (bei Barschluss) > als der vorherige Barschluss (nach oben) ist =

DodgerBlue, wenn der Wert < 0 ist

Blau, wenn der Wert > 0 ist

Wenn der Wert (bei Bar-Schluss) < als der vorherige Bar-Schluss (abwärts) =

Tomato, wenn der Wert > 0 ist

Rot, wenn der Wert < 0 ist

Ich habe mit roten Pfeilen markiert, wo die Fehler auftreten.

Können Sie sich bitte den Code ansehen.

Ich habe versucht, so gut wie möglich zu erklären, aber lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.

Vielen Dank!

Dateien:
 
Klondyke:
Nochmals hallo Kalenzo,

Ich habe das von Ihnen behobene Indi beobachtet.

Im Allgemeinen funktioniert es gut, aber gelegentlich kommt es vor, dass es die falsche Farbe auf die Linie setzt.

Wie Sie auf dem Bild sehen können, gibt es Stellen, an denen es Tomato oder Red sein sollte, aber stattdessen wird DodgerBlue angezeigt.

Die Regeln waren;

Wenn der Wert (bei Barschluss) > als der vorherige Barschluss (nach oben) ist =

DodgerBlue, wenn der Wert < 0 ist

Blau, wenn der Wert > 0 ist

Wenn der Wert (bei Bar-Schluss) < als der vorherige Bar-Schluss (abwärts) =

Tomato, wenn der Wert > 0 ist

Rot, wenn der Wert < 0 ist

Ich habe mit roten Pfeilen markiert, wo die Fehler auftreten.

Können Sie sich bitte den Code ansehen.

Ich habe versucht, ihn so gut wie möglich zu erklären, aber lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.

Danke.

Sorry, ich habe die Datei vergessen.

Dateien:
 

Wie gehe ich zu einem Zeilenetikett?

Wie komme ich zu einer Zeilenbeschriftung in Metatrader 4

etwas wie

if(a > b) springe zu fred

if(c > d) goto jim

:fred

hier noch etwas Code einfügen

:jim

hier etwas Code einfügen

Ich habe eine Antwort bekommen, aber ich brauche noch ein wenig mehr Klarheit

Du kannst stattdessen etwas Code in Funktionen schreiben. Etwas wie dies:

if(a > b) ReturnValue = fred();

if(c > d) ReturnValue = jim();

int fred()

{

hier etwas mehr Code einfügen

}

int jim()

{

hier etwas Code ausführen

}

Was ist ReturnValue? keine Funktion, wie schreibe ich das eigentlich?

 

In dem von Ihnen geposteten Beispiel ist "ReturnValue" einfach eine Variable. Sie hätte auch anders heißen können, aber derjenige, der Ihnen den Code gegeben hat, hat "ReturnValue" verwendet.

Um ehrlich zu sein, macht dieses Format nicht viel Sinn, es sei denn, Sie beabsichtigen, mit dem Wert, der von den beiden Funktionen zurückgegeben wird, tatsächlich etwas zu tun. Sie können das Konzept von goto nicht verwenden, wie Sie es in VB (oder war es Basic - es ist so lange her, dass ich mich nicht erinnern kann!)

Einfach etwas wie ...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Was immer Sie dann tun wollten, wenn das Programm mit goto gesprungen wäre, würden Sie stattdessen in den beiden entsprechenden Funktionen tun.

Ich hoffe, das ergibt einen Sinn.

Mit freundlichen Grüßen

Lux

 
luxinterior:
In dem von Ihnen geposteten Beispiel ist "ReturnValue" einfach eine Variable. Sie hätte auch anders heißen können, aber derjenige, der Ihnen den Code gegeben hat, hat "ReturnValue" verwendet.

Um ehrlich zu sein, macht dieses Format nicht viel Sinn, es sei denn, Sie beabsichtigen, mit dem Wert, der von den beiden Funktionen zurückgegeben wird, tatsächlich etwas zu tun. Sie können das Konzept von goto nicht verwenden, wie Sie es in VB (oder war es Basic - es ist so lange her, dass ich mich nicht erinnern kann!)

Einfach etwas wie ...

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

Was immer Sie dann tun wollten, wenn das Programm mit goto gesprungen wäre, würden Sie stattdessen in den beiden entsprechenden Funktionen tun.

Ich hoffe, das ergibt einen Sinn.

Mit freundlichen Grüßen

Lux

Danke für die Antwort. Ich versuche, den EA zwischen zwei Bedingungen wählen zu lassen, aber diejenige zu wählen, die sich zuerst ändert.

Also in Ihrem Beispiel

if(a>b)DoThisFunction();

if(a<b)DoAnotherFunction();

braucht es mehr als if do this oder if do that, denn die andere Bedingung ist, dass sich c & d vor a & b geändert haben, wenn also if do this und ignoriere a & b. Deshalb habe ich versucht, zu einer Zeile zu kommen, weil ich es nicht dazu bringen kann, mit if then else zu wählen

denn in Wirklichkeit habe ich

if(a>b && c>d) // hier einen Kauf tätigen

sonst

if(a>b && c<d) // hier einen Kauf in der Nähe tätigen

sonst

Umgekehrt einen Verkauf oder einen Close-Sell durchführen

Wenn sich jedoch c & d zuerst geändert haben, vor a & b, dann ignorieren Sie den obigen Code und führen stattdessen die obigen Tests für c & d durch.

Tut mir leid, das ist so klar wie Schlamm

 

Arbeiten mit CSV-Dateien - ich werde verrückt

Hallo,

ich schreibe gerade einen EA, der mit CSV-Dateien arbeitet.

Zum Testen habe ich meine CSV-Dateien in den folgenden Ordner gelegt:

/tester/files

Hier ist nur ein kleiner Ausschnitt aus meinem EA:

int handle = 0;

int Long = 0;

handle=FileOpen("LongMarket.csv",FILE_CSV|FILE_READ,';');

if (handle > 0)

{

Long= FileReadNumber(handle);

FileClose(handle);

}

Print("LongMarket = ", Long);

Print("Long handle = ", handle);

In meinem EA lese ich die CSV-Dateien und schreibe dann einige Zahlen auf.

Wenn ich nun meinen Test mache und im Journal die "Print"-Nachrichten lese, bekomme ich oft alte Zahlen, die nicht mehr in den CSV-Dateien stehen!!!

Zum Beispiel:

Zuerst steht da eine 3 und mein EA arbeitet und schreibt die 0 in die Datei,

Ich kann nur noch die 3 in der CSV-Datei sehen!!

Wenn ich diese CSV-Datei lösche und eine neue CSV-Datei mit 3 in den " /tester/files"-Ordner lege, kann ich nur noch die 0 aus dem Test davor lesen!!!! Aber ich kann nicht finden, wo der EA die 0 liest!!!

Ich werde noch verrückt!!!!!

Ich hoffe ihr könnt meine Frage verstehen und mir einen Tipp geben!!!