Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 252
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
> err=StringToInteger((string)err)
das sollte in die Annalen eingehen ;-)
ursprünglich in err haben Sie offensichtlich int von GetLastError(). Konvertiert den Fehlercode in eine lesbare Beschreibung ErrorDescription(err); vorausgesetzt, dass #include <stdlib.mqh> aktiviert ist.
aber die Art und Weise, wie es geschrieben ist, ist ein Flop.
PS/ Und lernen Sie nicht die MQL-Programmierung. MQL 4 und 5 sind Zielsprachen für eine bestimmte Plattform.
Können Sie mir bitte sagen, ob Sie es auf diese Weise schreiben können. Es will keine Transaktionen öffnen. Vielleicht ist das Format der berechneten Zahlen falsch? oder andere Fehler im Code?
double TakeLong(double shp)
{
int CurrentDayRange=0, fiveDayATR=0, take=0;
double TP_ATR=0;
//////Pivot-Eingänge
double P, S1, R1, S2, R2, S3, R3;
double LastHigh, LastLow, x;
int counted_bars = IndicatorCounted();
int Grenze, i;
shp=iHigh(Symbol(),PERIOD_D1,0);
//---- Berechnung des Pivot-Indikators
if(gezählte_Balken == 0)
{
x = Zeitraum();
wenn(x > 240)
zurück(-1);
}
if(gezählte_Balken < 0)
zurück(-1);
Grenze = (Balken - gezählte_Balken) - 1;
//----
for(i = limit; i >= 0; i--)
{
if(Hoch[i+1] > LetzterHöchststand)
LastHigh = High[i+1];
//----
if(Tiefstwert[i+1] < Letzter Tiefstwert)
LastLow=Low[i+1];
if(ZeitTag(Zeit[i]) != ZeitTag(Zeit[i+1])
{
P = (LastHigh + LastLow + Close[i+1]) / 3;
R1 = (2*P) - LastLow;
S1 = (2*P) - LastHigh;
R2 = P + (LetzterHöchststand - LetzterTiefststand);
S2 = P - (LastHigh - LastLow);
R3 = (2*P) + (LastHigh - (2*LastLow));
S3 = (2*P) - ((2* LastHigh) - LastLow);
LastLow = Open[i];
LastHigh = Open[i];
}
}
////ATR Berechnung
for (i=1;i<6;i++)
{ if(iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i)>0) FiveDayATR += (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i));}
FiveDayATR = NormalizeDouble(FiveDayATR/5,Digits());
CurrentDayRange = (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i));
if(FiveDayATR-CurrentDayRange>0) TP_ATR=Ask+FiveDayATR-CurrentDayRange; sonst TP_ATR=0;
if (Bid>R1 && TP_ATR==0) take=shp;
else if (Bid<R1 && R1<TP_ATR) take=R1;
sonst take=TP_ATR;
return(take);
}
Der vorgeschlagene Code sieht wie ein Indikator aus. Die Geschäfte werden durch einen Expert Advisor oder ein Skript eröffnet. Der Aufruf der Funktion OrderSend ist im Indikator nicht erlaubt. Der Indikator kann einen Alarm auslösen - fügen Sie an der entsprechenden Stelle die Funktion Alarmruf oder Ton ein
Der vorgeschlagene Kodex ist dem Indikator ähnlich. Die Geschäfte werden durch einen Expert Advisor oder ein Skript eröffnet. Der Aufruf der Funktion OrderSend ist im Indikator verboten. Der Indikator kann ein Signal geben - fügen Sie den Aufruf der Alert-Funktion oder den Ton an der entsprechenden Stelle ein
Dies ist der TP-Definitionscode, der das Ergebnis an OrderSend sendet. Ohne diesen komplexen Algorithmus werden die Trades zwar gesendet, aber es gibt keine Möglichkeit, sie zu senden. Ich rufe die Funktion TP = TakeLong(SHP) auf;
Es gibt viele Möglichkeiten der Fehlersuche - der Prozess der Fehlersuche, wenn ein Fehler festgestellt wurde. Die erste ist F5 - Debugging in MetsEditor starten. 2) Alerts verwenden, um die Ausführung zu verfolgen. 3 und 4) geben Debugging-Informationen in Textbeschriftungen und die Funktion Kommentar aus. Wählen Sie den bequemen Weg und debuggen Sie diese einfache Funktion - dann werden Sie ein Programmierer. Ein Programm mit Tausenden von Zeilen gilt als komplex.
Können Sie mir bitte sagen, ob Sie es so schreiben können. es will keine Transaktionen öffnen. vielleicht ist das Format der berechneten Zahlen falsch? oder ein anderer Fehler im Code?
MathAbs( Close1[i] - Open1[i] ) / Point + 1
MathAbs( Close2[i] - Open2[i] ) / Point + 1
Im vollständigen Code sieht es so aus
double Close1 = iClose(Symbol(), 0, i);
double Open1 = iOpen(Symbol(), 0, i);
double Close2 = iClose(Symbol(), 0, i+1);
double Open2 = iOpen(Symbol(), 0, i+1);
MathAbs( Close1[i] - Open1[i] ) / Point + 1
MathAbs( Close2[i] - Open2[i] ) / Point + 1
if (Close1 < Open1 && Close2 > Open2){
BUY();
}
if (Close1 > Open1 && Close2 < Open2){
SELL();
}
Ist das richtig? Wie kann ich es schaffen?
Haben Sie es auf dem M1-Demokonto ausprobiert? Was bekommen Sie?
Haben Sie es mit einem M1-Demokonto versucht? Wie sieht es aus?
Können Sie mir sagen, warum das Schleppnetz bei jedem Tick ausgelöst wird?