Wie findet man den Zeitpunkt des Balkens, an dem sich die gleitenden Durchschnitte gekreuzt haben? (Code innen) - Seite 3

 

Ja, ich brauche es speziell für PERIOD_H1 Chart. Wie ich kann Zeitrahmen ändern und wollen, dass hart für diese TF codiert.

(Im besorgt, dass ich dies falsch machen - vor allem, was Sie geschrieben haben, um mich zweimal jetzt WHRoeder in Bezug auf MAs und die if-Anweisung... - Ich mache mich also auf ein paar Ohrfeigen gefasst, aber ich denke, das würde mir den Balken anzeigen, an dem sich die MA's gekreuzt haben (unten). Das würde also sicher funktionieren, wenn man es auf iBarShift anwendet...?)

if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12)triggerBarTime = Time[1];
 
WHRoeder:

Mehrere gleitende Durchschnitte kreuzen sich nicht zur gleichen Zeit.

Warum posten Sie doppelt? Ihre Frage wurde bereits beantwortet.

Suchen Sie den frühesten Balken, bei dem sie alle in der richtigen Reihenfolge waren.


int DIR = 0;
for(int iBar = 0; iBar < Bar; iBar++){
   double MA20 = ... iBar), 
           MA5 = ... iBar);
          :
   if(     MA20 > MA5 && MA5 > ...) DIR = -1;
   else if(MA20 < MA5 && MA5 < ...) DIR = +1; // All fanning up.
   else if (DIR != 0){ iBar--; break; }       // Last one was cross.
}
Darf ich fragen, was der Zweck der Bar-Variablen ist? Außerdem, was bedeutet "--"? Die beiden "--"- und "!"-Zeichen? (wenn Sie so freundlich wären? Ich habe die Hilfe durchgesehen, aber ich habe nicht herausgefunden, was sie bedeuten).
 
DomGilberto:

Darf ich fragen, was der Zweck der Bar-Variablen ist? Außerdem, was bedeutet "--"? Die beiden "--"- und "!"-Zeichen? (wenn Sie so freundlich wären? Ich habe die Hilfe durchgesehen, aber ich habe nicht herausgefunden, was sie bedeuten).


Und darf ich Sie fragen, warum basic from book immer noch unbekannt ist?

https://book.mql4.com/basics/expressions

 
Deine Frage ist so, als würdest du sagen: "Was ist dieses kleine Metallding (ein Schlüssel) und warum ist das eine Ding ein Rechteck (Gas) und die anderen sind viereckig?"
lernen Sie zu kodieren.
 

Aber ich weiß, was ein Gasschlüssel ist... - das ist einfacher als eine Codierung...

Ihr habt allerdings recht - ich muss es mir durchlesen.

Das liegt daran, dass ich am besten durch Versuch und Irrtum lerne (ich bin ein praktischer Typ, wenn es darum geht, Wissen zu behalten). Es hilft mir, die Logik zu verstehen, wenn ich sie sehe. Außerdem wird auf der MQL4-Website nicht unbedingt klar erklärt, wie das alles zusammen funktioniert.

Um also Ihre Frage zu beantworten, deVries, deshalb kenne ich einige Grundlagen und einige fortgeschrittenere Dinge, aber nur bruchstückhaft, weil ich gerne herumspiele und auf diese Weise lerne.

Tut mir leid, wenn ich zu einer Nervensäge werde!

EDIT - Ich verstehe immer noch nicht den "Bar"-Teil des Codes, den Sie geschrieben haben, WHRoeder - ich bin nicht sicher, ob das richtig ist?

 
DomGilberto: Aber ich weiß, was ein Gasschlüssel ist... - das ist einfacher als zu codieren...

Aber würden Sie versuchen zu fahren, ohne zu wissen, was es ist? Das wäre doch schwachsinnig.

Du versuchst zu codieren, ohne zu wissen, was "--" und "!" sind. Wo ist da der Unterschied?

 

!=True, if x is not equal to y -(DIR != 0) - Wenn DIR (das 0 ist) nicht gleich "0" ist, gibt der Break-Operator die Kontrolle an den for-Operator zurück. Und startet die Schleife erneut.

-- Subtraktion von 1 vom Wert der Variablen. Also "iBar--;" = iBar = 0, also Subtraktion von 1 = -1?

Hey - ich gebe mir hier wirklich Mühe. Es tut mir leid, wenn ich nicht so schnell lerne wie andere Leute (und glauben Sie nicht, dass ich lieber so wäre! Ich würde es viel lieber selbst lernen und es hinbekommen, ohne jemanden um Hilfe bitten zu müssen!), aber ich versuche mein Bestes. Ich bin vielleicht nicht der hellste Funke auf der Welt... Also verzeihen Sie mir wenigstens das...

 
DomGilberto:

!=True, if x is not equal to y -(DIR != 0) - Wenn DIR (das 0 ist) nicht gleich "0" ist, gibt der Break-Operator die Kontrolle an den for-Operator zurück. Und startet die Schleife erneut.

-- Subtraktion von 1 vom Wert der Variablen. Also "iBar--;" = iBar = 0, also Subtraktion von 1 = -1?

Hey - ich gebe mir hier wirklich Mühe. Es tut mir leid, wenn ich nicht so schnell lerne wie andere Leute (und glauben Sie nicht, dass ich lieber so wäre! Ich würde es viel lieber selbst lernen und es hinbekommen, ohne jemanden um Hilfe bitten zu müssen!), aber ich versuche mein Bestes. Ich bin vielleicht nicht der hellste Funke auf der Welt... Also verzeihen Sie mir wenigstens das...


In dieser Schleife

for(int iBar = 0; iBar < Bar; iBar++){//....do some stuff and come back}

iBar hat hier verschiedene Werte, solange es kleiner als Bar ist, wird der Wert 1 höher

iBar--;

bedeutet....

iBar = iBar - 1;
 
int DIR = 0;
for(int iBar = 0; iBar < Bars; iBar++)
   {
   double i1  = iMA(NULL,60,3,0,1,0,1); 
   double i2  = iMA(NULL,60,5,0,1,0,1);
   double i3  = iMA(NULL,60,8,0,1,0,1);
   double i4  = iMA(NULL,60,10,0,1,0,1);  
   double i5  = iMA(NULL,60,12,0,1,0,1);
   double i6  = iMA(NULL,60,15,0,1,0,1);  
   double i7  = iMA(NULL,60,30,0,1,0,1);
   double i8  = iMA(NULL,60,35,0,1,0,1);
   double i9  = iMA(NULL,60,40,0,1,0,1);
   double i10 = iMA(NULL,60,45,0,1,0,1);
   double i11 = iMA(NULL,60,50,0,1,0,1);
   double i12 = iMA(NULL,60,60,0,1,0,1); 
   double ema21 = iMA(NULL,60,21,0,1,0,1);

   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21)
      OrderEntry(0);
  else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)
      OrderEntry(1);
   
   if (DIR != 0)
   { 
   iBar--; break; 
   }       // Last one was cross.

Ah - ich glaube, ich habe es jetzt funktioniert - Ich starrte nur auf Bar für eine Weile und dann realisiert :) - Ich beginne zu erkennen, dass das, was ich versuche, Code ist etwas komplexer als ich zuerst dachte. Ich brauche die MA's zu drehen und Fan nach oben oder unten (je nachdem, ob es ein Kauf oder Verkauf). Wenn seine aufgefächert (für eine lange) Sie müssen nicht immer in der richtigen Reihenfolge sein - es ist nur ein Fall von ersten Identifizierung, wenn sie alle gestapelt sind und aufgefächert auseinander in der richtigen Reihenfolge - von diesem Punkt alles, was ich will, ist der Preis zu überprüfen, die 21 EMA und dann einen Auftrag über die Hochs. Ich werde natürlich ein wenig herumspielen! Ich erwarte NICHT, dass mir jemand den Code schreibt - ich schreibe nur meine Gedanken laut auf.

Ich danke Ihnen!

 
Korrigieren Sie Ihre Einrückung oder fehlende Klammern
Veröffentlichter Code
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21)
      OrderEntry(0);
  else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)
      OrderEntry(1);
Ordnungsgemäß eingerückt
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && 
      i7<i8 && i8<i9 && i9<i10 && i10<i11 && i11<i12) DIR = -1;
   triggerBarTime = Time[1];
   if(Low[1]<ema21) OrderEntry(0);
   else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && 
          i7>i8 && i8>i9 && i9>i10 && i10>i11 && i11>i12) DIR = +1; // All fanning up.
   triggerBarTime1 = Time[1];
   if(High[1]>ema21)  OrderEntry(1);
Ordnungsgemäß verklammert
   if(i1<i2 && i2<i3 && i3<i4 && i4<i5 && i5<i6 && i6<i7 && i7<i8 && 
      i8<i9 && i9<i10 && i10<i11 && i11<i12){
      DIR = -1;
      triggerBarTime = Time[1];
      if(Low[1]<ema21) OrderEntry(0);
   }
   else if(i1>i2 && i2>i3 && i3>i4 && i4>i5 && i5>i6 && i6>i7 && i7>i8 && 
           i8>i9 && i9>i10 && i10>i11 && i11>i12){
      DIR = +1; // All fanning up.
      triggerBarTime1 = Time[1];
      if(High[1]>ema21)  OrderEntry(1);
   }