Wie programmiert man? - Seite 74

 

Meinen Sie:

if ( ( CloseSell1_1 CloseSell2_2 ) || ( CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

[/PHP]or do you mean:

[PHP]if ( ( CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

 

Ich danke Ihnen.

Jetzt, wo ich es betrachte, war es offensichtlich. Das war der Trick. Erster Backtest nicht so gut. Zeit zum Optimieren.

 
Big Be:
Ich muss wissen, wie ich den Stop für die HÄLFTE meines offenen Auftrags ändern kann. Nach meinem Verständnis bedeutet dies, dass ich zwei Aufträge eröffnen muss, z. B. .2 Lots und .2 Lots.

Mein EA basiert die Anzahl der Lots auf einer Money-Management-Berechnung.

Nachdem der Stop für einen Auftrag geändert wurde (basierend auf dem Erreichen eines Preisniveaus), würde ich meinen Exit-Code beide Aufträge schließen lassen, es sei denn, ihre (jetzt unterschiedlichen) Stops werden erreicht.

Der andere Auftrag behält seinen ursprünglichen Stop bei oder verschiebt ihn möglicherweise auf Break Even.

Wenn die anfängliche Anzahl der Lots (aus der MM-Funktion) ungerade ist, möchte ich sie ungleichmäßig auf die beiden Aufträge aufteilen, anstatt auf eine ungerade Anzahl von Lots oder Zehntel-Lots abzurunden.

Ich glaube, dies beinhaltet Magic Numbers und ein paar Zeilen Code hier und da. Vielleicht gibt es einen EA mit all dem, den ich kopieren könnte.

Danke für jede Hilfe.

Großes Be

Hallo; Sie haben mich an anderer Stelle explizit danach gefragt, aber es gab schon einige Antworten, und ich weiß nicht, welche Teile Ihrer Probleme noch bestehen könnten. Es wird eine Runde brauchen, in der du erneut fragst....

 

Hallo Ralph,

ralph.ronnquist:
Hallo; du hast mich an anderer Stelle explizit danach gefragt, aber es gab einige Antworten, und ich weiß nicht, welche Teile deines Problems übrig bleiben könnten. Es wird eine Runde brauchen, in der du erneut fragst....

Nun, keine der Antworten beantwortete tatsächlich eine meiner Fragen - einige bezogen sich auf meine Antworten auf die Fragen anderer.

Also bleiben alle Teile bestehen. (Siehe vorherigen Beitrag für das Zitat der Frage, die ich in diesem Thread gestellt habe).

Danke!

Großer Be

 

Problem beim Einrichten einer Limit Order

Hallo Jungs und Mädels,

Ich versuche, den Code in meinem EA so einzurichten, dass er einen Handel auf einem bestimmten Preisniveau (eine Limit-Order) eingeht. Dies ist der Code für die Limit-Order:

ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask+10*Point,3,BuyStopLoss,0, "xx Buy",16384,0,Red);

lots & BuyStopLoss sind vorbestimmte berechnete Werte, und sie funktionieren mit einer regulären Marktfunktion "OP_BUY", wenn ich sie darauf umstelle. Ask+10*Point ist nur ein willkürlicher Wert, den ich mir über dem aktuellen Preis ausgedacht habe, normalerweise verwende ich BuyEntry, der ebenfalls vorgegeben ist.

Der Fehler, den ich erhalte, wenn ich versuche, den Code im Strategietester auszuführen, lautet:

"2008.02.24 16:00:08 2004.06.17 15:15 xxEA EURUSD,M15: OrderSend error 130" (was ein Stoploss-bezogener Fehler ist)

Irgendwelche Ideen, was diesen Fehler verursacht? Ich denke, es muss ein Problem mit der Art und Weise geben, wie ich die Limit-Order einrichte, oder es können keine Limit-Orders im Strategietester ausgeführt werden (?), da es mit einer Market-Order gut zu funktionieren scheint. Vielen Dank für jede Hilfe.

 

Expert Advisor Builder?

Lonestar:
Ich bin relativ neu in Metatrader, allerdings nicht im Handel, und habe einige EAs mit Expert Adviser Builder erstellt. Die meisten funktionieren gut, aber ich habe Probleme, wenn ich mehrere Ausgänge verwende. Schließen (kaufen) Logiken und schließen (verkaufen) Logiken mit der OR-Funktion. Mehrfache Ausgänge mit AND funktionieren gut, aber es werden keine Ausgänge erkannt, die ich mit OR erstellt habe. Unten ist der Exit-Code.

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

if (CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2) Order = SIGNAL_CLOSESELL;

Der fettgedruckte Teil ist das Signal, das ignoriert wird. Irgendwelche Ideen. Das ist das Einzige, was mich vom richtigen Backtesting abhält. Wenn jemand helfen kann und das Backtesting funktioniert, können Sie es haben. Wenn ich nur die Geschäfte, die geschlossen werden sollten, manuell herausfiltere, sieht es vielversprechend aus.

Danke.

Was ist Expert Advisor Builder?

 
nondisclosure007:
Was ist Expert Advisor Builder?

Etwas wie Gordago oder dieses

 

Unterschiedliche Losgrößen.

Hallo,

Kann ich den Code für eine variable Losgröße für einen EA bekommen?

Zum Beispiel für den ersten Verkaufsauftrag 0,2, den zweiten Verkaufsauftrag 0,1.

Mit freundlichen Grüßen,

SIDDESH

 
Linuxser:
Etwas wie Gordago oder das hier

Danke! Ich mag Gordago für das Testen von Strategien (ohne tatsächlich einen Code schreiben zu müssen). Ich muss mich mit den Vorlagen, die es für meine EA-Zwecke verwendet, auseinandersetzen. Ich ertappe mich dabei, wie ich einige Änderungen an den Vorlagen vornehme, um sie meinen eigenen Codierungsstilen anzupassen. Aber alles in allem bin ich beeindruckt.

Ich dachte, Gordago sei ein kommerzielles Produkt? Ich sehe nirgendwo, wie viel es kostet.

 

ERR_COMMON_ERROR #2 bei Handelseröffnung

Hallo an alle,

Nach der wunderbaren Hilfe neulich bei den NewBar-Problemen, die ich hatte, habe ich sehr viel gelernt und bin mit meinem Lern-EA, den ich gerade programmiere, sehr weit gekommen. (Hauptsächlich als eine Lernübung und ein sehr grundlegendes System, das ich testen möchte (wird zweifellos nicht profitabel sein, aber es ist eine gute Lernübung!)

Ich habe ein Skript geschrieben, das bei jedem neuen Balken alle vorherigen Trades des aktuellen Paares schließt, dann den 20-Perioden-ATR-Wert nimmt und einen Kauf- und einen Verkaufsstopp eingibt, um in den Markt einzusteigen, wenn er sich um die Hälfte des ATR-Werts vom Markt-Open bewegt. Der Take Profit wird dann auf den ATR-Wert gesetzt (ich gehe davon aus, dass, wenn der Kurs den halben Weg dorthin zurückgelegt hat, es wahrscheinlich ist, dass er aufgrund der durchschnittlichen Bewegung des Tages weiterhin den Take Profit erreichen wird). Wahrscheinlich liege ich hier völlig falsch, aber ich möchte es trotzdem programmieren, um Werte auszuprobieren - auf dem Demokonto und nicht im Strategy Tester)

Ich habe alles programmiert und schließlich herausgefunden, wie man die zusätzlichen Ziffern nach dem Komma mit NormalizeDouble entfernt, aber jetzt, wenn der EA versucht, einen Kaufstopp am Anfang des Balkens zu öffnen, habe ich ERR_COMMON_ERROR oder Error #2.

Das ist WIRKLICH nicht hilfreich. Ich habe die Werte überprüft, die er für Open, Take Profit und Stop Loss definiert, und diese scheinen alle vernünftig zu sein, und ich kann nicht herausfinden, woran es sonst liegen könnte. Ich bin schon den ganzen Abend frustriert, weil ich von GetLastError keine weitere Rückmeldung erhalte! Bitte helfen Sie.

ATR_Value = iATR(NULL,0,ATR_Period,0); //Get current ATR Value from chart

if (ATR_Value < (ATR_Minimum*Point)) //Check current ATR_Value to ensure it is no less than the ATR_Minimum set

{

Print("Too little range for trading. ATR_Minimum ",(ATR_Minimum*Point)," ATR_Value ",ATR_Value);

return(0);

}

double buyopen,nbuyopen,buysl,nbuysl,buytp,nbuytp,sellopen,nsellopen,sellsl,nsellsl,selltp,nselltp;

buyopen=((iOpen(NULL,0,0))+(ATR_Value*Open_Multiplier)+Open_Offset);

nbuyopen=NormalizeDouble(buyopen,Digits);

buysl=((iOpen(NULL,0,0))+(ATR_Value*SL_Multiplier)+SL_Offset);

nbuysl=NormalizeDouble(buysl,Digits);

buytp=((iOpen(NULL,0,0))+(ATR_Value*TP_Multiplier)+TP_Offset);

nbuytp=NormalizeDouble(buytp,Digits);

sellopen=((iOpen(NULL,0,0))-(ATR_Value*Open_Multiplier)-Open_Offset);

nsellopen=NormalizeDouble(sellopen,Digits);

sellsl=((iOpen(NULL,0,0))-(ATR_Value*SL_Multiplier)-SL_Offset);

nsellsl=NormalizeDouble(sellsl,Digits);

selltp=((iOpen(NULL,0,0))-(ATR_Value*TP_Multiplier)-TP_Offset);

nselltp=NormalizeDouble(sellsl,Digits);

Print("Open:",nbuyopen," TP:",nbuytp," SL:",nbuysl);

int ticketbuy;

ticketbuy=OrderSend(Symbol(),OP_BUYSTOP,Lots,nbuyopen,Max_Slippage,nbuysl,nbuytp,"Buy Order",12345,(Bar_Period-Bar_Offset),Green);

if(ticketbuy<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

int ticketsell;

ticketsell=OrderSend(Symbol(),OP_SELLSTOP,Lots,nsellopen,Max_Slippage,nsellsl,nselltp,"Buy Order",54321,(Bar_Period-Bar_Offset),Red);

if(ticketsell<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

Vielen Dank für jede Hilfe, ich habe auch die mt4 angehängt, wenn jemand nichts dagegen hat, einen Blick darauf zu werfen. Es enthält auch Teile von Skripten von anderen Menschen, die, sorry, ich habe nicht gutgeschrieben, aber sie haben alle auf dieser Website gepostet worden. (Ich werde sie natürlich nennen, wenn ich EA jemals freigebe, ich poste dies nur, um zu versuchen, dieses Problem zu lösen, da es meine abendliche Frustration war).

Howard

Dateien:
atr.mq4  6 kb
Grund der Beschwerde: