[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 398

 
solnce600:

Ich glaube, ich habe alles richtig gemacht .... Lässt sich immer noch nicht öffnen (im Testgerät)

Auch keine Fehlerinformation im Logbuch http://clip2net.com/s/5aLodh

Ich kann es nicht verstehen - was ist los?

Wir müssen den Preis normalisieren.

double Price=NormalizeDouble(0.9022, Digits);
 
PapaYozh:

Wir müssen den Preis normalisieren.

Papa! Vielen Dank..... und noch eine kleine Frage....

Ich möchte einen Auftrag nur eröffnen, wenn

1. Der Abstand zwischen dem Eröffnungskurs der Kerze N 30 und dem Höchststand der Kerze N 1 beträgt mehr als 150 p.


2. Die Öffnungszeit einer KerzeN 30 ist gleich - BELIEBIGER ZEITPUNKT, BELIEBIGES DATUM, aber der Wert der Minuten muss gleich 15 sein ( d.h.0:15;1:15;....23:15)

wenn ((Hoch[1]-Eröffnung[30])> 1500*Punkt) && (??????????????????)

//Offener Auftrag

Die zweite Bedingung wollte ich mit der Funktion Zeit [30] erstellen, aber diese Funktion gibt nicht nur Werte in Minuten, sondern auch in Stunden, Tagen und Jahren zurück.

für die Kerze, die ich brauche. Die Funktion Minute( ) passt mir auch nicht, weil sie den Minutenwert nur für die Nullkerze zurückgibt.

Bitte teilen Sie mir mit, wie ich diesen Punkt am besten kodieren kann.



 
solnce600:

Papa! Vielen Dank..... und noch eine kleine Frage....

Ich möchte einen Auftrag nur eröffnen, wenn

1. Der Abstand zwischen dem Eröffnungskurs der Kerze N 30 und dem Höchststand der Kerze N 1 beträgt mehr als 150 p.


2. Die Öffnungszeit der Kerze N 30 ist gleich - BELIEBIGER ZEITPUNKT, BELIEBIGES DATUM, aber der Wert der Minuten muss gleich 15 sein ( d.h.0:15;1:15;....23:15)

wenn ((Hoch[1]-Eröffnung[30])> 1500*Punkt) && (??????????????????)

//Offener Auftrag

Die zweite Bedingung wollte ich mit der Funktion Zeit [30] erstellen, aber diese Funktion gibt nicht nur Werte in Minuten, sondern auch in Stunden, Tagen und Jahren zurück.

für die Kerze, die ich brauche. Die Funktion Minute( ) passt mir auch nicht, weil sie den Minutenwert nur für die Nullkerze zurückgibt.

Bitte beraten Sie mich, wie ich es besser codieren kann.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh:

Wir müssen den Preis normalisieren.

Normalisiert. Lässt sich immer noch nicht öffnen...

Obwohl der andere Code ohne Normalisierung geöffnet wird....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
 
solnce600:

Normalisiert. Es lässt sich immer noch nicht öffnen...

Obwohl andere Codes ohne Normalisierung geöffnet werden....

Verwenden Sie Print() und sehen Sie, welche Bedingung fehlschlägt.
 
Guten Tag an alle. Bitte sehen Sie sich diesen Indikator an. Ist es überhaupt möglich, dass es richtig funktioniert?
Wenn sich der Preis nach unten bewegt, gibt es bereits eine blaue Linie zusätzlich zu der roten (rote Linien werden hinzugefügt, siehe Anhänge). Dann eine Trendwende, und hier ist alles richtig - nur blau.

vielen Dank im Voraus


/* Dekompiliert gelöscht /*


 
solnce600:

Papa! Vielen Dank..... und noch eine kleine Frage....

Ich möchte einen Auftrag nur eröffnen, wenn

1. Der Abstand zwischen dem Eröffnungskurs der Kerze N 30 und dem Höchststand der Kerze N 1 beträgt mehr als 150 p.


2. Die Öffnungszeit einer Kerze N 30 ist gleich - BELIEBIGER ZEITPUNKT, BELIEBIGES DATUM, aber der Wert der Minuten muss gleich 15 sein ( d.h.0:15;1:15;....23:15)

wenn ((Hoch[1]-Eröffnung[30])> 1500*Punkt) && (??????????????????)

//Offener Auftrag

Die zweite Bedingung wollte ich mit der Funktion Zeit [30] erstellen, aber diese Funktion gibt nicht nur Werte in Minuten, sondern auch in Stunden, Tagen und Jahren zurück.

für die Kerze, die ich brauche. Die Funktion Minute( ) passt mir auch nicht, weil sie den Minutenwert nur für die Nullkerze zurückgibt.

Bitte sagen Sie mir, wie ich diesen Punkt am besten kodieren kann.

Um die Zeit ab dem Beginn (JEDER Kerze) festzulegen (in die Berechnungen einzubeziehen), ist es praktisch , iBarShift (Symbol(), 1, Oszillationspunkt) zu verwenden. Und derOszillationspunkt ist der Beginn des Taktes der Periode, die verfolgt wird. In Ihrem Fall:

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Nachdem ich einen Blick auf einen Teil Ihres Codes geworfen habe, kann ich sagen, dass Sie überhaupt nicht darüber nachdenken, was Sie schreiben. Versuchen Sie, darüber nachzudenken (Auszug):

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Nachdem ich einen Blick auf einen Teil Ihres Codes geworfen habe, kann ich sagen, dass Sie überhaupt nicht darüber nachdenken, was Sie schreiben. Versuchen Sie, darüber nachzudenken (Fragment):

...


Vielen Dank für Ihre Antwort und entschuldigen Sie, dass Sie Ihren Code unkommentiert geschickt haben.

Was Sie für unsinnig halten, macht Sinn, und es funktioniert.

if(Gebot==Preis) // wenn die Zeit mit der Öffnungszeit der Kerze übereinstimmt.eine neue Kerze wird gebildet

if((Minute( ) ==45)&&(Minute( ) <50)) // wenn der Minutenwert bei der Eröffnung einer neuen Kerze zwischen 45 und 50 liegt (manche Kerzen werden nämlich bei 45 Minuten eröffnet und nicht genau bei 45 Minuten. Ich verwende &&(Minute( ) <50), um zu vermeiden, dass Kerzen, die bei 45 Minuten öffnen, aber 1,2,3,4 Minuten später geöffnet werden, übersehen werden.)

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point, "jfh",123 );

}

Rückkehr;

Der Auftrag wird also zu Beginn jeder 15-, 5- oder 1-Minuten-Kerze eröffnet, die technisch gesehen um 45 Minuten (+ höchstens 4 Minuten, d. h. mit einer Verzögerung) geöffnet wurde.
 
solnce600:

Ich versuche, Ihnen einen kleinen Punkt verständlich zu machen. Ein sehr wichtiger Punkt: "was Sie verschreiben wollten" und "was Sie verschrieben haben" sind völlig UNTERSCHIEDLICHE Dinge! Wenn in der Bedingung:

if((Minute( ) ==45)&&(Minute( ) <50))

Minute() == 46, dann funktioniert die ALLGEMEINE Bedingung NICHT!!! Wie wäre es damit:

if ((Minute() >= 45) && (Minute() < 50))

??? :-[

Grund der Beschwerde: