Schließung von halben Parzellen. - Seite 15

 
Ich verwende dies? Koppeln Sie, dass mit "if(OpenOrdersThisPair(Symbol())>0)" oben, das sollte die EAs von jedem Paar getrennt halten? Ich verstehe allerdings, was Sie sagen. Irgendwelche Vorschläge, wie ich einen Handel, der halbiert wurde, von einem unterscheiden kann, der nicht halbiert wurde, indem ich OrderOpenTime() verwende? Ein kleiner Anstoß in die richtige Richtung...?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
Ich verwende dies? Koppeln Sie, dass mit "if(OpenOrdersThisPair(Symbol())>0)" oben, das sollte die EAs von jedem Paar getrennt halten?

Nein, nehmen wir an, Sie haben 2 EAs laufen und jeder hat eine Order offen, dann haben Sie eine 50:50 Chance, dass die letzte OrderSelected() von der OpenOrdersThisPair() Funktion die falsche ist ... die Funktion wird eine zurückgeben, aber Sie haben möglicherweise die falsche Order ausgewählt.
 
Verzeihen Sie mir, aber ich verstehe nicht, wie das wahr ist? Ich stelle sicher, dass die OrderSymbol()==Paar? So die relevanten EA, die an EURUSD angehängt ist, würde es abholen ist die orderselect auf EURUSD?
 
Könnte das die Lösung sein? Im Journal wird mir das gesagt? Was ist mit "OrderSymbol()==OrderSymbol()" lol? wenn es DIESES Symbol ist... nicht sicher, ob das verzögert ist oder nicht...

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

Was wäre, wenn ich die OrderCloseTime() und die OrderOpenTime() miteinander vergleichen würde?

Wäre das nicht der BESTE Weg, das zu tun, was ich will? Auf diese Weise kann ich so viele OrderClose-Funktionen hinzufügen, wie ich möchte? Schließlich könnte ich einfach den Handel in der Historie auswählen, der die gleiche OrderOpenTime() wie der aktuelle "OP_BUY" hatte, aber wenn die OrderCloseTime() > OrderOpenTime() ist, dann würde dies die OrderClose() stoppen und die Hälften kontinuierlich schließen!?

Kann mir bitte jemand sagen, dass ich hier etwas habe, womit ich arbeiten kann :( haha.

 
DomGilberto:
Verzeihen Sie mir, aber ich verstehe nicht, wie das stimmen kann? Ich stelle sicher, dass das OrderSymbol()==Paar? Der entsprechende EA, der an EURUSD angehängt ist, würde also die Orderselect auf EURUSD aufgreifen?

Sie wählen zuerst OrderSelect(), dann prüfen Sie ...

if(OrderSymbol()==pair) total++;

. . . und das ist in Ordnung für diese Funktion, wenn die Symbole nicht übereinstimmen, erhöhen Sie die Anzahl nicht . . . aber es bedeutet immer noch, dass die letzte Order, die Sie ausgewählt haben, nicht für das Symbol war, an dem Sie arbeiten.

Sie brauchen eine zusätzliche Schleife, um eine gültige Order zu finden und die Schleife zu verlassen ... dann haben Sie die richtige Order ausgewählt.

 
Ich bin verwirrt, ich habe meine EA auf 16 verschiedene Paare vorwärts getestet, gleichzeitig in dieser Woche und es hat nie die falsche ausgewählt :s? Übersehe ich etwas?
 
DomGilberto:
Ich bin verwirrt, ich habe meine EA auf 16 verschiedene Paare, gleichzeitig in dieser Woche vorwärts getestet und es hat nie die falsche ausgewählt :s? Übersehe ich etwas?
Soweit ich sehen kann, scheint es möglich zu sein, dass er die falsche Order auswählt, ich würde es beheben, um sicher zu sein, anstatt es zu riskieren. Überprüfen Sie Ihren Code, wenn es nicht passieren kann, dann brauchen Sie ihn nicht zu reparieren.
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

Wenn EA eine Order teilweise schließt, muss EA wissen, welche Order nicht wieder teilweise geschlossen werden soll, also holen Sie OrderOpenTime(), bevor Sie teilweise schließen. Programmieren Sie den EA so, dass er Orders für dieses Währungspaar mit der gleichen OrderOpenTime() nicht wieder teilweise schließt.

 
SDC:

Wenn EA eine Order teilweise schließt, muss EA wissen, welche Order nicht wieder teilweise geschlossen werden soll, also holen Sie OrderOpenTime(), bevor Sie teilweise schließen. Programmieren Sie den EA so, dass er Orders für dieses Währungspaar mit der gleichen OrderOpenTime() nicht mehr teilweise schließt.


Ja, ich fange an, es jetzt zu bekommen - ich nehme an, ich muss mit Trades vergleichen, die in der Geschichte auf dem gleichen OrderSymbol() geschlossen haben?

Das Problem, das ich aber habe; Ich versuche, teilweise schließen die gleichen "OP_BUY" oder "OP_SELL" bis zu 4 mal zu verschiedenen Preisen... Ich denke, die Frage, die ich stellen sollte, ist, ob ich einen Weg finden kann, bei dem ich eine Regel habe, dass ALLE partiellen Abschlüsse (beliebige Lots und Preise für EINEN bestimmten Handel) nur EINMAL zu ihren vordefinierten "OrderClose()" Parametern geschlossen werden...

Die Art und Weise, wie ich es jetzt mit dem Vergleich der OrderOpenTime() mache, wird im Wesentlichen nur einmal funktionieren und wird jede andere Art von OrderClose() -Funktion davon abhalten, überhaupt zu passieren... Ich möchte einen Weg finden, wo ich eine Regel auf 4 OrderClose() Funktionen anwenden kann... (wenn das Sinn macht?)

Ich weiß, dass die Leute vorschlagen, 4 Aufträge zu öffnen, aber ohne zu sehr in die Tiefe zu gehen, ist es weniger effizient für mich, es auf diese Weise zu tun.
Grund der Beschwerde: