MMA_Breakout_strategy_volume I (ohne MM oder MF) - codiert von WhooDoo22 - Seite 3

 
Warum korrigieren Sie nicht den Code, um den es in diesem Thread geht, bevor Sie zu einer anderen Version übergehen... Sie würden so viel lernen, wenn Sie das täten.
 
Simon,


Ein weiterer Punkt...

RE: Es ist mir wichtig zu betonen, dass meine Codierungsmethode die schnellste war, die ich zusammenflicken konnte, um meine Gedanken über die Handelsfähigkeit und den Wert von Band I/II zu bestätigen. Ich habe in meinem Leben nicht genug Zeit, um alles beim ersten Mal "richtig" zu programmieren. Normalerweise beginne ich Projekte in Phasen. Beispiel: Phase 1. Alle funktionalen Grundlagen abdecken, Phase 2. Aufräumen des Codes, 3. Verschönerung der externen visuellen Seite des EA. Derzeit arbeite ich noch an Phase 1. Es steckt einfach viel mehr in diesem EA als ein typischer Send-Order, Close-Order EA. Viel Zeit und Gedanken wurden in den Test gesteckt. Der Test wird nach der Entwicklung von Band I bestanden werden. Ich bin zuversichtlich, dass Sie die Einzigartigkeit dieses EAs erkennen werden.

In diesem Sinne erwäge ich eine andere Option, um den Ball für die erste OrderSend()-Funktion"ins Rollen zu bringen". Ich bin mir noch nicht sicher, welche Richtung ich einschlagen werde. Letztendlich werde ich die Bedingung "if(OrdersHistoryTotal()==0){" vollständig durch eine zuverlässige Bedingung ersetzen. Sie haben einen wichtigen Punkt angesprochen, über den ich nachdenken sollte. Ich weiß Ihre Ermutigung zu schätzen.

Ich danke Ihnen.

 
RaptorUK:

Was ist variabel , und wie kann es eine Ticketnummer sein, wenn man das damit macht?

Ich habe im Moment 4 Live-Trades, deren Ticketnummern nicht fortlaufend sind...

Gleichheitszeichen, sollte die Variable etwas wert sein, aber was ist das? Ich glaube, ich weiß, was Sie meinen, wie ist es möglich, ++ ist eine gute Frage
 
WhooDoo22:
Simon,


Ein weiterer Punkt . . .

RE: Es ist mir wichtig zu betonen, dass meine Kodierungsmethode die schnellste war, mit der ich alles zusammenfügen konnte, um meine Gedanken über die Handelsfähigkeit und den Wert von Band I/II zu bestätigen. Ich habe nicht genug Zeit in meinem Leben, um alles beim ersten Mal "richtig" zu codieren.

Sie müssen zumindest dafür sorgen, dass es funktional korrekt funktioniert ... davon ist dieser Code weit, weit entfernt. Ich habe gesagt, Sie müssen ... . das ist falsch, Sie haben die Wahl, Sie können Ihren Code weiter schreiben und GBs von Fehlern haben, wenn Sie den ST laufen lassen und einen Code haben, der auf Live oder Demo nicht funktioniert . . wenn Sie wollen.
 

Simon,

Du musst zumindest...

RE: Ich mache mir keine Gedanken darüber, wie lange es dauert, ein Ziel zu erreichen, ich mache einfach weiter, bis das Projekt abgeschlossen ist. Meine Wahl wäre es, keine GBs an Fehlern zu haben :) Ich höre mir lieber die konstruktive Kritik meiner Programmierkollegen an und reagiere darauf, indem ich Lösungen für die aufgezeigten Programmierprobleme anbiete. Diese Lösungen könnten möglicherweise zu weniger Fehlern in Band I/II führen.

Ich danke Ihnen.

 
WhooDoo22:

Simon,

Du musst zumindest...

RE: Ich mache mir keine Gedanken darüber, wie lange es dauert, ein Ziel zu erreichen, ich mache einfach weiter, bis das Projekt abgeschlossen ist. Meine Wahl wäre, keine GBs von Fehlern zu haben :) Ich höre mir lieber die konstruktive Kritik meiner Programmierkollegen an und reagiere darauf, indem ich Lösungen für die aufgezeigten Programmierprobleme anbiete. Diese Lösungen könnten möglicherweise zu weniger Fehlern in Band I/II führen.

ich danke Ihnen.



Was RaptorUK dort gab, war und ist konstruktive Kritik und gegenseitige Lösungen für Ihre Codes
 

Simon, ich werde eine boolesche Variable verwenden, um dieses Problem zu lösen. Diese boolesche Bedingung ist eine allgemeine Lösung, die das Problem löst, bis ich Phase 2 erreiche. Dann kann ich dem Sendesignal erster Ordnung eine eindeutige Bedingung geben, die meinen Kodierungsstil widerspiegelt. Ich danke Ihnen für Ihren Beitrag.

 
WhooDoo22:

Simon, ich werde eine boolesche Variable verwenden, um dieses Problem zu lösen. Diese boolesche Bedingung ist eine allgemeine Lösung, die das Problem löst, bis ich Phase 2 erreiche. Dann kann ich dem Sendesignal erster Ordnung eine eindeutige Bedingung geben, die meinen Kodierungsstil widerspiegelt. Ich danke Ihnen für Ihren Beitrag.

Nein, wird es nicht ... Ihre Kodierung zeigt, dass Sie nicht verstehen, wenn Sie nicht verstehen, können Sie es nicht beheben.
 

Simon, ich glaube, ich habe verstanden, was ist es, von dem Sie glauben, dass ich es nicht verstehe?

Bis jetzt haben wir zwei wichtige Dinge besprochen:

1. Beheben Sie die Codeblöcke für den Notfall.

2. Entfernen Sie die aktuelle Bedingung "if (OrdersHistoryTotal()==0{" und ersetzen Sie die Bedingung durch eine andere Bedingung (meine aktuelle Lösung ist es, die aktuelle Bedingung durch eine boolesche Bedingung zu ersetzen, um die Auftragsenden zu starten).

//example

if(x==false){OrderSend()...; x=true;}

/* now, x is true and the code block will not execute again. Of course, I would add code to save variables and if connection 
   is lost from the terminal server, all variables are saved. Simple.
   I understand the code is incorrect, but I wrote this for you to understand its concept, not a completely typed up code. */

Diese Idee, Variablen zu speichern, ist eine gängige Lösung für Serverunterbrechungen und wurde von ubzen vorgeschlagen. Ich möchte mich bei ihm für diese Idee bedanken.

Ich danke Ihnen.

 
WhooDoo22:

Simon, ich glaube, ich habe es verstanden. Was ist es, das ich Ihrer Meinung nach nicht verstehe?

Die erste Zeile in Ihrer start()-Funktion ist diese...

   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

. . . welche Ticketnummer wird ausgewählt? Nun, Ticket wurde ohne eine Anfangsvariable deklariert, so dass es 0 sein wird, also versuchen Sie sofort, Ticket 0 auszuwählen, was zu einem Fehler führt, wenn Sie den Rückgabewert von OrderSend() überprüfen würden, würden Sie sehen, dass es wahrscheinlich Fehler 4108 ERR_INVALID_TICKET ist. . wenn Sie wüssten, wie man OrderSend() richtig verwendet, warum würden Sie das tun?


Wenn Sie OrderHistoryTotal() verstanden hätten, hätten Sie es nicht so verwendet, wie Sie es getan haben, und Sie hätten nicht gesagt, dass es ... " nur die Handelshistorie der eindeutigen Ticketvariable durchsucht".

Wenn Sie verstanden hätten, wie { } Klammern funktionieren, hätten Sie keine unnötigen Klammern hinzugefügt. . sie fügen nichts hinzu, sie machen Ihren Code nicht übersichtlicher oder leichter lesbar.

if(OrderType()==OP_BUY)                                                                     
      {
         {
         OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue
         }
      }

kann durch ... ersetzt werden.

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

Die Verwendung der Variable i als Ticketnummer zeigt, dass Sie nicht verstehen, wie Ticketnummern außerhalb des Strategy Testers funktionieren, d.h. in einem Demo- oder Live-Konto ...


Sie prüfen nicht, ob Ihre Handelsfunktionen funktioniert haben oder nicht. In Ihrem Code ist das kritisch, weil Sie Folgendes verwenden.

ticket = OrderSend(Symbol(),OP_BUY,0.05,Ask,30,0,0,"",0,0,Blue);

. . . wenn OrderSend() fehlschlägt, istTicket = -1. Wenn Sie dann später in Ihrem Code versuchen, diese Variable zu verwenden, um eine Order nach Ticketnummer -1 auszuwählen, wird dies natürlich fehlschlagen. . .