Wie programmiert man? - Seite 41

 

Mehr EA's

Es können nur 5 EAs auf einmal hochgeladen werden.

Dateien:
kehedge.mq4  12 kb
 

Wie schreibt man "Wenn der letzte Handel gewinnbringend war"?

In einem EA wie schreiben "Wenn letzter Handel war gewinnend" (für dieses Paar) dann ...

Vielen Dank für die Hilfe.

Jo

 

über MarketInfo()

hallo an alle!

//

double A = MarketInfo("EURUSD",MODE_BID);

doube B = MarketInfo("USDJPY",MODE_BID);

double C = MarketInfo("EURJPY",MODE_BID);

init()

{

A = MarketInfo("EURUSD",MODE_BID);

B = MarktInfo("USDJPY",MODE_BID);

C = MarktInfo("EURJPY",MODE_BID);

}

int start()

{

...

}

//

Warum funktionieren diese Codes nicht? Wenn man sie erfüllt, kommt es zu so vielen Fehlern:

'MarketInfo' - Initialisierung erwartet

'A' - Variable nicht definiert ...

.....und so weiter

 

Das hat bei mir funktioniert

Jovager:
Wie schreibt man in einem EA "Wenn der letzte Handel ein Gewinn war" (für dieses Paar) dann ...

Vielen Dank für die Hilfe.

Jo

double LotsOptimised()

{

double lots = InitialLots;//default lots 0.1 - es wird keinen Fehler geben, wenn lots nicht durch den anderen Teil des Codes gesetzt wird

// int total = OrdersHistoryTotal();

for(int i=0;i<OrdersHistoryTotal();i++) // Scannen aller geschlossenen / stornierten Transaktionen

{

OrderSelect(i, SELECT_BY_POS, MODE_HISTORY );

if(OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber)

{

if(OrderProfit()<0)

{

Lots = NormalizeDouble(OrderLots() * LotsFactor,2);

}

sonst

{

Lots=InitialLots;

}

}

}

return(lots);

}

Damit habe ich überprüft, ob der letzte geschlossene Handel ein Gewinner war oder nicht. Wenn nicht, habe ich die Lose mit einem Martingal versehen. Hoffentlich hilft das.

 
Sendra:
Hallo, alle

Ich habe versucht, einen EA zu erstellen, und erhielt folgende Fehlermeldung:

'\end_of_program' - endende Klammer '}' erwartet C:\...\My_First_EA.mq4(96,1)

Ich habe auf die Zeile doppelgeklickt und sie dann mit den öffnenden und schließenden Klammern davor überprüft, aber ich weiß immer noch nicht, wo ich den Fehler gemacht habe.

Dies ist der zweite EA, den ich ausprobiert habe, mit der gleichen Fehlermeldung, basierend auf dem gleichen Indikator.

ich danke euch.

Sendra, senden Sie das Programm als Anhang an meine E-Mail-Adresse, und ich werde es mir ansehen und versuchen, es zu beheben. Normalerweise ist das Problem eine fehlende Klammer nach einer Anweisung. Leider handelt es sich hierbei um eine niedrige Programmiersprache, und da es sich um eine einfache Sprache handelt, kann sie Ihnen oft nicht genau sagen, wo der Fehler liegt, so dass sie auf den Fehler zurückgreift, den sie Ihnen anzeigt. Bei der Behebung dieser Art von Fehlern hilft nur Erfahrung im Programmieren.

Dave

<<<

ddiebold7@aol.com

 

Ralph, HILFE bei der Logik des Tagesabschlusses

Hallo Ralph.

Vielleicht könntest du mir ein wenig helfen. Dies war eine kleine Herausforderung für mich herauszufinden!! Ich möchte einige Bedingungen definieren, anhand derer der EA feststellen kann, ob ein offener Handel geschlossen werden soll oder nicht. Nehmen wir einen Kaufauftrag als Beispiel (ich weiß, dass ein Verkaufsauftrag der gegenteiligen Logik entsprechen würde). Ich habe also einen Kaufauftrag, der an einem Montag eröffnet wurde. Ich möchte, dass der EA den Daily Close der nächsten X Tage betrachtet. Wenn der Tagesabschluss an jedem der nächsten X Tage (sagen wir zum Beispiel 5 Tage) niedriger ist als der Eröffnungskurs der Order, dann soll der EA eine OrderClose ausführen, um den Handel zu schließen. Ich war auch denken, ein weiterer möglicher Teil dieser Bedingung, die ich möchte, dass die EA zu betrachten ist, wenn die tägliche schließen über jeden der nächsten X Anzahl von Tagen war niedriger als der Vortag schließen. Auch zu, Mein EA läuft auf der eine Stunde Zeitrahmen.

Ich hoffe, ich habe klar genug erklärt, was ich erreichen möchte, damit Sie es verstehen.

Vielen Dank im Voraus für Ihre Hilfe.

 

Kodierungshilfe bitte

Ich bin nicht für die Kodierung eines EA, nur ein wenig Hilfe mit einem Problem fragen.

Wenn ich eine offene Long-Order habe, möchte ich in der Lage sein, den höchsten notierten Preis abzurufen, den die Order gesehen hat, seit diese spezifische Long-Order geöffnet wurde. Wenn die Order zum ersten Mal geöffnet wird, wird natürlich der offene Preis zurückgegeben. Wenn die Order um 20 Pips steigt, würde der Preis von OrderOpenPrice() + 20 Pips zurückgegeben werden. Wenn der Preis dann um 10 Pips sinkt, würde immer noch der Preis OrderOpenPrice() + 20 zurückgegeben werden. Ich weiß, dass dies innerhalb eines bestimmten Balkens durch die Verwendung von OrderOpenPrice() + High[0] möglich ist, aber wenn ein neuer Balken gebildet wird, wird High[0] zu High[1]. Ich werde dieselbe Logik auch umgekehrt verwenden, um den niedrigsten Wert zurückzugeben, den eine bestimmte Short-Order gesehen hat. Wenn der Auftrag geschlossen wird, werden die zurückgegebenen Werte wieder auf Null gesetzt.

Ich habe Probleme, das zu verstehen, kann mir jemand helfen?

Ich danke Ihnen!

 

Speichern Sie den höchsten Kurswert des aktuellen Balkens in einer Variablen. Jedes Mal, wenn Sie einen neuen Kurs erhalten, vergleichen Sie ihn mit dem Wert der Variablen. Wenn der neue Wert höher ist, speichern Sie ihn in der Variablen. Ist der neue Wert niedriger, behalten Sie die Variable unverändert bei.

if(Variable < newquote)

Variable = neue Quote;

Ich hoffe, das hilft!

 
jimven:
Speichern Sie den höchsten Kurswert des aktuellen Balkens in einer Variablen. Jedes Mal, wenn Sie einen neuen Kurs erhalten, vergleichen Sie ihn mit dem Wert der Variablen. Wenn der neue Wert höher ist, speichern Sie ihn in der Variablen. Wenn der neue Wert niedriger ist, behalten Sie die Variable bei.

if(Variable < newquote)

variabel = newquote;

Ich hoffe, das hilft Ihnen!

Vielen Dank für die Hilfe, ich habe jedoch eine Frage. Was passiert, wenn der aktuelle Balken nicht mehr der Balken ist, in dem die Order eröffnet wurde? Was ist, wenn der Auftrag in einem Balken vor 5 Balken eröffnet wurde? Jetzt möchte ich den höchsten Kurswert von 5 Balken, den höchsten Kurs seit der Eröffnung der Order. Wird dies trotzdem funktionieren?

Danke