Check - was habe ich falsch gemacht? - Seite 2

 
Natalya Smirnova #:

Da ich für binäre Optionen schreibe, habe ich die Dinge ein wenig anders gemacht:


Das wäre wahrscheinlich richtig?

Hier ist das Problem
Es gibt 2 Zeilen im Terminal für 1 Auftrag


Und für den Auftrag, der vom Expert Advisor erteilt wurde, Profit == 0

 
Natalya Smirnova #:

Ich glaube, das ist das Problem
Es gibt 2 Zeilen im Terminal für 1 Auftrag


Und bei dem Auftrag, der vom Expert Advisor erteilt wurde, ist der Gewinn == 0

Wo haben Sie einen Preis unter Null gefunden - wie kann man einen Screenshot zeigen?

Auf diesem Bildschirmfoto ist sie nicht zu sehen

 
Alexey Viktorov #:

Sie haben bereits Ratschläge für den gesamten Algorithmus erhalten, ich möchte mich nicht einmischen und habe mir Ihren Code und die gleichen Ratschläge noch nicht einmal angesehen... Aber das

fiel mir auf. Meine Frage ist also: Ist es nicht einfacher und lesbarer, den Schalteroperator

Ich denke, es ist einfacher zu lesen und zu verstehen. Vielleicht funktioniert es auch ein bisschen schneller.
Vielleicht anstelle der Funktion nur Array volume[n] verwenden?
Obwohl, wenn Sie für jede Codezeile bezahlen, sollten Sie es lieber dabei belassen :))
 
Nikolai Semko #:
Vielleicht kann man statt einer Funktion einfach ein Array volume[n] verwenden?
Aber wenn man für jede Codezeile bezahlt, ist es besser, es dabei zu belassen :))

Vielleicht... Ich stimme zu.

 
Renat Akhtyamov #:

Wo haben Sie einen Preis von weniger als Null gefunden, zeigen Sie mir einen Screenshot?

Auf diesem Bildschirmfoto ist nichts dergleichen zu sehen.


Ich versuche, OrderProfit() zu erhalten - es ergibt 0

hier ist eine Bestätigung gefunden Gewinn -0,01, wie es aus dieser zusätzlichen Linie kommt

 
Alexey Viktorov #:

Vielleicht... Ich stimme zu.

Ich werde nicht dafür bezahlt, sondern für mich selbst und meine Selbstentfaltung. Nach der Arbeit ist es interessant, eine Gralssuche zu machen
 

Ich verstehe den negativen Preis nicht, er ist immer noch nicht da.

Zählen Sie den Gesamtgewinn wie folgt (Auszug)

Was Sie brauchen, ist hervorgehoben

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
Ich werde nicht dafür bezahlt, sondern für mich selbst und meine Selbstentfaltung. Nach der Arbeit ist es interessant, eine Gralssuche durchzuführen

Kümmern Sie sich nicht um mich. Nur ich und Nikolay haben eine kleine Zusammenkunft...

Der Kern Ihres Problems: Da OrderProfit() im Forex-Brokerage keinen realen Wert angibt, müssen Sie eine positiv/negativ geschlossene Order als die Differenz zwischen dem Schlusskurs und dem Eröffnungskurs der Order definieren. Dies wurde Ihnen bereits mitgeteilt

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Prüfen Sie, was ich falsch gemacht habe?

Renat Akhtyamov, 2021.12.21 09:27

die Logik dahinter nicht verstehen

Wie kommt das?

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

Wie kann der Schlusskurs eines Auftrags kleiner als Null sein?

Die BUY-Order ist im Plus, wenn der Schlusskurs höher ist als der Eröffnungskurs.

Hier ist die Bedingung für einen Kauf plus (ohne Provisionen und Swap):

OrderClosePrice() > OrderOpenPrice()
Wenn es andersherum ist, ist das ein Minuspunkt.

 
Natalya Smirnova #:
Ich bekomme nicht so viel Geld für mich und meine Selbstentwicklung. Nach der Arbeit macht es Spaß, sich auf Gralssuche zu begeben.

Ja, Natalia - das war nur ein Meme aus der Serie "When you get paid for a line of code".

Das ist die Art von Humor, die Programmierer haben.


In Ihrem Fall brauchen Sie keine Funktion.

double SelectVolume(int n)

Sie müssen nur die Variablen Volume1 bilden ... Volume10-Variablen sollten zunächst als Array volume[10]
gebildet werden und sich dann über den Index n auf seine Elemente volume[n] beziehen.
Keine Sorge - fast jeder Programmierer hat das schon einmal erlebt.
Die Hauptsache ist, dass Sie wirklich gerne programmieren. Ich kann es spüren.
Dann werden Sie es weit bringen.

 
Ich stimme zu. Die Programmierung bleibt wirklich haften und ist sehr langfristig!!!
Nicht jeder hat am Ende einen Hagel....
Grund der Beschwerde: