Decidi fazer um EA para mim com base em um exemplo do manual mql4. Já faz uma semana que estou mexendo nisso, mas isso sempre me dá algum tipo de erro.
Favor verificar o que pode estar errado, talvez algo deva ser mudado ou removido além de parênteses.
Erros:
'}' - fim inesperado do programa expert.mq4 218 3
{' - parênteses desequilibrados expert.mq4 23 2
Tente traduzir o que está escrito nos erros. Acho que esta é a maneira mais fácil de descobrir a causa do erro
O que isto faz no início?
#property indicator_level1 20// Задаём верхний уровень #property indicator_level2 80// Задаём нижний уровень
Você tem um Conselheiro Especialista, não um indicador.
DPeriod, // "Redline" индикатора StochRSI.mq4
DPeriod=Bid; // Запрашивем значение "Redline"
por que não é definido como um tipo?
return; // Выход из start()
onde está o parêntese de fechamento?
};
Quais são essas notícias?
Mostre-me onde está escrito no exemplo?
bool Ans =false, // Ответ сервера после закрытияbool Cls_B=false,
por que há uma vírgula no final e não um ponto e vírgula? por que escrever a mesma coisa duas vezes?
bool Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false;// Критерий для открытия Sell
O que é isso?
[1]Close
Eu não olhei mais, fiquei cansado,
Portanto, não culpe os erros. Eles vêm de sua falta de atenção. Você precisa ler a ajuda novamente, e assistir ao vídeo para ler um artigo sobre como programar neste idioma.
Primeiro duvidei do tampão indicador especificado, mas tendo especificado ambos por sua vez, o erro ainda não desapareceu. Fiz asneira em algum lugar novamente?
Programação de ajuda de Guru). Eu estava testando um EA e acho que consegui passar) assim que ligo o EA tester e meu bot começa a trabalhar o testador congela e permanece no lugar por muito tempo, o que pode estar no código que retarda o testador?
miha91: Programação de ajuda de Guru). Eu estava testando um EA e acho que consegui passar) assim que ligo o testador e meu bot começa a trabalhar, o testador congela e permanece no lugar por muito tempo, o que pode estar no código que retarda o testador?
Também tenho algo sob o barulho da banheira! O que poderia ser?
Estou tentando determinar um ponto na linha após sua modificação, ele funciona bem em todos os períodos, mas à 1 e 4 horas há periodicamente um erro de 100-200 pontos, como lidar com ele?
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Estou tentando determinar um ponto na linha após sua modificação, em todos os períodos normalmente funciona, mas às 1 e 4 horas periodicamente há um erro de 100-200 pontos, como lidar com ele?
Eu não tentei.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
A questão para o problema das pessoas com conhecimento surgiu recentemente: no sinal da UPU para o correio deixou de vir, antes que tudo fosse normal, agora no registro do terminal escreve durante o teste:foi cantado, mas o correio não vem nada. Reiniciei a UPU, o terminal também, sem resultado.
Ajuda com os bugs!
Decidi fazer um EA para mim com base em um exemplo do manual mql4. Já faz uma semana que estou mexendo nisso, mas isso sempre me dá algum tipo de erro.
Favor verificar o que pode estar errado, talvez algo deva ser mudado ou removido além de parênteses.
Erros:
'}' - fim inesperado do programa expert.mq4 218 3
{' - parênteses desequilibrados expert.mq4 23 2
Tente traduzir o que está escrito nos erros. Acho que esta é a maneira mais fácil de descobrir a causa do erro
O que isto faz no início?
Você tem um Conselheiro Especialista, não um indicador.
por que não é definido como um tipo?
onde está o parêntese de fechamento?
Quais são essas notícias?
Mostre-me onde está escrito no exemplo?
por que há uma vírgula no final e não um ponto e vírgula? por que escrever a mesma coisa duas vezes?
Se você colocar uma vírgula, escreva assim:
O que é isso?
Eu não olhei mais, fiquei cansado,
Portanto, não culpe os erros. Eles vêm de sua falta de atenção. Você precisa ler a ajuda novamente, e assistir ao vídeo para ler um artigo sobre como programar neste idioma.
consertou os erros... Mas durante o teste diz "Os indicadores personalizados não podem ser verificados".
Primeiro duvidei do tampão indicador especificado, mas tendo especificado ambos por sua vez, o erro ainda não desapareceu. Fiz asneira em algum lugar novamente?
Programação de ajuda de Guru). Eu estava testando um EA e acho que consegui passar) assim que ligo o testador e meu bot começa a trabalhar, o testador congela e permanece no lugar por muito tempo, o que pode estar no código que retarda o testador?
Estou tentando determinar um ponto na linha após sua modificação, ele funciona bem em todos os períodos, mas à 1 e 4 horas há periodicamente um erro de 100-200 pontos, como lidar com ele?
Estou tentando determinar um ponto na linha após sua modificação, em todos os períodos normalmente funciona, mas às 1 e 4 horas periodicamente há um erro de 100-200 pontos, como lidar com ele?
Eu não tentei.
Tente, eu não tentei.
Alternativamente, você poderia ir assim
Em termos modernos
Alternativamente, você poderia ir assim
Na linguagem moderna.
Parece que está funcionando, vou continuar observando.
Obrigado!