Hilfe bei der Codierung - Seite 422

 
Mastercash:
Ich habe den Parameter use moneymanagement auf false.... gesetzt, aber bei den Lots-Parametern geht es nicht um die Lots, sondern um die Anzahl der offenen Orders. ich möchte nicht, dass die Ea mehr als 5 Orders......zu einem bestimmten Zeitpunkt öffnet, deshalb habe ich den Parameter NumberofTrades auf 5 gesetzt, bei den Input-Parametern, aber sie wird mich immer noch herausfordern und mehr als 5 Orders annehmen und damit mein Moneymanagement bedrohen!

Mastercash

Dies ist das Ergebnis eines Tests:

Wie Sie sehen können, hat es nie mehr als 5 Aufträge für das gleiche Symbol und die gleiche magische Zahl zur gleichen Zeit geöffnet

Dateien:
5_test.gif  87 kb
 

ok, ich kann sehen...Ich möchte nur nicht, dass es mehr als 5 Aufträge für verschiedene Symbole nimmt....e.g, sagen wir, es gibt Handelssignale von 10 Symbolen innerhalb der letzten 20 Minuten....the ea sollte nur die ersten 5 Handelssignale nehmen, dann, wenn einer dieser fünf um zu schließen, kann er eine weitere nehmen, um sicherzustellen, dass die aktuelle laufende Aufträge über verschiedene Symbol nicht überschreiten 5.but es halten auf 5 überschreiten, egal.....Sometimes es nimmt 5 gleiche Aufträge aus dem gleichen Symbol, das auch falsch ist.

mladen:
Mastercash

Dies ist ein Ergebnis des Tests:

Wie Sie sehen können, hat es nie mehr als 5 Aufträge für dasselbe Symbol und dieselbe magische Zahl zur gleichen Zeit eröffnet.
 
Mastercash:
ok, ich kann sehen...Ich will nur nicht, dass es mehr als 5 Aufträge für verschiedene Symbole nimmt....z.B., sagen wir, es gibt Handelssignale von 10 Symbolen innerhalb der letzten 20 Minuten....der EA sollte nur die ersten 5 Handelssignale nehmen, dann, wenn einer dieser fünf Aufträge schließen, kann er einen weiteren nehmen, um sicherzustellen, dass die aktuellen laufenden Aufträge über verschiedene Symbole nicht 5 überschreiten.Aber es halten auf 5 zu überschreiten, egal.....Manchmal nimmt es 5 gleiche Aufträge aus dem gleichen Symbol, das auch falsch ist.

Wenn Sie wollen, dass der EA maximal 5 Aufträge für alle Symbole hat, 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 kann er nur die von diesem EA auf allen Symbolen eröffneten Aufträge zählen).

 

Hallo Mladen

ich habe einen schönen Indi, der nicht aktualisiert wird, wenn er auf einen höheren TF gesetzt wird.

Wie Sie auf dem Chart sehen können, wenn ich nicht bearbeiten, bleibt es stecken. Könntest du helfen, dieses Problem zu lösen?

Ich füge den Indikator und ein Bildschirmfoto hinzu

 
wolfsch:
Hallo Mladen

Ich habe eine schöne indi, die nicht erfrischend ist, wenn auf einem höheren TF gesetzt.

Wie Sie auf dem Chart sehen können, wenn ich nicht bearbeiten, es bleibt stecken. Könnten Sie helfen, dieses Problem zu lösen?

ich füge den Indikator und einen Screenshot hinzu

wolfsch

Das kann nur im visuellen Backtest passieren (das ist ein Fehler, den Metatrader seit mindestens 7-8 Monaten nicht korrigiert hat, und es ist ein Fehler von Metatrader, nicht des Indikators) und es passiert bei allen Multi-Time-Frame-Indikatoren im visuellen Backtest

Bei normalem Gebrauch funktioniert der Indikator gut (ich habe ihn gerade vorsichtshalber getestet, und alles funktioniert so, wie es auf normalen Charts funktionieren soll)

 

Danke, ich werde daran arbeiten und mich bei Ihnen melden......

mladen:
Wenn Sie möchten, dass der EA maximal 5 Aufträge für alle Symbole hat, 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)
 
mladen:
TFI

Puffer 3 ist der richtige (das ist der "Trend"-Puffer, der die Werte 1 für Aufwärtsneigung und -1 für Abwärtsneigung hat). Sie verwenden die Verschiebungen 1 und 2, daher testet er den 1. geschlossenen Balken.

Der Kaufteil des Codes ist in Ordnung.

Sie haben Folgendes ausgelassen

if(trendc!=trendp)

aus dem Verkaufsteil Ameise, die Ihnen ein Problem bereiten könnte

Hallo Mladen,

vielen Dank für deine Hilfe. Ich habe den Code entsprechend

Ich habe den Code entsprechend Deines Vorschlags geändert, es läuft reibungslos, auch die Pip-Berechnung ist in Ordnung.

Aber jetzt eröffnet er keine Short Trades mehr (könnte auch eine Strategie sein ;-)).

Es werden nur noch Long-Positionen geschlossen.

Könnten Sie bitte noch einmal einen Rat geben?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//| BUY |

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

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

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

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

//| SELL |

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

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

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Bitte sehen Sie den beigefügten Screenshot für Details.

Vielen Dank im Voraus!

Mit freundlichen Grüßen,

TFI

Dateien:
backtest.jpg  163 kb
 
tfi_markets:
Hallo Mladen,

vielen Dank für Ihre Hilfe. Ich habe den Code entsprechend

Ich habe den Code nach Ihrem Vorschlag geändert, es läuft reibungslos, auch die Pip-Berechnung ist in Ordnung.

Aber jetzt eröffnet er keine Short Trades mehr (könnte auch eine Strategie sein ;-)).

Es werden nur noch Long-Positionen geschlossen.

Könnten Sie bitte noch einmal einen Rat geben?

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

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

//| BUY |

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

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

if(OrderType()==OP_BUY && OP_BUY<maxlongtrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==1 && (CCIFilter<80)) // code for buy

OpenBuy();

return(0);

}

openedOrders++;

}

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

//| SELL |

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

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

if(OrderType()==OP_SELL && OP_SELL<maxshorttrades) break; // Check Traded Positions.

{

if(trendc!=trendp)

{

if(trendc==-1 && (CCIFilter>80)) // code for sell

OpenSell();

return(0);

}

openedOrders++;

}

}

Bitte sehen Sie den beigefügten Screenshot für Details.

Vielen Dank im Voraus!

Mit freundlichen Grüßen,

TFI

TFI

Versuchen Sie etwas in der Art :

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

}

 

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:

Mastercash:
Vielen Dank, ich werde daran arbeiten und mich bei Ihnen melden......
Dateien:
apcorrimage.png  39 kb
 
Mastercash:
mladen, ich habe die Änderung in Nummer 144 vorgenommen und die magische Zahl "MagicNumber" über die Symbole hinweg vereinheitlicht. .... nimmt nun maximal 5 Trades auf einmal an, aber es wiederholt nun Trades für das gleiche 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 des Live-Auftrags an, der auf diese Weise ausgeführt wurde:

Das hängt nicht von diesem Codeteil ab

Sie müssen im Rest des Codes eine Prüfung einfügen, um zu verhindern, dass ein Auftrag für denselben Balken und dasselbe Symbol geöffnet wird.