Hilfe bei der Codierung - Seite 423

 

mladen,

Ich habe die Änderung in Nummer 144 vorgenommen und die magische Zahl "MagicNumber" über die Symbole hinweg vereinheitlicht. Instanzen....It nimmt nun maximal 5 Trades auf einmal an, aber es wiederholt nun Trades für dasselbe Symbol zur gleichen Zeit, z.B. wenn es ein SELL-Handelssignal für EURUSD erhält, wird es diesen EURUSD-Verkaufsauftrag 5 Mal platzieren. Sehen Sie sich das Bild der Live-Order an, die auf diese Weise ausgeführt wurde:

mladen:
Wenn Sie möchten, dass es maximal 5 Aufträge für alle Symbole gibt, gehen Sie zu Zeile 144(if( OrderSymbol() != Symbol() ) continue;) und löschen Sie sie. Und lassen Sie die magische Zahl für alle Instanzen auf allen Symbolen gleich (so dass es nur die von diesem EA eröffneten Aufträge auf allen Symbolen zählen kann)
Dateien:
 
Mastercash:
mladen, ich habe die Änderung in Nummer 144 vorgenommen und die magische Zahl "MagicNumber" über die Symbole hinweg vereinheitlicht. Instanzen.... nimmt nun maximal 5 Trades auf einmal an, aber er wiederholt nun Trades auf demselben Symbol zur gleichen Zeit, z.B. wenn er ein SELL-Handelssignal auf EURUSD erhält, wird er diesen EURUSD-Verkaufsauftrag 5 Mal platzieren. Sehen Sie sich das Bild des Live-Auftrags an, der auf diese Weise ausgeführt wurde:

Bitte lesen Sie meinen vorherigen Beitrag

Diese Eröffnung hat nichts mit einer fehlenden Symbolüberprüfung zu tun - Sie müssen eine zusätzliche Überprüfung durchführen, um Eröffnungsaufträge auf demselben Symbol und auf demselben Balken zu deaktivieren. Wenn Sie den gleichen EA auf gleichen Symbolen und verschiedenen Zeitrahmen haben, dann würde Ihnen nicht einmal diese Überprüfung helfen (da die Balken in einigen Fällen für verschiedene Zeitrahmen desselben Symbols unterschiedlich sein werden)

 

Vielen Dank mladen,

Ich habe versucht, einen Code hinzuzufügen, den du mir vor einigen Jahren vorgeschlagen hast....aber es scheint nicht zu funktionieren.....der Code, wenn du dich erinnerst, geht so...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

öffnen().......

Bitte helfen Sie mir, den richtigen Code an der richtigen Stelle einzufügen!

mladen:
Das hängt nicht von diesem Teil des Codes ab. Sie müssen eine Prüfung in den Rest des Codes einfügen, damit keine Order für denselben Bar und dasselbe Symbol geöffnet wird.
 
Mastercash:
Vielen Dank mladen,

Ich habe versucht, einen Code hinzuzufügen, den Sie mich vor einigen Jahren gedacht haben....aber es scheint nicht zu funktionieren.....der Code, wenn Sie sich erinnern, geht so...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

öffnen().......

bitte helfen Sie mir, den richtigen Code an der entsprechenden Stelle einzufügen!

Mastercash

Wie ich bereits im vorherigen Beitrag sagte: Wenn Sie diesen EA an dasselbe Symbol und verschiedene Zeitrahmen anhängen, gibt es keine Möglichkeit zu verhindern, dass ein EA mit niedrigerem Zeitrahmen eine Order auf dem aktuellen Balken mit höherem Zeitrahmen öffnet (der bereits eine Order geöffnet hat).

Sie müssten alle aktuellen Balken der Zeitrahmen scannen, was übersetzt zum höchsten aktuellen Balken des Zeitrahmens führt - aber selbst dann haben Sie keine Ahnung, welcher Zeitrahmen den Balken geöffnet hat.

Man könnte das Kommentarfeld der Order verwenden, um das zu markieren, aber das Kommentarfeld kann vom Broker geändert werden, so dass es keine zuverlässige Möglichkeit gibt, das zu tun

 

ok sir..

aber ich nie machen meine ea multi time frames.Anyway I ve den Code unten angehängt..kindly helfen Sie mir mit einer Anpassung für diese wiederholte Handel auf der gleichen Währung zu stoppen: und wenn ich brauche, um jede axtra Engagement, um es zu tun, können Sie lrt mich wissen, indem inbox me.tnks

mladen:
Mastercash

Wie ich schon im vorherigen Beitrag sagte: Wenn Sie diesen EA an dasselbe Symbol und verschiedene Zeitrahmen anhängen, gibt es keine Möglichkeit, wie Sie verhindern können, dass ein EA mit einem niedrigeren Zeitrahmen einen Auftrag auf dem aktuellen Balken mit einem höheren Zeitrahmen (der bereits einen Auftrag geöffnet hat) eröffnet.

Sie müssten alle aktuellen Zeitrahmen scannen, was übersetzt zum höchsten aktuellen Zeitrahmen führt - aber selbst dann haben Sie keine Ahnung, welcher Zeitrahmen den Balken geöffnet hat.

Sie könnten das Kommentarfeld der Order verwenden, um dies zu markieren, aber das Kommentarfeld kann vom Broker geändert werden, so dass es keine zuverlässige Möglichkeit gibt, dies zu tun.
Dateien:
 
Mastercash:
ok Sir.. aber ich nie meine ea Multi Time Frames.Anyway Ich habe den Code unten angehängt..bitte helfen Sie mir mit einer Anpassung für diese wiederholte Handel auf der gleichen Währung zu stoppen: und wenn ich brauche, um jede axtra Engagement, um es zu tun, können Sie lrt mich wissen, indem inbox me.tnks

Eigentlich, dass EA ist ein Multi-Time-Frame-EA (es verwendet Indikatoren auf einem 5-Minuten-Daten), aber egal: hier haben Sie eine Version, die nicht zulässt, mehr als eine Bestellung pro bar nicetrader_1.021.mq4 öffnen

Dateien:
 

Hallo zusammen,

kann mir jemand helfen, ein einfaches ea basierend auf xcode Indikator zu kodieren, wie ich bin noob in der Codierung.

brauchen nur kaufen und verkaufen Aufträge nach Signal bar schließen, Indikator-Signal-Periode-Änderung-Option, Handelszeiten und Handelstage ändern Option.

Kauf und Verkauf Entry's sind einfach wie im Screenshot beschrieben. jeder Zeitrahmen jedes Paar, Take Profit Option, Trailing Stop Option.

Ich weiß, es ist nicht der heilige Gral und ist weit davon entfernt (da der heilige Gral nicht existiert ), aber wir können versuchen, etwas von diesem zu bekommen.

Auch wenn es möglich ist, um Losgröße Erhöhung Option (manuell zu ändern) hinzuzufügen. zum Beispiel: 0.01,0.01,0.02,0.02,0.04,0.04,0.08,0.08 und so weiter...

Dateien:
xcode.jpg  346 kb
xcode.mq4  11 kb
 
mladen:
TFI

Versuchen Sie so etwas wie dies:

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//-----------------------------------------------------

//

//-----------------------------------------------------

int clongs = 0;

int cshorts = 0;

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

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

Hallo Mladen,

vielen Dank für deine Hilfe! Ich habe deinen Code wie vorgeschlagen implementiert.

Jetzt funktioniert es

Darf ich Dir vielleicht noch eine kurze Frage stellen?

Was denkst du über den CCI-Filter, ist das der richtige Ansatz, um in diesem Fall Seitwärtsmärkte zu filtern?

Sollte ich ihm einen Bereich geben wie (CCIFilter>80 && CCIFilter<100)

Vielleicht können Sie mir einen Rat geben?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

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

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S, ich hoffe, Sie sind nicht von der Alpari-Pleite betroffen, es gibt einige Turbulenzen.

Vielen Dank im Voraus und ein schönes Wochenende!

Mit freundlichen Grüßen,

TFI

Dateien:
backtest2.jpg  160 kb
 
tfi_markets:
Hallo Mladen,

vielen Dank für Ihre Hilfe! Ich habe Ihren Code wie vorgeschlagen implementiert.

Jetzt funktioniert es

Darf ich Ihnen vielleicht noch eine kurze Frage stellen?

Was denken Sie über den CCI Filter, ist das der richtige Ansatz um in diesem Fall Seitwärtsmärkte zu filtern?

Sollte ich ihm einen Bereich geben wie (CCIFilter>80 && CCIFilter<100)

Vielleicht können Sie mir einen Rat geben?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

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

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.S, ich hoffe, Sie sind nicht von der Alpari-Pleite betroffen, es gibt einige Turbulenzen.

Vielen Dank im Voraus und ein schönes Wochenende!

Mit freundlichen Grüßen,

TFI

TFI

Zu Alpari: Ich bin schon seit langem Kunde bei ihnen. Aber ich schließe meine Konten von Zeit zu Zeit (wenn ich eine kritische Masse erreicht habe), und dieses Mal habe ich mein Konto bei ihnen vor etwa einem Monat geschlossen und kein neues eröffnet (ich habe auch noch ein Konto bei einem anderen Broker). Ehrlich gesagt, auch wenn ich Glück hatte und überhaupt nicht von den Ereignissen betroffen war, muss ich sagen, dass ich traurig darüber bin, was ihnen passiert ist: Ich hatte nie ein Problem (nicht einmal ein kleines) mit ihnen, und in Fällen, in denen einige Dinge geklärt oder korrigiert werden mussten, haben sie das immer zeitnah getan

_______________________

CCI-Filter: Normalerweise werden Werte zwischen -100 und +100 als "normale Zone" für den CCI angesehen (was eine Schwankungsbreite bedeuten würde), aber viele Händler handeln den CCI ausschließlich auf der Basis eines Nulldurchgangs mit einem standardmäßig eingestellten (14) Längenparameter. Dies erhöht die Möglichkeit, von einem Whipsaw getroffen zu werden, aber diejenigen, die Zero-Crosses verwenden, nutzen sie in der Regel auf kurzen Zeitrahmen. Um dies zu vermeiden, stellen Sie die Periode auf eine längere Periode ein (versuchen Sie z.B. 50), was eine gute Einstellung für Nullkreuzsignale für viele Symbole und Zeitrahmen ist.

 
mladen:
TFI

Zu Alpari: Ich bin schon seit langem Kunde bei ihnen. Aber ich schließe meine Konten von Zeit zu Zeit (wenn ich eine kritische Masse erreicht habe) und dieses Mal habe ich mein Konto bei ihnen vor etwa einem Monat geschlossen und kein neues eröffnet (ich habe auch noch ein Konto bei einem anderen Broker eröffnet). Ehrlich gesagt, auch wenn ich Glück hatte und überhaupt nicht von den Ereignissen betroffen war, muss ich sagen, dass ich traurig darüber bin, was ihnen passiert ist: Ich hatte nie ein Problem (nicht einmal ein kleines) mit ihnen, und in Fällen, in denen einige Dinge geklärt oder korrigiert werden mussten, haben sie das immer zeitnah getan

_______________________

Zum CCI-Filter: Normalerweise gelten Werte zwischen -100 und +100 als "normale Zone" für den CCI (was eine Schwankungsbreite bedeuten würde), aber viele Händler handeln den CCI ausschließlich mit einem Nulldurchgang mit standardmäßig eingestelltem (14) Längenparameter. Dies erhöht die Möglichkeit, von einem Whipsaw getroffen zu werden, aber diejenigen, die Zero-Crosses verwenden, nutzen sie in der Regel auf kurzen Zeitrahmen. Um dies zu vermeiden, stellen Sie die Periode auf eine längere Periode ein (versuchen Sie es z.B. mit 50), was eine gute Einstellung für Nullkreuzsignale für viele Symbole und Zeitrahmen ist.

Hallo Mladen,

ich möchte mich noch einmal für deine Hilfe bedanken. Du bist sehr sachkundig. Ich weiß das wirklich zu schätzen, hilfsbereite und wissensvermittelnde Menschen sind heutzutage recht selten. Ich werde auch deine Vorschläge bezüglich des CCI umsetzen und testen.

Ich war glücklicherweise nicht von dem Alpari-Fall betroffen, da ich meinen EA noch entwickle (er sollte handeln, während ich im Büro bin und ein zusätzliches Einkommen für mich und meine Familie generieren). Ich habe Alpari als Testplattform benutzt, weil sie das Demokonto für unbegrenzte Zeit offen gelassen haben. Ich habe vor ein paar Tagen ein Konto bei IG Markets eröffnet, aber ich habe noch kein Geld überwiesen. Ich muss den EA erst einmal zuverlässig und fehlerfrei zum Laufen bringen.

Alles Gute für Sie und weiterhin gute Arbeit!

Mit freundlichen Grüßen,

TFI