Nützliche Funktionen von KimIV - Seite 22

 
rid:

Jetzt habe ich eine Funktion in den Kommentar eingefügt - Comment (isCloseLastPosByStop());

Testen Sie im Testgerät? Wenn im Tester, dann kann es sicherlich eine Situation geben, in der zwei oder mehr zuletzt geschlossene Positionen nicht eine unterschiedliche OrderCloseTime() haben werden.

 

Ich verstehe. Wenn mehrere Positionen im Prüfgerät gleichzeitig geschlossen werden (entsprechend dem Signal), dann kann die Funktion isCloseLastPosByStop() "glitch" und nicht funktionieren ? Aber online scheint es zu funktionieren.

Ja, - ich habe es jetzt im Tester überprüft, wenn ich mit einer Position arbeite. Alles funktioniert einwandfrei! Die Funktion zeigt im Kommentar (isCloseLastPosByStop()) korrekt das Schließen durch Stop Loss an und ändert das Flag rechtzeitig, wenn aus einem anderen Grund geschlossen wird.

 
rid писал (а):
Ich verstehe. Wenn mehrere Positionen im Prüfgerät gleichzeitig geschlossen werden, kann die Funktion isCloseLastPosByStop() "glitch" und nicht funktionieren?

Ja, denn isCloseLastPosByStop() identifiziert die letzte geschlossene Position anhand der maximalen Schließzeit, die in Sekunden gemessen wird. Daher muss zwischen dem Schließen mehrerer Positionen mehr als eine Sekunde vergehen. Im Prüfgerät kann weniger als eine Sekunde vergehen.

rid schrieb:
Und online funktioniert es offenbar auch.
Auch im Onlinemodus kann es zu Fehlern kommen, allerdings viel seltener als im Testgerät. Selbst der automatische Handelsroboter benötigt einige Zeit, um Positionen zu schließen. Wenn Sie eine Idee haben, wie man die letzte geschlossene Position zuverlässiger identifizieren kann, werde ich diese dankbar annehmen und versuchen, die Funktion zu ändern.
 

Guten Tag, KimIV. Ich brauche Ihren Rat oder vielmehr Ihre Hilfe. Die Funktion start() muss nicht tickweise arbeiten, sondern jede Sekunde, unabhängig davon, ob ein neuer Tick gekommen ist oder nicht. So habe ich versucht, diese Aufgabe umzusetzen:

int start()
  {
   if(first==true)return(0); 
   else 
   {   
      for(int j=0;j<10;j++)
         {
         RefreshRates();//обновляем котировки 

         //Код эксперта

         first=true;
         Sleep(1000);//задержка в 1 секунду
         j=0;
         }
   }
   return(0);
  }
 
StatBars писал (а):
Ich möchte, dass die Funktion start() jede Sekunde ausgeführt wird, unabhängig davon, ob ein neuer Tick eingetroffen ist oder nicht.

Ich habe es so gemacht:

void start() {
  while (IsExpertEnabled() && !IsStopped()) {
    // код .............
    Sleep(1000);
  }
}
 

Vielen Dank!!!! Können Sie mir trotzdem sagen, ob mein Code überhaupt funktioniert? Nicht im Testgerät... Funktioniert es im Tester...? Oder muss ich...

Void start()...

 
StatBars писал (а):
Können Sie mir auch sagen, ob mein Code überhaupt funktioniert?

Ich weiß nicht... Ich habe nicht nachgesehen...

StatBars schrieb (a):
Nichtim Tester... Wird es im wirklichen Leben funktionieren...?

Im Testgerät funktionieren alle Schleifen nicht. Nur die auf Zecken funktionieren...

Im Internet sollte Ihr Code funktionieren. Zumindest scheint es logisch zu funktionieren...

StatBars:

Oder Sie müssen...

Void start()...

Nein, das ist nicht nötig. Warum sollte man eine typisierte Funktion deklarieren, wenn sie keinen Wert zurückgibt, und wenn doch, wird dieser Wert in keiner Weise verwendet?
 

Ich verstehe. Ich danke Ihnen nochmals.

 
KimIV:
. Wenn Sie Ideen haben, wie man die letzte geschlossene Position zuverlässiger identifizieren kann, werde ich diese dankbar annehmen und versuchen, die Funktion neu zu gestalten.

Vielen Dank für Ihr freundliches Angebot. Leider kommen mir (leider...) nicht oft gute Ideen in den Sinn! Vor nicht allzu langer Zeit ist mir zum Beispiel aufgefallen, dass Ihre Funktionen fast keinen Gebrauch von der "Komponente" OrderComment machen.

Aber vielleicht bringt Sie die Anwendung dieser Funktion auf neue Ideen (zur Freude aller Anwesenden).

Zum Beispiel, wenn (OrderComment()==" [sl]" && .... - könnte das Spektrum der von Ihnen ausgeführten Aufgaben erweitern!

//---------------------------------------------------------------------------------

"Mehr Funktionen, - gut und anders!" (c)

 
rid:
KimIV:
. Wenn Sie Ideen haben, wie man die letzte geschlossene Position zuverlässiger identifizieren kann, werde ich diese dankbar annehmen und versuchen, die Funktion zu überarbeiten.

Zum Beispiel, wenn(OrderComment()==" [sl]" && .... - könnte das Spektrum der zu erledigenden Aufgaben erweitern!

rid, Sie haben eine Möglichkeit vorgeschlagen, den durch den Eintrag in den Auftragskommentaren ausgelösten Stopp zu identifizieren. Danke, aber es kann sein, dass es neben [sl] noch andere Einträge in den Kommentaren gibt.

Ich löse das gleiche Problem, indem ich den Schlusskurs mit dem Stoppkurs vergleiche.

Grund der Beschwerde: