Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 204

 
STARIJ:

Der MA kreuzt sich zwischen den Balken - ein deutliches Beispiel gefangen

Der MA auf den Balken links und rechts der Kreuzung unterscheidet sich vom Preis am Kreuzungspunkt. Ich verstehe, dass der Fragesteller den Wert am exakten Kreuzungspunkt und nicht den Wert auf einem der angrenzenden Balken haben möchte. Dieser exakte Wert kann durch lineare Interpolation ermittelt werden, da die MA zwischen den Balken als gerade Liniensegmente konstruiert ist. Oder nehmen Sie die Koordinaten der einzelnen MA auf benachbarten Balken. Konstruieren Sie analytisch 2 Geraden und berechnen Sie deren Schnittpunkt. Die Berechnung ist möglich, wenn man 2 ähnliche Dreiecke betrachtet. Es stellt sich die Gegenfrage: Warum brauchen wir sie? Stehen die Kosten im Verhältnis zum Wert des Ergebnisses? Schließlich verschieben sich die Schnittpunkte, wenn die MA-Parameter nur minimal verändert werden. Höchstwahrscheinlich wird es von der Leitung des Kursprojekts verlangt

Danke für die Klarstellung, ich verstehe, dass es nicht einfach ist, das zu tun.
 
missha32:

Ich kann den Fehler in meinen Berechnungen nicht finden.
Ich muss den Höchst- und Tiefstwert des Vortages finden, aber aus irgendeinem Grund war der Tiefstwert am Vortag

Besser ist es, stattdessen CopyHigh und CopyLow mit der Periode PERIOD_D1 und dem entsprechenden Balken oder Zeitpunkt zu verwenden.

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
 
missha32: Ich muss den Höchst- und den Tiefstwert des Vortages finden, aber aus irgendeinem Grund wird der Tiefstwert am Vortag gefunden
  // iHigh и iLow дают макс и мин цены указанного бара. Если PERIOD_D1, то целых суток  если 1 то вчерашних последних завершенных суток

   Alert("Максимум вчерашнего дня = ", iHigh(_Symbol, PERIOD_D1, 1));
   Alert("Минимум  вчерашнего дня = ", iLow(_Symbol,  PERIOD_D1, 1));
Jeder Balken eines beliebigen Zeitrahmens enthält verallgemeinerte Informationen über das entsprechende Intervall von Balken niedrigerer Zeitrahmen: Maximum; Minimum; Eröffnungszeit gleich der Zeit des ersten Balkens im Intervall; Schlusszeit gleich der Zeit des letzten Balkens im Intervall; Volumen gleich der Summe der Volumen der Balken im Intervall. Genauer gesagt, sind diese Informationen in den jeweiligen Arrays enthalten
 
STARIJ:
Jeder Balken eines beliebigen Zeitrahmens enthält verallgemeinerte Informationen über das entsprechende Intervall der Balken der niedrigeren Zeitrahmen: Maximum, Minimum, Eröffnungs- und Schlusszeit sowie das Volumen, das der Summe der Volumen der niedrigeren Balken entspricht. Genauer gesagt, sind diese Informationen in den entsprechenden Arrays enthalten

Ich würde das tun, aber ich kann die Daten möglicherweise nicht mit einem weiteren Algorithmus berechnen, da ich möglicherweise nach anderen Werten von gestern suchen muss und es mühsam wäre, die Funktionen erneut zu schreiben.

Wenn Sie mir sagen könnten, wo der Fehler in meinem Code liegt, verstehe ich ihn nicht. Wenn ich versuche, die Anzahl der Balken anzuzeigen, passen alle zusammen, aber wenn ich versuche, das Maximum oder Minimum zu erhalten, zeigt es nicht an, was es sollte.

 
missha32:

Ich würde das tun, aber ich kann die Daten möglicherweise nicht berechnen, weil ich nach anderen Werten von gestern suchen muss und es mühsam sein kann, die Funktionen neu zu schreiben.

Wenn Sie mir sagen könnten, wo der Fehler in meinem Code liegt, verstehe ich ihn nicht. Wenn ich die Anzahl der Balken auf dem Bildschirm anzeige, konvergiert alles, aber wenn ich versuche, das Maximum oder Minimum zu erhalten, zeigt es nicht an, was es sollte.

Du hast so viel Durcheinander angerichtet, dass ich nicht einmal mehr einen Sinn darin erkennen kann. Ein Berg von Umwandlungen vom einen zum anderen...

Und das alles, um das Maximum und Minimum des Tages zu finden?

Was funktioniert bei Ihnen also nicht?

//+------------------------------------------------------------------+
double GetPriceMaximum(const string symbol_name,const ENUM_TIMEFRAMES timeframe,int shift){
   double array[1];
   ResetLastError();
   if(CopyHigh(symbol_name,timeframe,shift,1,array)==1) return(array[0]);
   Print(__FUNCTION__," > Ошибка копирования цены High: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+
double GetPriceMinimum(const string symbol_name,const ENUM_TIMEFRAMES timeframe,int shift){
   double array[1];
   ResetLastError();
   if(CopyLow(symbol_name,timeframe,shift,1,array)==1) return(array[0]);
   Print(__FUNCTION__," > Ошибка копирования цены Low: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+

Möchten Sie die Höchstwerte des Tages herausfinden? Ich bitte Sie:

double max_price=GetPriceMaximum(Symbol(),PERIOD_D1,0);

Möchten Sie den Höchstwert von gestern herausfinden? Einfach:

double max_price=GetPriceMaximum(Symbol(),PERIOD_D1,1);

Sie möchten den Tiefststand von vorgestern wissen? Kein Problem:

double min_price=GetPriceMinimum(Symbol(),PERIOD_D1,2);

Nun, man könnte es sich einfach machen und reine Vierfachfunktionen verwenden:

double price_max=iHigh(Symbol(),PERIOD_D1,1);

Aber ich würde nicht raten - mit neuen Sprachkonstrukten, bereiten Sie sich und Ihren Code zu, dass eines Tages vervierfachen wird nicht unterstützt werden, und Selbstdisziplin und all das ;)

 
Artyom Trishkin:

Sie haben ein solches Durcheinander angerichtet, dass es schwer ist, es wieder zu sortieren. Ein Berg von Umwandlungen von einer Sache in eine andere...

Alles, um die Höhen und Tiefen des Tages zu finden?

Was funktioniert bei Ihnen also nicht?

Möchten Sie die Höchstwerte des Tages herausfinden? Ich bitte Sie:

Möchten Sie den Höchstwert von gestern herausfinden? Einfach:

Sie möchten den Tiefststand von vorgestern wissen? Kein Problem:

Nun, man könnte es sich einfach machen und reine Vierfachfunktionen verwenden:

Aber ich würde nicht raten - mit neuen Sprachkonstrukten, bereiten Sie sich und Ihre Codes, dass eines Tages vervierfachen wird nicht unterstützt werden, und Selbstdisziplin und all das ;)

Ich habe selbst einen Fehler gefunden ( vor lauter Unachtsamkeit habe ich die Parameter iHighest, iLowest falsch gelesen ).

Also nicht geeignet, da andere Berechnungen von gestern benötigt werden

 
missha32:

Ich habe den Fehler selbst gefunden (vor lauter Unaufmerksamkeit habe ich die Parameter iHighest und iLowest falsch gelesen).

Dies ist nicht geeignet, da andere Berechnungen von gestern erforderlich sind.

Ich verstehe nicht, warum Sie daran gehindert werden, die Daten auf eine einfache und natürliche Weise für andere Berechnungen zu erhalten.
 
missha32 jedes rote Signal für den Kauf und jedes blaue Signal für den Verkauf, um bei jedem Signal ein Füllen zu ermöglichen

if(Rot ) OrderSend( ... Kaufen ...) ; if( Blau ) OrderSend( ... Verkaufen ...) ;

Nur das Gegenteil, oben verkaufen, unten kaufen...

Die Funktion OnInit (die alte Funktion, die nach init fragt) wird beim Start des Indikators ausgeführt (beim Wechsel des Zeitrahmens, beim Neukompilieren, ...). Allen verwendeten Variablen muss ein Wert zugewiesen werden. Die Zeile SetIndexDrawBegin(0,i-1) ist in der Funktion OnInit vorhanden; der Variablen i muss ein Wert zugewiesen werden oder es muss eine Konstante verwendet werden

 
STARIJ:

if(Rot) OrderSend( ... Kaufen ...) ; if( Blau ) OrderSend( ... Verkaufen ...) ;

Nur das Gegenteil, oben verkaufen, unten kaufen...

Die Funktion OnInit (die alte Funktion, die nach init fragt) wird beim Start des Indikators ausgeführt (beim Wechsel des Zeitrahmens, beim Neukompilieren, ...). Allen verwendeten Variablen muss ein Wert zugewiesen werden. In der Funktion OnInit gibt es die Zeile SetIndexDrawBegin(0,i-1); der Variablen i muss ein Wert zugewiesen werden oder eine Konstante verwendet werden

Um ehrlich zu sein, verstehe ich nichts, ich bin neu in der Mql4-Programmierung, also helfen Sie mir bitte mit dem Code.
 
missha32:
Um ehrlich zu sein, verstehe ich nichts, ich bin neu in der Mql4 Programmierung, wenn Sie nichts dagegen haben, mir mit dem Code zu helfen.

Der Code hilft in der Regel bei der Freiberuflichkeit.

Hier - entweder der Algorithmus oder um Ihre Fehler zu korrigieren. Aber nicht, um sie noch einmal für Sie umzuschreiben.

Grund der Beschwerde: