Abenteuer eines Neulings - Seite 11

 
niko:
Danke CB, das hätte ich bemerken müssen, also war der Fehler am Ende richtig (130).

Funktioniert es denn?


CB

 

Hey CB, die Trades laufen, aber ich habe die Trades noch nicht im Detail durchgesehen, um zu sehen, ob die Logik korrekt befolgt wird (auf den ersten Blick scheint es so zu sein). Das ist also der Zeitpunkt, an dem ich ein großes 'DANKE!!!!' sage :-)

Es ist noch ein weiter Weg, bis die Strategie gewinnbringend läuft, da der Code nur ein Weg ist, um die Trades zu automatisieren, ich muss noch ein wenig an meiner Seite arbeiten, um die Strategie selbst zu verfeinern. Es sieht so aus, als ob sich die ganze Mühe gelohnt hat, aber ich bin immer noch sehr verwirrt von der Codierung. Ich werde anfangen, selbst kleine Codes zu erstellen, um Kommentare auf meinen Charts anzuzeigen, und mit diesen herumspielen, um mir zu helfen, Funktionen und andere Dinge zu lernen, die Sie verwendet haben. Ich bin Ihnen sehr dankbar für Ihre Hilfe bei diesem CB und für Ihre Geduld, da ich immer wieder die gleichen Fragen stellte und die gleichen Fehler machte. Vielen Dank dafür!

 
CB, das hat mich an etwas erinnert. Wie könnte ich eine Änderung an Ihrem Code vornehmen, damit 2 oder maximal 3 Trades in dieselbe Richtung geöffnet werden können (dies ist wie eine Version 2 Ihres Codes). Wir haben den OP_BUY/OP_SELL für den alten Code verwendet, also müssen wir ein paar Dinge ändern. Wenn Sie mir sagen, was zu tun ist (z. B. eine Funktion zu erstellen, die dies tut...), kann ich versuchen, es zu kodieren, und es Ihnen zur Überprüfung zurückschicken. Dieser Weg ist besser, als wenn Sie es selbst programmieren, da ich Ihrer Logik folgen und Teile des Programmierens lernen kann. Was meinen Sie dazu? (Ich kann mir vorstellen, dass wir eine externe Variable haben, in der wir festlegen, wie viele Trades in dieselbe Richtung erlaubt sind, dann machen wir eine Funktion, um die Käufe zu berechnen, eine andere, um die Verkäufe zu berechnen, dann rufen wir diese beiden Funktionen in start() auf und überprüfen die externe Variable auch dort... so ähnlich?
 

Das ist ganz einfach.

Legen Sie einen Parameter fest, der die maximale Anzahl der offenen Aufträge angibt. Erweitern Sie ihn, wenn Sie ihn häufig ändern müssen.

Dann implementieren Sie, indem Sie nur die Funktion fnOrderDuplicate() ändern - die Funktion start() sollten Sie nicht ändern müssen. Dies wird dazu beitragen, die bestehende Architektur der Anwendung beizubehalten.


CB

 
Mann, ich wünschte, ich könnte eines Tages sagen: "Das wird einfach!". Okay, ich werde es tun und sehen, was passiert! danke!
 

Hey CB, ich verbrachte wie 2 Stunden jetzt versuchen zu tun, was Sie in der obigen Post gefragt, schaute auf andere Codes, Dokumentation, und kein Fortschritt (ich weiß einfach nicht, was zu tun ist). Mann, ich bleibe immer so stecken, es ist so ärgerlich, selbst bei den einfachsten Dingen! Es muss einen Weg geben, um einfacher zu lernen, als wie ich es im Moment mache, da ich das Gefühl habe, dass ich keine Fortschritte beim Lernen mache, ihr Jungs schreibt freundlicherweise den ganzen Code für mich


bool fnOrderDuplicate()
 {
  iDuplicateOrders = 0;                                  //setting orderdup to zero
  iOrders = OrdersTotal()-1;                             //iOrders returns market orders count - 1. So if zero orders, we get -1
  for (int i= iOrders; i>=0; i--)                         // the loop to cycle through total orders
   {
    OrderSelect( i, SELECT_BY_POS, MODE_TRADES);            //select order for function
    if ((OrderType() != OP_BUY) && (OrderType() != OP_SELL))      //if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
     sCurrentOrderType = "OTHER";
    if (OrderType() == OP_BUY)                           //if order=buy, sCurrent OrderType = buy
     sCurrentOrderType = "BUY";                          //***7Jul09 ';' was missing at end of line
    if (OrderType() == OP_SELL)                          //***7Jul09: the end ')' was missing.
     sCurrentOrderType = "SELL";                         //if orderfound = sell, sCurrentOrder= sell
    if ((OrderSymbol() == Symbol()) && ( sCurrentOrderType == sSignal))  //if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules) 
        iDuplicateOrders++;                              //iDuplicateOrders is added 1
   }
  if ( iDuplicateOrders == 0)                             //if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.
   return(false);
  return(true);
 }
 
hey CB, jede Hilfe auf den oben genannten Punkt, wie man den Code zu beheben, um eine mehrere Trades in 1 Richtung zu tun?
 
niko:
Hallo CB, kann mir jemand helfen, wie ich den Code so ändern kann, dass ich mehrere Trades in eine Richtung machen kann?

Ändern Sie einfach: if (iDuplicateOrders == 0) in: if (iDuplicateOrders<= iMaxDuplicateOrders)

CB

 

Hey CB, ich danke Ihnen für diese. Mit dieser Option kann ich nicht regulieren, wie viele offene Aufträge in 1 Richtung erlaubt sind (sagen wir, ich mache extern iMaxDuplicateOrders = 4;) die ea wird 4 Shorts laufen, und nicht verteilen die Parameter gleichmäßig (zB: 2 Shorts max, 2 Longs max). Soll ich versuchen, ein Duplikat von bool fnOrderDuplicate zu erstellen (z.B.: bool fnOrderDuplicateBuys und bool fnOrderDuplicateSells) und dann jeweils in bool fnShouldWeTrade darauf verweisen. Meiner Meinung nach könnte das funktionieren, was meinen Sie?

 
niko:

Hey CB, ich danke Ihnen für diese. Mit dieser Option kann ich nicht regulieren, wie viele offene Aufträge in 1 Richtung erlaubt sind (sagen wir, ich mache extern iMaxDuplicateOrders = 4;) die ea wird 4 Shorts laufen, und nicht verteilen die Parameter gleichmäßig (zB: 2 Shorts max, 2 Longs max). Soll ich versuchen, ein Duplikat von bool fnOrderDuplicate zu erstellen (z.B.: bool fnOrderDuplicateBuys und bool fnOrderDuplicateSells) und dann jeweils in bool fnShouldWeTrade darauf verweisen. Meiner Meinung nach könnte das funktionieren, was meinen Sie dazu?


Wenn man iMaxDuplicateOrders = 4 setzt, bedeutet das, dass es maximal 4 Aufträge in jeder Richtung geben wird, da wir die Richtung prüfen, bevor wir den Zähler erhöhen.


Ehre, wem Ehre gebührt. In diesem Fall ist das Gegenteil der Fall. Entschuldigung - ich war schon enttäuscht, dass Sie die Änderung nicht selbst vorgenommen haben. Alles, was getan werden musste, war, den Grenzwert von einem einzelnen Auftrag in eine Variable zu ändern.


Aus den Kommentaren geht hervor, dass Sie den Code einfach in Prosa wiedergeben, ohne die Logik wirklich zu verstehen.


CB

Grund der Beschwerde: