Einzelnen Beitrag anzeigen
  #32 (permalink)  
Alt 21.03.18
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von piptrade Beitrag anzeigen
Hallo, next user,

würde mich freuen, wenn Du auf meinen letzten comment antworten würdest.
Bin nicht abgesprungen.
Hatte gestern nur keine Zeit, daher erst jetzt eine Antwort.

=== === === === === === === === === === === ===

Zitat:
Zitat von piptrade Beitrag anzeigen
(Ohne den 2. "Block" "void updateSL(int ticket)" wird allerdings "updateSL" beim Kompellieren als error ausgewiesen.)
Was hast du denn jetzt schon wieder gemixt?
"void updateSL(int ticket)" ist die Funktion! "updateSL(...)" (MIT KLAMMERN) ist ein Funktionsaufruf. Wie eben im Code:
Code:
void updateSL(int ticket) // Funktion selbst
...
if(orderTicket1)
   updateSL(orderTicket1); // Funktionsaufruf
Also wo hast du plötzlich das lose "updateSL" her? Da gibts natürlich einen Error.

=== === === === === === === === === === === ===

Zitat:
Zitat von piptrade Beitrag anzeigen
Somit muß dieses "updateSL" also in einem 2. "Block" = "void updateSL(int ticket)" nochmals aufgegriffen werden
und - siehe da, - das o.a. error verschwindet, da es jetzt erkannt wird.
Auch bis dahin ist alles halbwegs verständlich.
Ich verstehe das wiederum nicht.
"updateSL" ... "nochmals aufgegriffen werden" ... HÄ?
Poste mal bitte den Code von deinem MIX!

=== === === === === === === === === === === ===

Zitat:
Zitat von piptrade Beitrag anzeigen
Nicht ganz verständlich hingegen ist, was der 2. "Block" bewirkt.
Nach den beiden Punkten zuvor, frage ich mich grad, was genau bei dir der zweite Block ist?

=== === === === === === === === === === === ===

Zitat:
Zitat von piptrade Beitrag anzeigen
Theoretisch sind jetzt alle Orders geschlossen und es sollte (irgendwann) eine neue, erste Order, gem. Strategie-Konditionen,
eröffnet werden. So z.B. eine BUY-Pos.. Auch das ist noch OK.
Damit gibt es jetzt wieder ein Ticket in der History (wie eigentlich immer), ein zweites Ticket ist geöffnet. Dies wiederum
wird unter OrderSelect erkannt, was zum Schließen der Position führen müßte. Kaum wäre die neue 1. Pos. geöffnet, würde sie auch
schon wieder gechlossen werden ?
Wo ist hier der Gedankenfehler ? - oder ist der Gedanke ggf. gar nicht so falsch ?
Ich verstehe, was du meinst. Aber in meinem Code geht das nicht, somit sollte es auch nicht zu einer direkten Schließung kommen, denn:
  • Als erstes wird ja abgefragt ob
    Code:
    if(orderTicket1 && orderTicket2)
    beide Variablen ein Ticket beinhalten (ungleich 0 sind).
  • Dann wird abgefragt, ob die zweite Order geschlossen ist.
    Code:
    if(OrderSelect(orderTicket2,SELECT_BY_TICKET,MODE_HISTORY))
    Diese Abfrage wird ja aber erst DANN passiert, wenn die erste Abfrage "true" ergibt.
  • Ist die zweite Order (erster Durchgang) geschlossen, kommt ja folgender Code zum Einsatz:
    Code:
    if(OrderType() == OP_BUY)
    {
       if(!OrderClose(orderTicket1,OrderLots(),Bid,3))
          Print("Order konnte nicht geschlossen werden, weil: ", GetLastError());
       else
          Print("BIN ZU !!!");
    }
    else if (OrderType() == OP_SELL)
    {
       if(!OrderClose(orderTicket1,OrderLots(),Ask,3))
          Print("Order konnte nicht geschlossen werden, weil: ", GetLastError());
       else
          Print("BIN ZU !!!");
    }
    
    orderTicket1 = 0;
    orderTicket2 = 0;
    Neben dem Schließen der ersten Order (erster Durchgang) werden hier ja ebend auch die beiden Ordervariablen auf "0" gesetzt.
    Wenn du jetzt eine neue Order1 hast und "orderTicket1" mit deren Ticket fütterst, so ist "orderTicket2" ja aber immer noch "0",
    was ein Betreten dieses Codeabschnittes durch Punkt 1 aber verhindert. Somit kann die Order1 (zweiter Durchgang) NICHT gelöscht werden!

=== === === === === === === === === === === ===

Zitat:
Zitat von piptrade Beitrag anzeigen
Und ein zweiter Gedanke:
Angenommen, die o.a. 1. Pos. verbleibt im Markt, sie wird selektiert, es wird festgestellt BUY oder SELL, so würde
bei Erreichen des Trail_Targets der Trail_SL übergeben werden.
Weiterhin angenommen, die 1. Pos. erreicht ihr Trail_Target NICHT und rutscht statt dessen in die Verlustzone, ---> jetzt wird
gehedged und eine 2. Pos. zusätzlich geöffnet.

Somit gibt es jetzt 2 geöffnete Tickets, wobei nur die 2. Pos. den Trail_SL erhalten soll.
Da im Code aber nur nach Ticket bzw. Tickets und anschließend nur nach BUY bzw. SELL unterschieden wird, müßte doch wenigstens auch die "openOrders == 2" angesprochen werden ? - Oder ? Wie sonst kann der Trail_SL an die richtige Pos. übergeben werden ?
Vielleicht habe ich dich falsch verstanden, aber du hast dazu doch ebend die beiden Ticker-Variablen, die individuell in
"updateSL" angesprochen werden.