Ich habe mich entschlossen, für mich selbst einen EA auf der Grundlage eines Beispiels aus dem mql4-Handbuch zu erstellen. Ich spiele jetzt seit einer Woche damit herum, aber ich bekomme immer irgendeine Fehlermeldung.
Bitte prüfen Sie, was falsch sein könnte, vielleicht sollte zusätzlich zu den Klammern noch etwas geändert oder entfernt werden.
Irrtümer:
'}' - unerwartetes Ende des Programms expert.mq4 218 3
'{' - unausgewogene Klammern expert.mq4 23 2
Versuchen Sie zu übersetzen, was in der Fehlermeldung steht. Ich denke, das ist der einfachste Weg, um die Fehlerursache herauszufinden
Was bewirkt dies beim Start?
#property indicator_level1 20// Задаём верхний уровень #property indicator_level2 80// Задаём нижний уровень
Sie verfügen über einen Expert Advisor, nicht über einen Indikator.
DPeriod, // "Redline" индикатора StochRSI.mq4
DPeriod=Bid; // Запрашивем значение "Redline"
warum ist er nicht als Typ festgelegt?
return; // Выход из start()
Wo ist die schließende Klammer?
};
Was sind das für Neuigkeiten?
Zeigen Sie mir, wo das in dem Beispiel steht?
bool Ans =false, // Ответ сервера после закрытияbool Cls_B=false,
Warum steht am Ende ein Komma und nicht ein Semikolon? Warum schreibt man dasselbe zweimal?
Wenn Sie ein Komma setzen, schreiben Sie es so:
bool Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false;// Критерий для открытия Sell
Was ist das?
[1]Close
Ich habe nicht weiter gesucht, ich wurde müde,
Geben Sie also nicht den Fehlern die Schuld, sie sind auf Ihre Unaufmerksamkeit zurückzuführen. Sie müssen die Hilfe noch einmal lesen und das Video ansehen, um einen Artikel über die Programmierung in dieser Sprache zu lesen.
Zunächst zweifelte ich an dem angegebenen Indikatorpuffer, aber nachdem ich beide nacheinander angegeben hatte, war der Fehler immer noch nicht verschwunden. Habe ich wieder irgendwo Mist gebaut?
Programmier-Guru-Hilfe). Ich war ein EA testen und ich denke, ich habe es endlich), sobald ich auf der EA-Tester einschalten und mein Bot beginnt die Tester friert und bleibt an Ort und Stelle für eine sehr lange Zeit, was kann in den Code, der den Tester verlangsamt sein?
miha91: Programmier-Guru-Hilfe). Ich war ein EA testen und ich denke, ich machte es durch), sobald ich den Tester einschalten und mein Bot beginnt die Tester friert und bleibt an Ort und Stelle für eine sehr lange Zeit, was kann in den Code, der den Tester verlangsamt sein?
Ich habe auch etwas unter der Badewanne, das raschelt! Was könnte das sein?
Ich versuche, einen Punkt auf der Linie nach seiner Änderung zu bestimmen, es funktioniert gut in allen Perioden, aber bei 1 und 4 Uhr gibt es regelmäßig einen Fehler von 100-200 Punkten, wie man damit umgehen?
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---
SetTLine(Red,"LineAlert",Time[15],High[15],0,High[0]+15*Point,0,0,1);
//---return(INIT_SUCCEEDED);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Уравнение прямой. |//| Вычисляет значение Y для X в точке пересечения с прямой. |//+----------------------------------------------------------------------------+//| Параметры: |//| x1,y1 - координаты первой точки, |//| x2,y2 - координаты второй точки, |//| x - значение, для которого вычислить Y |//+----------------------------------------------------------------------------+double EquationDirect(double x1,double y1,double x2,double y2,double x)
{
double tk;
if(x2==x1) return(y1);
tk=(y2-y1)/(x2-x1)*(x-x1)+y1;
return(NormalizeDouble(tk,Digits));
}
//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_TREND трендовая линия |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10] |//| p1 - ценовой уровень ( 0 - Low[10]) |//| t2 - время открытия бара ( 0 - текущий бар) |//| p2 - ценовой уровень ( 0 - Bid) |//| ry - луч (False - по умолчанию) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+void SetTLine(color cl,string nm="",
datetime t1=0,double p1=0,datetime t2=0,double p2=0,
bool ry=False,int st=0,int wd=1)
{
if(nm=="") nm=DoubleToStr(Time[0],0);
if(t1<=0) t1=Time[10];
if(p1<=0) p1=Low[10];
if(t2<=0) t2=Time[0];
if(p2<=0) p2=Bid;
if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_TREND,0,0,0,0,0);
ObjectSet(nm,OBJPROP_TIME1,t1);
ObjectSet(nm,OBJPROP_PRICE1,p1);
ObjectSet(nm,OBJPROP_TIME2,t2);
ObjectSet(nm,OBJPROP_PRICE2,p2);
ObjectSet(nm,OBJPROP_COLOR,cl);
ObjectSet(nm,OBJPROP_RAY,ry);
ObjectSet(nm,OBJPROP_STYLE,st);
ObjectSet(nm,OBJPROP_WIDTH,wd);
}
//+----------------------------------------------------------------------------+//| Параметры: |//| cd - код значка |//| cl - цвет значка |//| nm - наименование ("" - время открытия текущего бара) |//| t1 - время открытия бара (0 - текущий бар) |//| p1 - ценовой уровень (0 - Bid) |//| sz - размер значка (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetArrow(int cd,color cl,
string nm="",datetime t1=0,double p1=0,int sz=0)
{
if(nm=="") nm=DoubleToStr(Time[0],0);
if(t1<=0) t1=Time[0];
if(p1<=0) p1=Bid;
if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_ARROW,0,0,0);
ObjectSet(nm,OBJPROP_TIME1,t1);
ObjectSet(nm,OBJPROP_PRICE1,p1);
ObjectSet(nm,OBJPROP_ARROWCODE,cd);
ObjectSet(nm,OBJPROP_COLOR,cl);
ObjectSet(nm,OBJPROP_WIDTH,sz);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
int d=0;
int X_1,X_2,X3d;
double Y_1,Y_2,Y3d;
staticint _time_waiting=0;
staticint i;
//---
X_1= ObjectGet("LineAlert",OBJPROP_TIME1);
X_2 = ObjectGet("LineAlert", OBJPROP_TIME2);
Y_1 = ObjectGet("LineAlert", OBJPROP_PRICE1);
Y_2 = ObjectGet("LineAlert", OBJPROP_PRICE2);
SetArrow(6,Orange,"X1",X_1,Y_1,3);
SetArrow(6,Orange,"X2",X_2,Y_2,3);
X3d=Time[0];Y3d=EquationDirect(X_1,Y_1,X_2,Y_2,X3d);
SetArrow(6,Orange,"X",X3d,Y3d,3);
}
//+------------------------------------------------------------------+
Ich versuche, einen Punkt auf der Linie nach seiner Änderung zu bestimmen, in allen Perioden normalerweise funktioniert, aber bei 1 und 4 Uhr periodisch gibt es einen Fehler von 100-200 Punkte, wie man damit umgehen?
Ich habe es nicht ausprobiert.
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---
SetTLine(Red,"LineAlert",Time[15],High[15],0,High[0]+15*Point,0,0,1);
//---return(INIT_SUCCEEDED);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Уравнение прямой. |//| Вычисляет значение Y для X в точке пересечения с прямой. |//+----------------------------------------------------------------------------+//| Параметры: |//| x1,y1 - координаты первой точки, |//| x2,y2 - координаты второй точки, |//| x - значение, для которого вычислить Y |//+----------------------------------------------------------------------------+double EquationDirect(double x1,double y1,double x2,double y2,double x)
{
double tk;
if(x2==x1) return(y1);
tk=(y2-y1)/(x2-x1)*(x-x1)+y1;
return(NormalizeDouble(tk,Digits));
}
//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка объекта OBJ_TREND трендовая линия |//+----------------------------------------------------------------------------+//| Параметры: |//| cl - цвет линии |//| nm - наименование ( "" - время открытия текущего бара) |//| t1 - время открытия бара ( 0 - Time[10] |//| p1 - ценовой уровень ( 0 - Low[10]) |//| t2 - время открытия бара ( 0 - текущий бар) |//| p2 - ценовой уровень ( 0 - Bid) |//| ry - луч (False - по умолчанию) |//| st - стиль линии ( 0 - простая линия) |//| wd - ширина линии ( 1 - по умолчанию) |//+----------------------------------------------------------------------------+void SetTLine(color cl,string nm="",
datetime t1=0,double p1=0,datetime t2=0,double p2=0,
bool ry=False,int st=0,int wd=1)
{
if(nm=="") nm=DoubleToStr(Time[0],0);
if(t1<=0) t1=Time[10];
if(p1<=0) p1=Low[10];
if(t2<=0) t2=Time[0];
if(p2<=0) p2=Bid;
if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_TREND,0,0,0,0,0);
ObjectSet(nm,OBJPROP_TIME1,t1);
ObjectSet(nm,OBJPROP_PRICE1,p1);
ObjectSet(nm,OBJPROP_TIME2,t2);
ObjectSet(nm,OBJPROP_PRICE2,p2);
ObjectSet(nm,OBJPROP_COLOR,cl);
ObjectSet(nm,OBJPROP_RAY,ry);
ObjectSet(nm,OBJPROP_STYLE,st);
ObjectSet(nm,OBJPROP_WIDTH,wd);
}
//+----------------------------------------------------------------------------+//| Параметры: |//| cd - код значка |//| cl - цвет значка |//| nm - наименование ("" - время открытия текущего бара) |//| t1 - время открытия бара (0 - текущий бар) |//| p1 - ценовой уровень (0 - Bid) |//| sz - размер значка (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetArrow(int cd,color cl,
string nm="",datetime t1=0,double p1=0,int sz=0)
{
if(nm=="") nm=DoubleToStr(Time[0],0);
if(t1<=0) t1=Time[0];
if(p1<=0) p1=Bid;
if(ObjectFind(nm)<0) ObjectCreate(nm,OBJ_ARROW,0,0,0);
ObjectSet(nm,OBJPROP_TIME1,t1);
ObjectSet(nm,OBJPROP_PRICE1,p1);
ObjectSet(nm,OBJPROP_ARROWCODE,cd);
ObjectSet(nm,OBJPROP_COLOR,cl);
ObjectSet(nm,OBJPROP_WIDTH,sz);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
int d=0;
int X_1,X_2,X3d;
double Y_1,Y_2,Y3d;
staticint _time_waiting=0;
staticint i;
//---
X_1= ObjectGet("LineAlert",OBJPROP_TIME1);
X_2 = ObjectGet("LineAlert", OBJPROP_TIME2);
Y_1 = ObjectGet("LineAlert", OBJPROP_PRICE1);
Y_2 = ObjectGet("LineAlert", OBJPROP_PRICE2);
SetArrow(6,Orange,"X1",X_1,Y_1,3);
SetArrow(6,Orange,"X2",X_2,Y_2,3);
X3d=Time[0];Y3d=ObjectGetValueByShift("LineAlert", 0);
SetArrow(6,Orange,"X",X3d,Y3d,3);
}
//+------------------------------------------------------------------+
Frage an sachkundige Personen - Problem ist vor kurzem aufgetreten: auf der UPU Signal an die Post hat aufgehört zu kommen, bevor alles normal war, jetzt in das Protokoll des Terminals schreibt während des Tests: wurde sant, aber die Post nicht kommen nichts. Ich habe die UPU neu gestartet, das Terminal auch, ohne Ergebnis.
Hilfe bei den Wanzen!
Ich habe mich entschlossen, für mich selbst einen EA auf der Grundlage eines Beispiels aus dem mql4-Handbuch zu erstellen. Ich spiele jetzt seit einer Woche damit herum, aber ich bekomme immer irgendeine Fehlermeldung.
Bitte prüfen Sie, was falsch sein könnte, vielleicht sollte zusätzlich zu den Klammern noch etwas geändert oder entfernt werden.
Irrtümer:
'}' - unerwartetes Ende des Programms expert.mq4 218 3
'{' - unausgewogene Klammern expert.mq4 23 2
Versuchen Sie zu übersetzen, was in der Fehlermeldung steht. Ich denke, das ist der einfachste Weg, um die Fehlerursache herauszufinden
Was bewirkt dies beim Start?
Sie verfügen über einen Expert Advisor, nicht über einen Indikator.
warum ist er nicht als Typ festgelegt?
Wo ist die schließende Klammer?
Was sind das für Neuigkeiten?
Zeigen Sie mir, wo das in dem Beispiel steht?
Warum steht am Ende ein Komma und nicht ein Semikolon? Warum schreibt man dasselbe zweimal?
Wenn Sie ein Komma setzen, schreiben Sie es so:
Was ist das?
Ich habe nicht weiter gesucht, ich wurde müde,
Geben Sie also nicht den Fehlern die Schuld, sie sind auf Ihre Unaufmerksamkeit zurückzuführen. Sie müssen die Hilfe noch einmal lesen und das Video ansehen, um einen Artikel über die Programmierung in dieser Sprache zu lesen.
die Fehler behoben... Aber während des Tests heißt es "Benutzerdefinierte Indikatoren können nicht überprüft werden".
Zunächst zweifelte ich an dem angegebenen Indikatorpuffer, aber nachdem ich beide nacheinander angegeben hatte, war der Fehler immer noch nicht verschwunden. Habe ich wieder irgendwo Mist gebaut?
Programmier-Guru-Hilfe). Ich war ein EA testen und ich denke, ich machte es durch), sobald ich den Tester einschalten und mein Bot beginnt die Tester friert und bleibt an Ort und Stelle für eine sehr lange Zeit, was kann in den Code, der den Tester verlangsamt sein?
Ich versuche, einen Punkt auf der Linie nach seiner Änderung zu bestimmen, es funktioniert gut in allen Perioden, aber bei 1 und 4 Uhr gibt es regelmäßig einen Fehler von 100-200 Punkten, wie man damit umgehen?
Ich versuche, einen Punkt auf der Linie nach seiner Änderung zu bestimmen, in allen Perioden normalerweise funktioniert, aber bei 1 und 4 Uhr periodisch gibt es einen Fehler von 100-200 Punkte, wie man damit umgehen?
Ich habe es nicht ausprobiert.
Versuchen Sie es, ich habe es nicht versucht.
Alternativ könnten Sie auch so vorgehen
In modernen Begriffen
Alternativ könnten Sie auch so vorgehen
Im modernen Sprachgebrauch.
Es scheint zu funktionieren, ich werde es weiter beobachten.
Ich danke Ihnen!