Eine Frage an MQL-Experten - Seite 3

 
Vielen Dank, granit77
 
granit77:

Ja, in etwa so, wenn man bedenkt, dass der Indikator hilo.mq4 heißt:

extern int iR=3;
extern int SignalBar=1;
//.......
//---получение значения  HighBuffer 
double buy =  iCustom( NULL,0, "hilo",
                      iR,
                      0, // № буффера
                      SignalBar ); // № бара    
 
//---получение значения  LowBuffer
double sell =  iCustom( NULL,0, "hilo",
                      iR,
                      1, // № буффера
                      SignalBar ); // № бара

Ein kleines Problem. Der Berater auf dem Indikator funktioniert. Aber.... Nur bei Durchführung von Short Trades!

d.h. bei Puffernummer=1 und Werten auf Null und dem ersten Takt

if  (   (sell_0>Bid)  &&   (sell_1<=Bid))

der Zustand zu verkaufen funktioniert tadellos.

Aber der Expert Advisor will nicht kaufen! Ich verstehe nicht, was los ist! Ich glaube, ich habe die Bedingung richtig gestellt. Puffernummer = 0.

(  (buy0>=Ask)  &&      (buy1<Ask)  )

Kauft nicht! Oder er kauft sehr selten und vom "Licht"!

Obwohl die Linien des Indikators auf dem Diagramm im visuellen Modus korrekt aufgebaut zu sein scheinen!


Was kann hier das Problem sein?

 
rid:
granit77:

Ja, in etwa so, wenn man bedenkt, dass der Indikator hilo.mq4 heißt:

extern int iR=3;
extern int SignalBar=1;
//.......
//---получение значения  HighBuffer 
double buy =  iCustom( NULL,0, "hilo",
                      iR,
                      0, // № буффера
                      SignalBar ); // № бара    
 
//---получение значения  LowBuffer
double sell =  iCustom( NULL,0, "hilo",
                      iR,
                      1, // № буффера
                      SignalBar ); // № бара

Ein kleines Problem. Der Berater auf dem Indikator funktioniert. Aber.... Nur bei Durchführung von Short Trades!

d.h. bei Puffernummer=1 und Werten auf Null und dem ersten Takt

if  (   (sell_0>Bid)  &&   (sell_1<=Bid))

der Zustand zu verkaufen funktioniert tadellos.

Aber der Expert Advisor will nicht kaufen! Ich verstehe nicht, was los ist! Ich glaube, ich habe die Bedingung richtig gestellt. Puffernummer = 0.

(  (buy0>=Ask)  &&      (buy1<Ask)  )

Kauft nicht! Oder er kauft sehr selten und vom "Licht"!

Obwohl die Linien des Indikators auf dem Diagramm im visuellen Modus korrekt aufgebaut zu sein scheinen!


Was könnte hier das Problem sein?

Auch ich bin an dieser Frage interessiert)).

 

Bei der Arbeit mit dem benutzerdefinierten Indikator ist mir das aufgefallen:


// так РАБОТАЕТ !!!
int FATLsB=iCustom(NULL,0,"FATLs",0,0);
int FATLsS=iCustom(NULL,0,"FATLs",1,0);

// а вот так НЕТ ...
double FATLsB=iCustom(NULL,0,"FATLs",0,0);
double FATLsS=iCustom(NULL,0,"FATLs",1,0);


// если потом в коде есть сранвнение с 0 или 1, например
if (FATLsB==1) {CloseSell(); SetBuy(); }
 
kombat:

Bei der Arbeit mit dem benutzerdefinierten Indikator ist mir das aufgefallen:


// так РАБОТАЕТ !!!
int FATLsB=iCustom(NULL,0,"FATLs",0,0);
int FATLsS=iCustom(NULL,0,"FATLs",1,0);

// а вот так НЕТ ...
double FATLsB=iCustom(NULL,0,"FATLs",0,0);
double FATLsS=iCustom(NULL,0,"FATLs",1,0);


// если потом в коде есть сранвнение с 0 или 1, например
if (FATLsB==1) {CloseSell(); SetBuy(); }

Im ersten Fall findet vor der Zuweisung eine Konvertierung in den Zieltyp int statt. Daher funktioniert die Vergleichsbedingung korrekt.

Im zweiten Fall müssen wir Fließkommazahlen vor dem Vergleich auf eine bestimmte Genauigkeit runden, indem wir die

NormalizeDouble(double value, int digits)



 

Entschuldigung...

Mein obiges Beispiel beruht auf einem Irrtum.

Die war, dass die Zuordnung auf den rückverfolgbaren Preis durch den FATLs Indikator war.

Ich habe es auf EURUSD nicht bemerkt und verwechselte "erscheinende Pfeile" mit Bullen 0 und 1


Mit dieser Variante wurde die Situation jedoch korrigiert:


bool FATLsB=iCustom(NULL,0,"FATLs",0,0)>0;
bool FATLsS=iCustom(NULL,0,"FATLs",1,0)>0;
//--- открытие БАЙ закрытие СЕЛЛ ------------------
   if (FATLsB==1 && TotalBuy()==0) {CloseSell(); SetBuy(); }
 

Guten Tag, liebe Kolleginnen und Kollegen!

Bitte beraten Sie mich.

Angenommen, ich habe einen langsamen MA und einen schnellen MA, die sich auf dem Chart kreuzen. Im ersten Takt.

Lassen Sie es dann noch ein paar Takte weiterlaufen.

Wie kann ich feststellen, auf welchem Balken die letzten МА überschritten wurden?

-----------------------------

Ich kann nicht einmal denken - wie soll ich das Problem angehen?

 
Rita:

Angenommen, ich habe einen langsamen MA und einen schnellen MA, die sich auf dem Chart kreuzen. Im ersten Takt.

Dann sollen noch ein paar Takte vergehen.

Wie kann ich feststellen, bei welchem Balken in der Vergangenheit die letzte Überschreitung des gegebenen MA stattgefunden hat?

Worin besteht für Sie der grundlegende Unterschied? Der Crossover auf dem ersten Balken kann auf dieselbe Weise wie auf jedem anderen Balken betrachtet/gesucht werden. Sie erstellen eine Schleife (z. B. von Null Bar zu Bars), in der Sie die Werte der Bars durchgehen und analysieren. Ich kann den Sinn der Frage nicht verstehen....
 

Ich muss wissen, wie es um den aktuellen Balken steht.

Wie viele Balken sind seit der letzten Kreuzung der beiden Balken - MA_1 und MA_2 - vergangen?

Wie kann man eine solche Schleife einrichten?

wenn (MA_1>MA_2) {

 
Rita:

Ich muss wissen, wie es um den aktuellen Balken steht.

Wie viele Balken sind seit der letzten Kreuzung der beiden MA_1 MA_2 vergangen.

Wie kann ich diesen Zyklus durchführen?

vom aktuellen Balken bis zu dem Moment gehen, in dem der MA seinen Platz wechselt. und zählen.
Grund der Beschwerde: