Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1058

 
m8akca:

Kann dieser Algorithmus programmiert werden. Mein Kopf kocht schon die dritte Woche!

Hallo, ich versuche, den Algorithmus zu programmieren, es funktioniert, aber er öffnet keine Verkaufsorder, wenn er Preise vergleicht. Ich arbeite nun schon die dritte Woche mit diesem Algorithmus! Ich werde Ihnen meinen Code nicht schicken, da ich versucht habe, ihn zu schreiben, aber er funktioniert einfach nicht. Bitte sagen Sie mir, ob es möglich ist, dieses Programm zu implementieren? Und wenn es Ihnen nichts ausmacht, senden Sie mir bitte den Code wird sehr dankbar sein!

Das Programm: Wir eröffnen einen Kaufauftrag, vergleichen den Eröffnungskurs des Kaufauftrags mit dem Geldkurs und eröffnen , wenn der Eröffnungskurs des Kaufauftrags gleich dem Geldkurs ist, einen Verkaufsauftrag zum Eröffnungskurs des Kaufauftrags.

Man kann fast alles programmieren, und diesen Algorithmus erst recht.

Es gibt nur ein Problem in dem Algorithmus (fett gedruckt), es kann passieren, dass er für eine sehr lange Zeit (mehrere Jahre) nicht gleich ist. Deshalb sollten wir in diesem Fall die Prüfbedingung nicht gleich ==, sondern gleich oder größer als => setzen. Gleichzeitig sollten wir nach der Eröffnung eines Auftrags die Eröffnung weiterer Aufträge verbieten, was den Kopf zum Kochen bringt.

 
AlexeyVik:

Fast alles kann programmiert werden, und dieser Algorithmus erst recht.

Es gibt nur ein Problem mit dem Algorithmus (fett hervorgehoben): Es kann vorkommen, dass er für eine sehr lange Zeit (vielleicht mehrere Jahre) nicht gleich ist. Deshalb sollten wir in diesem Fall die Prüfbedingung nicht gleich ==, sondern gleich oder größer als => setzen. Gleichzeitig sollten wir nach der Eröffnung eines Auftrags die Eröffnung weiterer Aufträge verbieten, was den Kopf zum Kochen bringt.

Das ist der Punkt ist, dass ich genaue Vergleich ==, nicht wie viele Jahre zu warten, warum, wenn ich zum Beispiel in meinem Kommentar den Preis der Bestellung Buy und Preis Bid und diese Variablen zu einigen Momenten übereinstimmen, aber der Vergleich Bedingung == ist nicht erfüllt: Ist es MÖGLICH, diesen Algorithmus zu programmieren? Mein Kopf kocht schon die dritte Woche!
 

das Archiv wurde abgearbeitet. Können Sie mir das bitte sagen?

1. Ist es möglich, mehr als einen EA in denselben Chart aufzunehmen?

2. oder Berater+Skript?

3. Ist es notwendig, auf dem Diagramm des Instruments genau die TF, die von der Expert Advisor verwendet wird? wenn ja, was wird sonst passieren?

4. Muss der vom Expert Advisor verwendete Indikator in das Instrumentenfenster eingefügt werden? Wenn ja, was geschieht sonst?

5. Wenn der EA mehrere Währungen verwendet, ist es notwendig, alle Fenster mit diesen Währungspaaren zu öffnen?

 
m8akca:
Der Punkt ist, dass ich einen exakten Vergleich == brauche, nicht wie viele Jahre ich warten muss, warum, wenn ich z.B. im Kommentar den Preis der Bestellung Buy und den Preis Bid ausgebe und diese Variablen zu einigen Zeitpunkten übereinstimmen, aber die Vergleichsbedingung == nicht erfüllt ist: Ist es MÖGLICH, diesen Algorithmus zu programmieren? Mein Kopf kocht schon die dritte Woche!
Denn der Preis kann _Point mehr oder weniger sein und ist nicht mehr gleich.
 

Könnten Sie bitte eine Funktion vorschlagen, die den Betrag der letzten Serie von Verlustgeschäften in einer Reihe zählt. Wenn TakeProfit ausgelöst wird, wird der Zähler auf Null zurückgesetzt.

 

Hallo zusammen, bitte sagen Sie mir, ob es ein Netzwerk gibt, oder ob jemand Zeit hat, einen Ratgeber für die folgenden Parameter zu schreiben. 1) geben Sie die Richtung des Kaufs (Verkaufs) und den Preis dieses Kaufs (Verkaufs) an. 2) Ich gebe die Größe des Anschlags an. 3) Ich gebe zum Beispiel drei Preisniveaus an, bei denen ein Teil der Losgröße geschlossen werden soll. Zum Beispiel setze ich den Auftrag zum Verkauf bei $ 1, in den Parametern des Beraters gibt an, wie viel % (oder wie viel Volumen) schließen bei 1,2, wie viel % (oder wie viel Volumen) bei 1,3 und der Rest bei 1,4.

 
ara66676:
Sagen wir, es war wichtig für mich, die Zeit zu bestimmen, 10 Sekunden vor dem Schließen von jedem fünf Minuten, und da die Analyse umfasst 28 Währungspaare, wird diese Bar für jedes Paar sein, und die Anzahl der Ticks in meinem Fall spielt keine Rolle.

Dann ist es einfacher so:

datetime TSec; // Aktuelle Zeit in Sekunden ab dem Beginn der letzten fünf Minuten

TSec = TimeCurrentl() % 300; // Rest der Division. Sie kann mit 290 = 5 Minuten - 10 Sekunden verglichen werden.

Wird die Verbindung zum Server unterbrochen, ändert sich die letzte bekannte Zeit TimeCurrent nicht und bleibt hinter der tatsächlichen Zeit zurück. Wenn Vertrauen in den auf dem Terminalcomputer laufenden Systemtimer besteht, z. B. wenn die Zeit des Computers automatisch mit der astronomischen Zeit des Betriebssystems synchronisiert wird (1-2 Sekunden Fehler) oder anderweitig, ist es besser, nicht die letzte bekannte Serverzeit (die Zeit des letzten Eintreffens von Anführungszeichen), sondern die Computerzeit datetimeTimeLocal() zu verwenden. Diese Zeit wird ebenfalls von 1970.01.01 0:00:00 in Sekunden gezählt und eignet sich zur Messung von 5 Minuten und 10 Sekunden, wobei der Unterschied zwischen Computer- und Serverzeitzone keine Rolle spielt. Dann

TSec = TimeLocal() % 300;

 
Vlad143:

Dann ist es einfacher so:

datetime TSec; // Aktuelle Zeit in Sekunden ab dem Beginn der letzten fünf Minuten

TSec = TimeCurrentl() % 300; // Rest der Division. Sie kann mit 290 = 5 Minuten - 10 Sekunden verglichen werden.

Wird die Verbindung zum Server unterbrochen, ändert sich die letzte bekannte Zeit TimeCurrent nicht und bleibt hinter der tatsächlichen Zeit zurück. Wenn Vertrauen in den auf dem Terminalcomputer laufenden Systemtimer besteht, z. B. wenn die Zeit des Computers automatisch mit der astronomischen Zeit des Betriebssystems synchronisiert wird (1-2 Sekunden Fehler) oder anderweitig, ist es besser, nicht die letzte bekannte Serverzeit (die Zeit des letzten Eintreffens von Anführungszeichen), sondern die Computerzeit datetimeTimeLocal() zu verwenden. Diese Zeit wird ebenfalls von 1970.01.01 0:00:00 in Sekunden gezählt und eignet sich für die Messung von 5 Minuten und 10 Sekunden, wobei der Unterschied zwischen Computer- und Serverzeitzone keine Rolle spielt. Dann

TSec = TimeLocal() % 300;

Danke, auch nützlich.
 
Wie kann man die Summierung der unrentablen Positionen unterbrechen?
    Подскажите, пожалуйста, как прервать суммирование убыточных позиций при срабатывании Тейкпрофита. После заново считать.
    
    Использую функцию Кimа 
    
     double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1,  datetime dt=0)
{
  p=0;
  int    i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (dt<OrderCloseTime()) {
             
             if(OrderProfit()<0){
              p+=OrderProfit();
            }
          }
        }
      }
    }
  }
 }
  
  return(p);
 
Neron_plus34:
Wie kann man die Summierung der unrentablen Positionen unterbrechen?
if(dt<OrderCloseTime()) {
   if(OrderProfit()<0) p+=OrderProfit(); 
   else break;
   }