Wie programmiert man? - Seite 77

 

Ichimoku Kinko Hyo Cross eröffnet nur Buy's!

Hallo zusammen,

Ich habe in den letzten Wochen programmiert und komme ganz gut voran. Aber ich habe einen Punkt hier, wo meine neuesten ziemlich einfaches System, das ich versuche, Code wird nicht für mich arbeiten getroffen. Ich habe es etwa fünf Mal neu geschrieben, mit verschiedenen Code, versucht Expert Advisor Builder und Ändern von anderen Cross-Strategien e.t.c., aber das System wird immer nur öffnen Buy Trades. (Neben anderen Problemen, die ich habe) jede Hilfe wäre sehr zu schätzen, wie es scheint, wie es ein profitables System sein könnte. (Ok, das scheint jeder zu denken, wenn er sie programmiert, aber manuelle Backtests Bar für Bar zeigen ein positives Ergebnis).

DAS SYSTEM: Chart-Setup

Der Ichimoku Kinko Hyo Indikator mit den Standardeinstellungen 9,26,52. Zeigen Sie nur den Tenkan-Sen und Kijun-Sen an, blenden Sie die Senkou und Chikou Linien aus.

ERSTER EINSTIEG (erklärt für long/buy - dasselbe gilt für sell in op. direction)

Tenkan-Sen kreuzt Kijun-Sen und der Kurs liegt über KIJUN-Sen. Stop-Loss in Höhe des Spreads des Paares unter Tenkan-Sen. Nachziehen mit Stop bei Kijun-Sen - Spread-Pips, es sei denn, es kommt ein Umkehrsignal (dann schließen Sie).

RE-ENTRY (manchmal werden ein paar Trades ausgestoppt, bevor sie den "großen Ritt" machen.

Wenn der Stop-Loss erreicht wird, bevor sich Tenkan-Sen und Kijun-Sen kreuzen, kann eine Position wieder eröffnet werden, wenn der Kurs über dem TENKAN-Sen schließt und der Tenkan-Sen noch über dem Kijun-Sen liegt. Stop-Loss wie zuvor.

ZUSAMMENFASSUNG

Gehen Sie in eine Long-Position, wenn der Tenkan-Sen über den Kijun-Sen kreuzt, und setzen Sie den Stop-Loss eine Spanne unterhalb des Kijun-Sen. Wenn Sie vor dem Kreuzen ausgestoppt werden und eine Umkehr stattfindet, können Sie erneut eine Long-Position eingehen, wenn der Kurs über den Tenkan-Sen steigt. Kein Take-Profit, nur Nachziehen des Stop-Loss am Kijun-Sen.

Dieses System neigt dazu, Trends zu bevorzugen, aber die Verluste sollten in Märkten, die sich in einer Bandbreite bewegen, nicht zu groß sein. Ich plane, mit täglichen TFs zu handeln, aber möglicherweise auch mit anderen, wenn ich den Expert zum Laufen bringe. In der Tat, auf einigen Märkten, die ich getestet habe, ist der EA im Moment profitabel, bevor er überhaupt richtig funktioniert!

MQ4 beigefügt, wenn jemand entschlüsseln kann, wo ich falsch gehe!

Vielen Dank!

Howard

P.S. Es wäre toll, wenn mir jemand helfen könnte, da ich morgen Geburtstag habe und es sehr schön wäre, etwas Hilfe zu bekommen!

Ich entschuldige mich auch bei allen Ichimoku-Praktikern da draußen, die der Meinung sind, dass er nicht automatisiert werden sollte, da er dazu gedacht ist, den Markt "auf einen Blick" zu handeln. Ich bin jedoch der Meinung, dass der Indikator so wunderbar ist, insbesondere der Kijun-Sen, der in vielen langen Trends gerade außerhalb der Retracements gehandelt wird, dass er sich perfekt für die Automatisierung eignet!

Dateien:
ikh_pro.mq4  5 kb
 
gmax111:
Ich schreibe eine EA, die kauft und verkauft die EMA Kreuze... Ich möchte es zu filtern, indem Sie überprüfen, ob die letzten 10 Bars schließt über dem EMA vor dem Kauf waren... kann mir jemand helfen?

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

 
Michel:

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

Vielen Dank für diese Michel...

Das war eines dieser Dinge, die mich einfach verblüfft haben, aber jetzt fühle ich mich wie ein Narr, weil ich zu viel nachgedacht habe... haha... DANKE NOCHMAL!!!

 

How To Code!!

Ich denke, diese Ea ist sehr gut...

Aber nur eine Bestellung in einem Paar öffnen...warum?

 

Zu adria

adria

Ich habe mich für dein Problem interessiert und damit gespielt.

Es sieht so aus, als ob Sie etwas wie folgt tun müssen:

Zuerst deklarieren Sie Var1, Var2 global.

Dann versuche dies:

if (Hour() == 12) Var1 = iHigh(NULL,0,1);

if (Stunde() == 12) Var2 = iLow(NULL,0,1);

Der Metaeditor-Navigator gibt eine Erklärung zu Hour().

Suchen Sie in TSD nach "trading hours" für weitere Beispiele.

Wenn Ihr EA vielversprechend ist, könnten Sie mir eine Kopie schicken?

Großer Be

 

Zu Big Be

Ich habe einen ähnlichen EA erstellt. Sie müssen den TIME-Wert entsprechend Ihrer

Chart-Zeit.

Dateien:
 

Ich brauche Hilfe bei dieser Funktion closealltrades

Ich stelle fest, dass der Broker manchmal den Preis neu notiert, so dass der EA die Order nicht schließt.

Auftrag nicht schließt. Wie kann ich verhindern, dass der EA weiterläuft, bis alle Aufträge entsprechend

seiner magischen Zahl geschlossen sind, vielleicht mit einer Sleep-Funktion für 5 Sekunden und

eine while-Schleife zu überprüfen und schließen Sie die Aufträge vor weiter. Unten ist die

closealltrades-Funktion. Ich schätze die Hilfe und danke im Voraus.

void CloseAllTrades()

{

int rc;

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Close error="+GetLastError());

}

}

}

 
hedge4x:
Ich stelle fest, dass der Broker manchmal den Preis neu notiert, was dazu führt, dass der EA nicht schließen kann.

den Auftrag. Wie kann ich verhindern, dass der EA fortzufahren, bis alle Aufträge nach

seiner magischen Zahl geschlossen sind, vielleicht setzen eine Schlaf-Funktion für 5 Sekunden und

eine while-Schleife zu überprüfen und schließen Sie die Aufträge vor weiter. Unten ist die

closealltrades-Funktion. Ich schätze die Hilfe und danke im Voraus.

void CloseAllTrades()

{

int rc;

int cnt;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

if(!rc)

Log("Close error="+GetLastError());

}

}

}

bool IsAllClosed ; //Global variable

void CloseAllTrades()

{

int cnt;

IsAllClosed = true;

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

IsAllClosed = IsAllClosed && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(!IsAllClosed) {CloseAllTrades(); return;}

...

 

danke

Danke Michel für deine Hilfe.

Ich werde es ausprobieren.

 

Diese Zeile while(!IsAllClosed) {CloseAllTrades(); return;}

im Hauptstart wird alle offenen Positionen schließen, wenn MT abstürzt

und ich ihn wieder starte. Gibt es eine Möglichkeit, diese Zeile

in die Funktion closealltrades einzufügen, damit sie nicht alle offenen Positionen schließt

nach dem Neustart von MT4?

Danke!