Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 52
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Was ist zu tun, wenn der Stopp/Stop 200 beträgt?
sondern
tp=NormalizeDouble((Preis+(TakeProfit*_Point)),Digits);
auf einen Dollar-Yen ergibt 317.000 zum Kurs von 117.000
erwartetes Ergebnis 117.200
Wenn Punkt()==0,001 (bei USDJPY), dann ist 200*0,001 gleich 0,2
Wenn wir nun 0,2 zu 117,0 addieren, erhalten wir 117,2
Wo ist die "Ungerechtigkeit"?
Wenn Punkt()==0,001 (bei USDJPY), dann ist 200*0,001 gleich 0,2
Wenn wir nun 0,2 zu 117,0 addieren, erhalten wir 117,2
Und wo ist die "Ungerechtigkeit"?
es wird erwartet, dass 117+(200*_Point) 117,200 ergibt
er wird normalerweise am EURUSD getestet
Vitaly hat es oben beschrieben, vielen Dank.
Ich glaube, ich habe sie gefunden.
Ich denke, es ist gut genug als Zwischenalgorithmus und jetzt ist es notwendig, diese Momente irgendwie zu filtern
https://www.mql5.com/ru/charts/6351907/audjpy-m5-metaquotes-software-corp
117+(200*_Point) wird voraussichtlich eine Ausgabe von 117.200 ergeben
...Nun, das ist es, was er gibt... Ich habe Ihnen die Berechnung gezeigt. Oder haben Sie mehrere Währungen und übernehmen Daten von einem "nicht einheimischen" Symbol?
Dann verwenden Sie SymbolInfoDouble() und (int)SymbolInfoInteger() anstelle von Point() und Digits()
Nun, das ist es, was er gibt... Ich habe Ihnen die Berechnung gezeigt. Oder haben Sie eine Mehrfachwährung und übernehmen die Daten von einem "nicht einheimischen" Symbol?
Dann verwenden Sie anstelle von Point() und Digits() SymbolInfoDouble() und (int)SymbolInfoInteger()
Danke, es funktioniert)))
Ich suche derzeit nach einer Möglichkeit, einen Trailing Stop in eine Kette von Aufträgen einzufügen
Ich habe 10 Aufträge in 200er-Schritten zwischen 115.000 und 117.000.
Jedes Los ist um den Wert x größer als das vorherige Los
Ziel ist es, die gesamte Auftragskette mit einem Trailing-Stopp zu versehen, wobei die folgende Berechnung verwendet wird (Durchschnittspreis)+(y*_Point)
Ich habe den Trailing-Stop. Meine Frage ist, wie man ihn mit dem Durchschnittspreis für den gesamten Stapel verbindet und wie er in Abhängigkeit von den Lots berechnet wird
Danke, es funktioniert)))
Ich suche nach einer Möglichkeit, einen Nachspann in eine Auftragskette einzufügen.
Ich habe 10 Aufträge in 200er-Schritten von 115.000 bis 117.000
Jedes Los ist um den Wert x größer als das vorherige Los
Ziel ist es, die gesamte Auftragskette mit einem Trailing-Stop zu versehen, wobei die folgende Berechnung verwendet wird (Durchschnittspreis)+(y*_Point)
Ich habe einen Trailing-Stopper selbst; die Frage ist, wie man ihn mit dem Durchschnittspreis des gesamten Stapels verbindet und wie er in Abhängigkeit von den Lots berechnet wird
Ein allgemeiner Rat: Lernen Sie das Programmieren von Grund auf. Dann werden Sie solche Fragen nicht haben, denn Programmieren ist keine leichte Aufgabe.
Und zum Kern der Frage: Sie müssen also ALLE Aufträge in einer Schleife durchgehen, nur die "notwendigen" auswählen und sie ändern. Allerdings muss man bei dieser Frage sehr vorsichtig sein, denn die Wahrscheinlichkeit, dass der ausgewählte Auftrag nicht funktioniert, ist sehr hoch.
Ein allgemeiner Ratschlag: Lernen Sie das Programmieren von Grund auf. Dann wird es solche Fragen nicht geben, denn Programmieren ist nicht einfach.
Und zum Kern der Frage: Sie müssen also ALLE Aufträge in der Schleife durchgehen, nur "notwendige" auswählen und sie ändern. Allerdings muss man bei dieser Frage sehr vorsichtig sein, denn die Wahrscheinlichkeit, dass der ausgewählte Auftrag nicht funktioniert, ist sehr hoch.
Guten Tag an alle, ich habe einen EA auf Basis von MAs geschrieben. (Ich selbst entwickle seit einer Weile in MQL4 und habe beschlossen, mit etwas Einfachem zu beginnen. Ich wollte also wissen, was ich falsch gemacht habe. Das Wesen des Expert Advisors ist einfach: Geben Sie einen Alarm aus, wenn zwei oder drei MAs gekreuzt werden (je nach METHODE: Aggressiv = Kreuzung von zwei MAs, konservativ = Kreuzung von 3 MAs) ... Das ist alles. Ich werde selbst auf den Markt gehen. In meinem Expert Advisor habe ich zwei Funktionen vorgeschrieben: Aggressiv - dies ist ein Signal beim einfachen Überkreuzen der beiden schnellsten MAs und Konservativ - beim Überkreuzen der beiden schnellsten MAs sollten Sie auch den langsamsten berücksichtigen (d.h. das Signal in Trendrichtung). Das Problem ist, dass der Expert Advisor nur EINEN Alarm ausgibt (wenn er startet oder den Zeitrahmen wechselt) und bei allen folgenden Signalen schweigt! Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, was los ist. Ich habe die Funktion für alle Ereignisse gemäß den MQL4-Regeln vorgeschrieben. Natürlich könnte ich alles ohne Funktionen im On Tick-Ereignis registrieren, aber ich möchte Funktionen separat registrieren, damit dieFunktionen leichtaufgerufen werden können und ich möchte mit der Zeit neue "Filter"-Funktionen hinzufügen.
Code
================================================================================================
extern bool Metod=false; // Auswahl der Methode: Konservativ oder Aggressiv.
extern int Time_Frame=1;//Zeitrahmen
input bool Metod=false; //Konservativ-TRUE | Aggressiv-FALSE
extern inttern FastMA_Parametr=5;
extern int int intMA_Parametr=8;
extern int SlowMA_Parametr=18;
extern inttern TrendMA=163;
extern bool DemarkGo=false;
extern inttern Demperiod=4;
int rez;// wenn MA nach unten kreuzt, rez=-1. wenn nach oben, rez=1.
//+------------------------------------------------------------------+
// MA initialisieren
double FastMA=iMA(Symbol(),Time_Frame,FastMA_Parametr,0,3,0,0);// FastMA
double MiddiMA=iMA(Symbol(),Time_Frame,MidMA_Parametr,0,3,0,0);// Durchschnittlicher MA
double SlowMA=iMA(Symbol(),Time_Frame,SlowMA_Parametr,0,1,0,0); Slow МА
//+------------------------------------------------------------------+
int OnInit()
{
rez=0;
return(INIT_SUCCEEDED);
}
//=======================================
//------------------------------------------------------------------------------
void OnDeinit(const int reason)
{
}
//=============================================
//+---------------------Funktion für konservatives Signal bei Metod=true---------------------------------------------+
int konservativ()
//Prüfen Sie auf eine Kreuzung von 3 Linien nach oben
{
if (Metod==true)
{
if(FastMA>MiddiMA&&MiddiMA>SlowMA&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. konservativ");
rez=1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
zurück(rez);
}
//Prüfen, ob sich die 3 Linien nach unten kreuzen
if(FastMA<MiddiMA&&MiddiMA<SlowMA&&rez>=0)
{
Alert(Symbol(),Time_Frame," ---- DOWN----. konservativ");
rez=-1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
zurück(rez);
}
}
zurück(rez);
}
//=================================================
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aggressive Funktion, wenn
int Agressiv()
// Prüfen, ob sich 2 Linien nach oben kreuzen, ohne langsam zu sein
{
if (Metod==false)
{
if(FastMA>MiddiMA&&rez<=0)
{
Alert(Symbol(),Time_Frame,"----Up----. aggressiv");
rez=1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
//Prüfen, ob sich 2 Linien nach unten kreuzen, ohne dass eine langsame Linie vorhanden ist
if(FastMA<MiddiMA&&rez>=0)
{
Alert(Symbol(),Time_Frame," ---- DOWN----. Aggressiv");
rez=-1;
Comment("FastMA ",FastMA," MiddiMA ",MiddiMA," SlowMA ",SlowMA," rez ",rez);
}
}
zurück(rez);
}
Es ist nicht hoch, aber 100 %. Im Moment ist es der letzte Auftrag und die anderen sind auf Pause, aber das Schema ist nicht präzise und ich würde es gerne besser machen.
Nein, nicht 100 %. Vielleicht meinen Sie aber auch etwas anderes.
Im Allgemeinen läuft der Algorithmus wie folgt ab:
Sie richten eine Schleife ein, die alle Aufträge durchläuft.
Sie wählen den nächsten Auftrag aus, um mit ihm zu arbeiten.
Sie prüfen, ob diese Bestellung erforderlich ist... Wenn nicht, wird die nächste Iteration der Schleife...
Wenn sie "gebraucht" wird, prüfen Sie, ob sie sich für eine Änderung eignet. Vergleichen Sie einfach, wie weit der Kurs von seinem StopLoss-Niveau entfernt ist
Wenn der Abstand ausreichend ist, wird die Bestellung geändert.
Wenn Sie also eine Änderungsfunktion mit einer Schleife für alle Aufträge haben und die Schleife vor ihrem Aufruf auch funktioniert, dann wird der ausgewählte Auftrag geändert...
Nein, nicht 100 %. Vielleicht meinen Sie aber auch etwas anderes.
Im Allgemeinen läuft der Algorithmus wie folgt ab:
Sie richten eine Schleife ein, die alle Aufträge durchläuft.
Sie wählen den nächsten Auftrag aus, um mit ihm zu arbeiten.
Sie prüfen, ob diese Bestellung erforderlich ist... Wenn nicht, wird die nächste Iteration der Schleife...
Wenn sie "benötigt" wird, prüfen Sie, ob sie für eine Änderung geeignet ist. Vergleichen Sie einfach, wie weit der Kurs von seinem StopLoss-Niveau entfernt ist
Ist sie weit genug entfernt, wird der Auftrag geändert.
Wenn Sie also eine Änderungsfunktion mit einer Schleife für alle Aufträge haben und die Schleife vor ihrem Aufruf auch funktioniert, dann wird der ausgewählte Auftrag geändert...