Hilfe bei der Codierung - Seite 485

 
NWFstudent:
Nehmen wir an, Sie handeln mit dem 1-Stunden-Chart und verwenden einen Mtf-Indikator, der den 4-Stunden-Chart anzeigt, dann möchte ich, dass die Einstellung für den nächsten Zeitrahmen verwendet wird.

Dh. ich bin den Handel der 1hr-Chart und der Indikator sind mit 4hr Daten, wenn ich meine Zeitrahmen zu 4hr ich den Indikator, um den Zeitrahmen über 4hr swap wollen, so jetzt wird es die täglichen Daten verwenden.

Ich habe diesen Thread gefunden, aber da ich kein Coder bin, bin ich mir nicht sicher, wo ich den Code einfügen soll oder ob er für den eigentlichen Indikator geändert werden muss.

Nächster Zeitrahmen - MQL4 forum

Der Indikator, dem ich dies hinzufügen möchte, ist "Traders Dynamic_Cb_ssa norm Index_alerts+arrows new 1.01" aus den Elite-Foren

NWFstudent

Sie können in diesem sehen, wie Sie das auf einfache Weise tun können: https: //www.mql5.com/en/forum/181187/page24 (einschließlich der automatischen Auswahl des dritten höheren Zeitrahmens)

 

Hallo mladen.

Das letzte Mal für eine Weile....Ich verspreche es.

Wie Sie inzwischen wissen, bin ich ein großer Fan des ADX-Indikators.

Ich verwende ihn auf verschiedene Weise und gehe nie einen Handel gegen ihn ein.

Ich mag auch das Prinzip des Drei-Enten-Indikators

und habe versucht, die beiden zu kombinieren, aber ohne Erfolg.

Ich werde es noch einmal versuchen und dann etwas anderes ausprobieren:

Der beigefügte Indikator hat, soweit ich sehen kann, nur einen Bereich, in dem ein Indikator erwähnt wird - die Zeilen 54, 57 und 60.

Alles andere scheint auf den Zeitrahmen bezogen zu sein.

Ich habe versucht, alle Erwähnung von 'sma & SMA' zu entfernen - & zu adx & ADX, an ihrer Stelle, aber ohne Glück.

Ist es möglich, und wenn ja (ohne zu viel von Ihrer Zeit.) würde mich wissen lassen, wie.

Ich wünsche Ihnen einen schönen Feierabend.

Dateien:
 
Jeeves:
Hallo mladen.

Das letzte Mal für eine Weile....Ich verspreche es.

Wie Sie inzwischen wissen, bin ich ein großer Fan des ADX-Indikators.

Ich verwende ihn auf verschiedene Weise und gehe nie einen Handel gegen ihn ein.

Ich mag auch das Prinzip des Drei-Enten-Indikators

und habe versucht, die beiden zu kombinieren, aber ohne Erfolg.

Ich werde es noch einmal versuchen und dann etwas anderes ausprobieren:

Der beigefügte Indikator hat, soweit ich sehen kann, nur einen Bereich, in dem ein Indikator erwähnt wird - die Zeilen 54, 57 und 60.

Alles andere scheint auf den Zeitrahmen bezogen zu sein.

Ich habe versucht, alle Erwähnung von 'sma & SMA' zu entfernen - & zu adx & ADX, an ihrer Stelle, aber ohne Glück.

Ist es möglich, und wenn ja (ohne zu viel Ihrer Zeit in Anspruch zu nehmen.) würde mich wissen lassen, wie.

Ich wünsche Ihnen einen schönen Feierabend.

Jeeves

Sie können in diesem Indikator nicht adx anstelle von sma verwenden. Adx-Werte liegen in einem völlig anderen Wertebereich und können nicht mit Bid verglichen werden, wie es dieser Indikator im Code tut.

 
mladen:
NWFstudent Hier können Sie sehen, wie Sie das auf einfache Weise machen können: https: //www.mql5.com/en/forum/181187/page24 (einschließlich der automatischen Auswahl des 3. höheren Zeitrahmens)

Danke, es war ein einfaches Copy-Paste

 

Lieber,

kann mir jemand helfen.

Was ist mit diesem "ungültigen Ticket für die OrderModify Funktion" passiert?

Aber in anderen kann es handeln.

extern double lots = 0.1;

extern double stopsize = 200;

extern double profsize = 100;

extern double Risiko =0.01;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_SELL, getLots(Risk), Bid, 3, 0, 0, NULL,LimeGreen);

stop=(Bid+stopsize*Point);

prof=(Bid-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Kommentar(" ");

}

 
hock87:
Lieber,

Kann mir jemand helfen.

Was ist mit diesem "ungültigen Ticket für die OrderModify-Funktion" passiert?

Aber in anderen kann es handeln.

Das bedeutet, dass Ihre Bestellung nicht angenommen/ausgeführt wurde und dass die Funktion OrderSend() als Ergebnis -1 zurückgegeben hat. Prüfen Sie immer, ob die Ticketnummer > -1 ist, bevor Sie versuchen, eine neu erstellte Bestellung zu ändern.

 

Gibt es Beispiele für die Verwendung einfacher Dateien (keine Verlaufsdateien)?

 
mladen:
xtractalpha Ich werde es testen müssen, um zu sehen, was passiert ist. Wenn ich herausfinde, was das Problem ist, werde ich es hier posten

Lieber Mladen,

hast du irgendwelche Neuigkeiten zu meiner Anfrage?

Genießen Sie Ihr Wochenende

Vielen Dank im Voraus,

Thierry

 
xtractalpha:
Lieber Mladen,

Haben Sie irgendwelche Neuigkeiten zu meinem Antrag?

Genießen Sie Ihr Wochenende

Vielen Dank im Voraus,

Thierry

Thierry

Löschen Sie die Zeilen 74 und 137 Ihres Codes (Sie rufen die Funktion LotsizeCalc() in beiden Zeilen auf und erhöhen auf diese Weise künstlich die Losgröße bei jedem Tick)

Nachdem Sie diese Zeilen gelöscht haben, sollte es funktionieren.

 
mladen:
Thierry

Löschen Sie die Zeilen 74 und 137 Ihres Codes (Sie rufen die Funktion LotsizeCalc() in beiden Zeilen auf und erhöhen auf diese Weise künstlich die Losgröße bei jedem einzelnen Tick)

Nachdem Sie diese Zeilen gelöscht haben, sollte es funktionieren.

Vielen Dank für Ihre schnelle Antwort!

Ich habe die Zeilen gelöscht, aber der EA öffnet immer noch Trades mit der falschen Lotgröße.

Es ist wirklich seltsam, warum der EA meinen Martingale-Code ignoriert. Denn der EA öffnet nur Trades mit der Lotgröße 0.10 oder 0.20.... (siehe das Bild).

Bildschirmfoto von Lightshot

Ich denke, dass meine lotsizecalc-Funktion das Problem ist. Ich möchte, dass die Funktion meine Losgröße mit dem Martingalbetrag multipliziert, wenn ich einen Handel verliere.

Mein Martingalbetrag ist 1,5 und meine Losgröße ist 0,10. Das bedeutet, wenn ich 5 Trades hintereinander verliere, sind die Lotsizes: 0.1 , 0.15 , 0.22 , 0.34 , 0.51 .

double LotsizeCalc() { if(lastOrderProfit()<0 && tradeNumber <=MaximumTrades) { tradeNumber++; malot=OrderLots()*MartingaleAmount; } else { malot = LotSize; tradeNumber=1; } return(malot); }

Kann jemand diesen Code überprüfen?

Vielen Dank im Voraus,

Thierry