DPeriod, // "Redline" индикатора StochRSI.mq4
DPeriod=Bid; // Запрашивем значение "Redline"
¿por qué no se establece como tipo?
return; // Выход из start()
¿dónde está el paréntesis de cierre?
};
¿Qué es esta noticia?
¿Muéstrame dónde está escrito en el ejemplo?
bool Ans =false, // Ответ сервера после закрытияbool Cls_B=false,
¿por qué hay una coma al final y no un punto y coma? ¿por qué escribir lo mismo dos veces?
Si pones una coma, escríbelo así:
bool Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false;// Критерий для открытия Sell
¿Qué es?
[1]Close
No busqué más, me cansé,
Así que no culpes a los errores, vienen de tu falta de atención. Tienes que volver a leer la ayuda y ver el vídeo para leer un artículo sobre cómo programar en este lenguaje.
arreglado los errores... Pero durante la prueba dice "No se pueden comprobar losindicadores personalizados ".
Primero dudé del búfer indicador especificado, pero tras especificar ambos a su vez, el error sigue sin desaparecer. ¿He vuelto a meter la pata en algún sitio?
Ayuda del Gurú de la Programación). Estaba probando un EA y creo que por fin lo he conseguido) en cuanto enciendo el probador de EA y mi bot empieza a funcionar el probador se congela y se queda en el sitio durante mucho tiempo, ¿qué puede haber en el código que ralentice el probador?
miha91: Ayuda del Gurú de la Programación). Estaba probando un EA y supongo que lo he conseguido) en cuanto enciendo el probador y mi bot empieza a funcionar el probador se congela y se queda mucho tiempo, ¿qué puede haber en el código que ralentice el probador?
También tengo algo debajo de la bañera crujiendo. ¿Qué puede ser?
Estoy tratando de determinar un punto de la línea después de su modificación, funciona bien en todos los períodos, pero a la 1 y a las 4 hay periódicamente un error de 100-200 puntos, ¿cómo solucionarlo?
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Estoy tratando de determinar un punto en la línea después de su modificación, en todos los períodos normalmente funciona, pero a la 1 y a las 4 periódicamente hay un error de 100-200 puntos, ¿cómo tratar con él?
No lo he probado.
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Pregunta a los conocedores-problema surgió recientemente: en la señal de la UPU para el correo ha dejado de venir, antes de que todo era normal, ahora en el registro de la terminal escribe durante la prueba: ha sido sant, pero el correo no viene nada. He reiniciado la UPU, el terminal también, sin resultado.
¡Ayuda con los bichos!
Decidí hacer un EA para mí en base a un ejemplo del manual de mql4. Llevo una semana trasteando con él, pero siempre me da algún tipo de error.
Por favor, compruebe qué puede estar mal, tal vez haya que cambiar o eliminar algo además de los paréntesis.
Errores:
'}' - final inesperado del programa expert.mq4 218 3
'{' - paréntesis desequilibrados expert.mq4 23 2
Trate de traducir lo que está escrito en los errores. Creo que esta es la forma más fácil de averiguar la causa del error
¿Qué hace esto al principio?
Usted tiene un Asesor Experto, no un indicador.
¿por qué no se establece como tipo?
¿dónde está el paréntesis de cierre?
¿Qué es esta noticia?
¿Muéstrame dónde está escrito en el ejemplo?
¿por qué hay una coma al final y no un punto y coma? ¿por qué escribir lo mismo dos veces?
Si pones una coma, escríbelo así:
¿Qué es?
No busqué más, me cansé,
Así que no culpes a los errores, vienen de tu falta de atención. Tienes que volver a leer la ayuda y ver el vídeo para leer un artículo sobre cómo programar en este lenguaje.
arreglado los errores... Pero durante la prueba dice "No se pueden comprobar losindicadores personalizados ".
Primero dudé del búfer indicador especificado, pero tras especificar ambos a su vez, el error sigue sin desaparecer. ¿He vuelto a meter la pata en algún sitio?
Ayuda del Gurú de la Programación). Estaba probando un EA y supongo que lo he conseguido) en cuanto enciendo el probador y mi bot empieza a funcionar el probador se congela y se queda mucho tiempo, ¿qué puede haber en el código que ralentice el probador?
Estoy tratando de determinar un punto de la línea después de su modificación, funciona bien en todos los períodos, pero a la 1 y a las 4 hay periódicamente un error de 100-200 puntos, ¿cómo solucionarlo?
Estoy tratando de determinar un punto en la línea después de su modificación, en todos los períodos normalmente funciona, pero a la 1 y a las 4 periódicamente hay un error de 100-200 puntos, ¿cómo tratar con él?
No lo he probado.
Inténtalo, no lo he intentado.
Como alternativa, puede hacer lo siguiente
En términos modernos
Como alternativa, puede hacer lo siguiente
En lenguaje moderno.
Parece que funciona, seguiré observando.
Gracias.