Sie haben den offenen Preis der Kerze zu einer bestimmten Stunde. - Seite 2

 
Kane59:

Ok, ich eingefügt Ihren Code in meinem EA und es funktioniert perfekt! Ich lächelte, als ich sah, dass der EA so ausgeführt wurde, wie ich es wollte!!!

Vielen Dank sehr sehr ......

Es ist auf Backtest, weil der Markt geschlossen ist...

Aber es gibt ein Problem:

Ea Open korrekt Positionen, aber kaufen sind nie geschlossen und verkaufen sofort geschlossen, wenn geöffnet.

Wollen Sie nicht wissen, ob Ihre OrderClose() fehlgeschlagen ist und wenn ja, warum? Warum überprüfen Sie nicht den Rückgabewert der OrderClose()-Funktion und melden etwaige Fehler? Sie könnten feststellen, dass sowohl der Kauf als auch der Verkauf versuchen, sofort zu schließen, aber der Kauf OrderClose() fehlschlägt...

Was sind die Rückgabewerte der Funktion? Wie kann ich sie verwenden?

 

Auf der Registerkarte Journal tritt kein Fehler auf.


Ich werde Rückgabewerte platzieren. Kann ich das tun?

Close = CloseOrder(....)

if (Close < 1)

Print ("Close Failed", GetLastError())
 
Kane59:

Auf der Registerkarte Journal tritt kein Fehler auf.


Ich werde Rückgabewerte platzieren. Kann ich das tun?

Schließen hat eine andere Bedeutung ... OrderClose() gibt ein bool zurück ...

if ( ! OrderClose(....) )

Print ("Close Failed", GetLastError())
 
RaptorUK:

Close hat eine andere Bedeutung ... OrderClose() gibt ein bool zurück ...


Ok ok ich werde das tun, danke :)
 

Ich habe eingefügt:

if(OrdersTotal()>0)
            { 
               for(int i=OrdersTotal()-1; i>=0; i--)
               {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                  {
                     if(OrderMagicNumber() == MagicSH && OrderOpenTime() > iTime(Symbol(), PERIOD_H1, 1))
                     {
                        if(OrderType() == OP_BUY)
                        {
                           OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))
                              {
                                 Print ("Close Buy Failed", GetLastError());
                              }
                           }
                        }
                        if(OrderType() == OP_SELL)
                        {
                           OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE);
                           {
                              if(! OrderClose(OrderTicket(),LotsSH, ask, 300, CLR_NONE))
                              {
                                 Print ("Close Sell Failed", GetLastError());

Es wurde kein Fehler geschrieben.

 
Kane59:

Ich habe eingefügt:

Es wurde kein Fehler geschrieben.

Sie können denselben Auftrag nicht zweimal abschließen...

 OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE);            //  first attempt to close
    {
    if(! OrderClose(OrderTicket(),LotsSH, bid, 300, CLR_NONE))       //  second attempt to close
 

Ich habe das Problem gelöst, die Schleifenbedingungen waren nicht korrekt kodiert...

Nochmals vielen Dank.

 

Hallo zusammen,

ich habe den Code von WHRoeder verwendet, aber ich sehe mit der Zeit, dass EA nur ein "#define" als Referenz für die 4 verschiedenen Stunden nimmt.

    #define HR0900 23400    // 9*3600
    #define HR1500 54000
    #define HR1900 68400
    #define HR2300 59800

Ich habe einen anderen Weg versucht:

Ich baute eine Arraysize mit Int, die Kerze Referenz sind und es ist das gleiche, nur eine ist nicht die 4 Anzahl berücksichtigt, wie kann ich es lösen?

 
Kane59:

Ok, ich eingefügt Ihren Code in meinem EA und es funktioniert perfekt! Ich lächelte, wenn ich sehe, die EA ausführen, wie ich wollte!!!

Was haben Sie tun, umWHRoeders Code zu brechen?
 
Kane59:

. . . wie kann ich das Problem lösen?

Ich denke, Sie müssen Ihren Code zeigen.
Grund der Beschwerde: