[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 340

 
dyxaa:

Leute, wie schließt man eine Pending Order in n, Anzahl der Pips, wenn sie nicht ausgelöst wurde?

Sie kann nicht geschlossen werden, aber sie kann gelöscht werden.

 

Ich zeichne einen Indikator für Trainingszwecke (d.h. ich lerne) und erhalte dieses Ergebnis, wenn ich die Daten ändere:


Die roten und blauen Linien gehen nicht fließend ineinander über.

Warum passiert das und wie kann ich es umgehen?

  for(i = limit; i >= 0; i--) 
    {
     cciTrendNow      = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i);
     cciTrendPrevious = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i+1);

     if (cciTrendNow > st && cciTrendPrevious < st)
      {
       TrendUp[i+1] = TrendDown[i+1];
       ArrayInitialize( TrendDown[i+1], 0 ); // Попытался обнулить, чтобы обойти некрасивую отрисовку.
      }

     if (cciTrendNow < st && cciTrendPrevious > st) 
      {
       TrendDown[i+1] = TrendUp[i+1];
       ArrayInitialize( TrendUp[i+1], 0 );   // Попытался обнулить, чтобы обойти некрасивую отрисовку.
      }
    }

Das Problem tritt in diesem Teil des Codes auf. Aber wie man es überwinden - konnte nicht herausfinden, oder denken Sie an etwas selbst. Bitte beraten Sie mich.

 
dyxaa:

Leute, wie schließt man eine Pending Order in n, Anzahl der Pips, wenn sie nicht ausgelöst wurde?

Klicken Sie auf das Kreuz!
 
artmedia70:

Ich habe nicht von externen Variablen gesprochen. Ich habe hierüber gesprochen.

Stellen wir uns eine Situation vor. Eine Entscheidung muss nach der letzten offenen Stelle getroffen werden.


Für den Prüfer:

Wir erstellen Variablen, in denen wir die notwendigen Daten der zuletzt geöffneten Position speichern werden.

Sobald eine neue Position eröffnet wird, fügen wir die erforderlichen Daten sofort in diese Variablen ein.

Wenn ein Signal zur Eröffnung einer neuen Position kommt (z.B. nach 20 Testminuten), müssen wir einige Kriterien überprüfen, anhand derer wir über die Daten der zu eröffnenden Position entscheiden. Diese Kriterien hängen vereinbarungsgemäß von der zuvor eröffneten Stelle ab. Wir lesen sie aus den Variablen (wir haben sie bei der vorherigen Öffnung gespeichert) und verwenden sie als zusätzliche Daten für eine neue Position.

Wenn wir eine Position eröffnen, speichern wir die neuen Daten über die neu eröffnete Position in den Variablen.


Echt jetzt:

Stellen wir uns die gleiche Situation vor, aber ... Stellen Sie sich vor, dass nach dem Öffnen der letzten Position und der Speicherung ihrer Daten in Variablen 10 Minuten vergangen sind (weitere 10 Minuten müssen vergehen, bevor die nächste Position geöffnet wird (wir haben dies einfach in einem "Tester" angenommen)). Und in diesem Zeitintervall wurde der Expert Advisor aus irgendeinem Grund neu gestartet.

Was passiert nach dem Neustart des EA mit den Daten der zuletzt geöffneten Position, die in Variablen gespeichert wurden? Sie werden nicht existieren.

Woher sollen wir sie also bekommen? Rechts - Suche. Deshalb brauchen wir die Funktion der Suche nach den erforderlichen Daten. Es ist daher besser, alles auf einmal zu finden, wenn wir es brauchen, und es nicht in Variablen zu speichern, was wirklich viel einfacher und schneller ist.


Entschuldigung für die späte Klärung - ich bin gerade in die Welt hinausgegangen ... :))



Vielen Dank, Artyom. Das macht natürlich alles Sinn. Deshalb lerne ich gerade, mit Funktionen zu schreiben. Aber manchmal ist die Logik nicht so gut. Deshalb stolpere ich. Als ich das letzte Mal dieses Problem löste, indem ich alle Schleifendaten von einer Funktion in eine andere erweiterte, nahm ich mir ein paar Tage lang eine Auszeit vom Programmieren im Allgemeinen, um mich zu orientieren. Jetzt werde ich weitermachen!
 
solnce600:

Meine Herren, ich bitte um Rat, wie man den folgenden Algorithmus mit einer Schleife kodieren kann.

wenn (iLow (Symbol (),0,1) > iLow (Symbol (),0,10))// wenn der MINIMUM-Wert der ersten Kerze > MINIMUM-Wert der zehnten Kerze

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ); // Eröffnen der Order.

ICH MUSS

Wenn Low 1 und gleichzeitig Low 2 und gleichzeitig Low 3...... . ...und gleichzeitig Kerzentief 9> Kerzentief 10 ( d.h. Kerzentief von 1 bis 9)

/ /einen Auftrag eröffnen.

Ich danke Ihnen.

Wenn ich Ihre Frage jedoch richtig verstanden habe, würde der Code lauten

bool have = true;

for (int i=0; i<10; i++)
  {
   if (Low[i] > Low[10])        // Как вариант:  if ( iLow(Symbol(),0,i) > iLow(Symbol(),0,10) )
    {
     have = false;
     break;
    }
  }

if(have) OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );    //открыть ордер.

Aber das ist nur ein Hinweis auf die FAQ. Ohne sie hätte ich es nicht geschafft.

 

Ich habe eine Idee, aber wie man das im wirklichen Leben umsetzen kann und wie es im wirklichen Leben zuverlässig funktionieren wird, weiß ich nicht wirklich.

Das Wesentliche ist wie folgt. Wir sollten den Markt betreten, nachdem wir die Eule auf dem Chart platziert haben, unmittelbar nachdem der Balken geschlossen wurde, d.h. bei der Eröffnung eines neuen Balkens. Dies ist der erste Auftrag. Wenn die Order durch einen TP oder einen Stop-Preis geschlossen wird, sollten wir sofort eine Order zur Eröffnung eines neuen Balkens eröffnen. Wie kann man das vernünftiger machen?

Ich verstehe, dass wir eine Variable erstellen sollten. Setzen Sie den Eröffnungskurs des aktuellen Balkens hinein. Und vergleichen Sie diesen Wert mit dem Eröffnungskurs des aktuellen Balkens. Wenn der Wert der Variablen nicht gleich dem Eröffnungskurs des aktuellen Balkens mit dem Index Null ist, wird eine Order eröffnet.

Ist dies die beste Option?

 
Chiripaha:

Ich zeichne einen Indikator für Trainingszwecke (d.h. ich lerne) und erhalte dieses Ergebnis, wenn ich die Daten ändere:


Dieroten und blauen Linien gehen nicht nahtlos ineinander über.

Warum passiert das und wie kann ich es umgehen?

Das Problem tritt in diesem Teil des Codes auf. Aber wie man sie überwinden kann - ich konnte es nicht herausfinden oder mir selbst etwas ausdenken. Können Sie mir das bitte sagen?


Puh, ich hab's jetzt kapiert. : )))

Wenn ich jetzt nur noch den Rest des Problems in den Griff bekommen könnte, wäre alles viel besser. Vielen Dank an alle, die helfen wollten! : ))

Ich öffne 2 weitere genau die gleichen Puffer - sie zeichnen nicht... Was ist das für eine Zauberei... - Okay, wir werden studieren und suchen. Es ist allerdings schade, Zeit mit dem "Fahrrad" zu verschwenden. Wann in diesem Fall, wann eine neue zu erfinden?

 
hoz:

Ich habe eine Idee, aber wie man das im wirklichen Leben umsetzen kann und wie es im wirklichen Leben zuverlässig funktionieren wird, weiß ich nicht wirklich.

Das Wesentliche ist wie folgt. Wir sollten den Markt betreten, nachdem wir die Eule auf dem Chart platziert haben, unmittelbar nachdem der Balken geschlossen wurde, d.h. bei der Eröffnung eines neuen Balkens. Dies ist der erste Auftrag. Wenn die Order durch einen TP oder einen Stop-Preis geschlossen wird, sollten wir sofort eine Order zur Eröffnung eines neuen Balkens eröffnen. Wie kann man das vernünftiger machen?

Ich verstehe, dass wir eine Variable erstellen sollten. Setzen Sie den Eröffnungskurs des aktuellen Balkens hinein. Und vergleichen Sie diesen Wert mit dem Eröffnungskurs des aktuellen Balkens. Wenn der Wert der Variablen nicht gleich dem Eröffnungskurs des aktuellen Balkens mit dem Index Null ist, wird eine Order eröffnet.

Ist das die beste Option?


Wenn es implementiert ist, wird es im realen Handel genauso zuverlässig funktionieren wie in der Demo. Aber nicht die Tatsache, dass es rentabel sein wird.

Sie müssen eine Bestellung eröffnen und das war's . Aber Sie haben nicht formuliert, in welche Richtung der Auftrag geöffnet werden soll und unter welchen Bedingungen diese Seite bestimmt wird.

Sie müssen nichts vergleichen - eröffnen Sie einfach einen Auftrag, wenn ein neuer Balken erscheint (basierend auf Ihren Eingaben).

newBars = iBarShift(Symbol(), PERIOD_H1, lastH1BarTime);    // Это было найдено через поиск на форуме

Wenn Sie keine Ahnung haben:

"Und die Erfahrung ist der Sohn der harten Fehler.
Und das Genie ist ein Freund der Paradoxien" (Alexander Sergejewitsch für Ihre Hilfe).

Du musst eine Eule basteln (schreiben) und sie experimentell überprüfen. - Ich glaube nicht, dass jemand die Eule für Sie (kostenlos) schreiben wird. Ihnen einen Hinweis zu geben, ist eine Sache. Aber die Umsetzung von Ideen (Gedanken) ist keine Hilfe, sondern Arbeit.

 
borilunad:
Klicken Sie auf das Kreuz!

Genau. Genial einfach))))

Ich bitte um Ihre Hilfe) hier ist eine Bestellung ausstehenden let'sbuy stop zum Beispiel ich brauche es zu löschen, wenn der Preis 100 Punkte nach unten kann es tun?

 
borilunad:
Klicken Sie auf das Kreuz!

Genau. Genial einfach))))

Ich bitte um Ihre Hilfe) hier ist eine Bestellung ausstehenden let'sbuy stop zum Beispiel ich brauche es zu löschen, wenn der Preis 100 Punkte nach unten kann es tun?

Grund der Beschwerde: