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

 
sergeev:
Was genau funktioniert nicht?


die Stelle wird nicht geöffnet.
 
IgorM:

Versuchen Sie es auf diese Weise:


Entweder verstehe ich nichts, oder Sie haben das Problem falsch verstanden.

es gibt einen Close[2]-Kurs von 1,34529 und einen Open[1]-Kurs von 1,34530

Ich habe eine Bedingung, um die Position zu öffnen.

Close[2] >= Open[1]

Da 10 - 20 Pips (im 5-stelligen Bereich) keine große Rolle spielen, muss ich sie in das Programm aufnehmen,

Wenn der Schlusskurs bei 1,34529 und der Eröffnungskurs bei 1,34530 liegt, kann die Position trotzdem eröffnet werden.

 
kilnart:

die Stelle wird nicht geöffnet.

???

Was hat dann die Preisbedingung damit zu tun?

Sehen Sie sich den nächsten Code an. Da ist noch ein Fehler.

 
Der Preis, der die Bedingung erfüllt, wird im Chart angezeigt, und die Position wird eröffnet.
 
Ich werde den Code noch einmal überprüfen und Ihnen Bescheid geben.
 
kilnart:


Entweder verstehe ich das nicht, oder Sie haben die Aufgabe falsch verstanden.

......

10 - 20 ppts (im 5stelligen Bereich) spielen keine große Rolle, man muss sie ins Programm aufnehmen

anscheinend haben Sie Ihren vorherigen Beitrag zuerst geschrieben und sich dann nur gefragt, was Sie als Antwort hören wollten....

wirklich, 10-20pts in 5 Ziffern macht nicht viel aus, ich habe gezeigt, wie man Variablen wie double richtig vergleicht, ich vermute, Ihr Problem liegt nicht in der richtigen Bedingung. Versuchen Sie zunächst, eine klare und eindeutige Frage zu formulieren, um eine eindeutige Antwort zu erhalten.

 
IgorM:

anscheinend haben Sie Ihren vorherigen Beitrag zuerst geschrieben und sich dann nur gefragt, was Sie in der Antwort .... hören wollten.

wirklich, 10-20 pp in 5 Ziffern ist keine große Sache, ich habe gezeigt, wie man richtig vergleichen Variablen vom Typ double, ich vermute, dass Ihr Problem nicht in der richtigen Bedingung ist. Versuchen Sie zunächst, eine klare und eindeutige Frage zu formulieren, um eine eindeutige Antwort zu erhalten.


Nur ist es imho falsch, Doppelgänger auf diese Weise zu vergleichen. Zum Beispiel, vier Ziffern, Preise 1,00014 und 1,00016 sind gleichwertig mit 1,0001 und 1,0002, aber 1,00016 zu 1,00014 < Punkt
 
220Volt: Nur ist es imho falsch, doble auf diese Weise zu vergleichen. Zum Beispiel, vier Ziffern, Preise 1,00014 und 1,00016, entspricht 1,0001 und 1,0002, aber 1,00016 - 1,00014 < Punkt

Sie verwechseln den Vergleich von Zweiergruppen und das Runden, Sie brauchen eine klare Formulierung der Frage: Entweder runden Sie eine fünfstellige Zahl in eine vierstellige und führen dann die Analyse in der vierstelligen Zahl durch, oder Sie vergleichen nur zwei Zweiergruppen richtig.

Wenn Sie zwei Double's vergleichen, dann wird der Teil des Codes, den ich zitiert habe, sowohl für 4 als auch für 5 Ziffern korrekt funktionieren:

switch(Digits){
   case 5: if(1.00014-1.00016>=10*Point); условие= false, -0.00002 меньше 0.00001*10   // цена больше на 10 пп в 5-ти знаке
   case 4: if(1.0001-1.0002>=Point); условие= false, -0.0001 меньше 0.0001          // цена больше на 1 пп в 4-х знаке
}

Sehen Sie sich das an: https://www.mql5.com/ru/articles/1561 und https://www.mql5.com/ru/forum/101433

SZZ: Ich habe einen Fehler in meinem Code gemacht: case sollte durch break geschlossen werden, d.h. wie folgt:

switch(Digits){
   case 5: if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
           break;
   case 4: if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
           break;
}
 
IgorM:

Sie verwechseln den Vergleich von Zweiergruppen und das Runden, Sie brauchen eine klare Formulierung der Frage: Entweder runden Sie eine fünfstellige Zahl in eine vierstellige und führen dann die Analyse in der vierstelligen Zahl durch, oder Sie vergleichen nur zwei Zweiergruppen richtig.

Wenn Sie zwei Double's vergleichen, dann wird der Teil des Codes, den ich zitiert habe, sowohl für 4 als auch für 5 Ziffern korrekt funktionieren:

Sehen Sie sich das an: https://www.mql5.com/ru/articles/1561 und https://www.mql5.com/ru/forum/101433

ZS: es gibt einen Fehler in meinem Code: case sollte mit break geschlossen werden, d.h. wie folgt:


Obwohl Sie wahrscheinlich Recht haben, ist es dem Autor wahrscheinlich egal. Ich zähle jeden Kern, deshalb betrachte ich solche Situationen aus meiner eigenen Sicht.
 

Das war's. Ich bin total durcheinander und mein Kopf funktioniert nicht mehr.

Hier ist der Code

       double Low1=Low[iLowest(NULL,0,MODE_LOW,3,0)],
              Low2=Low[iLowest(NULL,0,MODE_LOW,20,0)];
         
         if(Low1<Low2 && Open[2]>Close[2])    
          {
            if(Open[1]<=Close[2] && Open[2]<Close[1])
             {
                 double sl=Low[iLowest(NULL,0,MODE_LOW,3,0)],
                        tp=Ask+(Open[2]-Low[2]);
                 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp);
                 return;
             }
          }

Ich möchte das folgende zeichnen. ich brauche, um den minimalen Punkt für die letzten 3 Candlesticks zu finden. vergleichen Sie es mit dem minimalen Preis der letzten 20 Candlesticks. wenn die letzten 3 Candlesticks niedriger sind und die Kerze ist schwarz ( Open[2]>Close[2] ) dann weiter suchen.

Ich muss einen bärischen Takeover finden ( Open[1]<=Close[2] && Open[2]<Close[1] ).

Und eröffnen Sie eine Kaufposition.

Es scheint richtig zu sein, aber ich habe das Gefühl, dass etwas nicht stimmt.

Ich wäre Ihnen sehr dankbar, wenn Sie mir helfen könnten.