- [¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti.
- Preguntas de los principiantes MQL4 MT4 MetaTrader 4
- ¡Pide!
¿Es así como se puede prescribir la función? Pero el color no cambia en los niveles individuales ¿puede haber un error en alguna parte o hay que añadir algo más?
int fibo(datetime X1, double Y1, datetime X2, double Y2)
{
ObjectCreate("Fibo", OBJ_FIBO, 0, 0, 0, 0); // Crear objeto de niveles Fibonacci
ObjectSet("Fibo",OBJPROP_COLOR,clrRed); // color de la diagonal
//ObjectSet("Fibo",OBJPROP_LEVELCOLOR,clrBlue); //el color de los niveles es el mismo
//ObjectSetInteger(0, "Fibo",OBJPROP_BACK,true);//--- mostrar en primer plano (false) o en segundo plano (true)
ObjectSet("Fibo",OBJPROP_FIBOLEVELS,13); //establecer el número de niveles del objeto
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.000);//configura el valor de cada nivel del objeto
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,0,0.000);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,0,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,0,STYLE_SOLID);//Line
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,0,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",0, "0.000");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+1,0.146);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,1,0.146);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,1,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,1,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,1,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",1, "0,146");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+2,0.236);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,2,0.236);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,2,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,2,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,2,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",2, "0,236");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+3,0.382);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,3,0.382);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,3,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,3,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,3,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",3, "0,382");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+4,0.5);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,4,0.5);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,4,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,4,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,4,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",4, "0,5");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+5,0.618);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,5,0.618);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,5,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,5,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,5,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",5, "0,618");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+6,0.764);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,6,0.764);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,6,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,6,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,6,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",6, "0,764");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+7,1);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,7,1);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,7,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,7,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,7,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",7, "1");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+8,1.236);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,8,1.236);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,8,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,8,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,8,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",8, "1,236");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+9,1.618);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,9,1.618);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,9,clrGreen); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,9,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,9,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",9, "1,618");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+10,-0.236);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,10,-0.236);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,10,clrBlue); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,10,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,10,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",10,"-0.236");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+11,-0.618);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,11,-0.618);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,11,clrBlue); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,11,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,11,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",11,"-0,618");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+12,-1);
ObjectSetDouble(0, "Fibo",OBJPROP_LEVELVALUE,12,-1);
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELCOLOR,12,clrBlue); // color del nivel
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELSTYLE,12,STYLE_SOLID);//Línea
ObjectSetInteger(0, "Fibo",OBJPROP_LEVELWIDTH,12,1); //--- espesor del nivel
ObjectSetFiboDescription("Fibo",12,"-1");
ObjectMove("Fibo", 1, X1, Y1);
ObjectMove("Fibo",0, X2, Y2);
return(0);
}
int fFiboLevels(string Prefix,int Number ,int Bar1,double Price1 ,int Bar2,double Price2 ,int Bar3,double Price3 ,color Цвет,color ЦветОтката ,int Видимость=0,int Толщина=1 ,int УровнейПродолжения=6,int УровнейОтката=5 ,int Стиль=STYLE_SOLID,int СтильУровня=STYLE_DOT ,bool Луч=false,bool Фон=false){ int Error; string Name; datetime Time1=Time[Bar1], Time2=Time[Bar2], Time3=Time[Bar3]; if( Bar1<=Bar2 || Bar2<=Bar3 || Bar3<1 || Price1<Zero || Price2<Zero || Price3<Zero || Price3-MathMax(Price1,Price2)>Zero || MathMin(Price1,Price2)-Price3>Zero ) return(MyError); Name=Prefix+"Targets "; if( Number>0 ) Name=Name+Number; if( ObjectFind(Name)>=0 ) { if( !ObjectDelete(Name) ) { Error=GetLastError(); PlaySound("alert.wav"); Print("***** "+Name+" не создан, ошибка удаления "+Error); return(Error); } } if( ObjectCreate(Name,OBJ_EXPANSION,0,Time1,Price1,Time2,Price2,Time3,Price3) ){ if( !ObjectSet(Name, OBJPROP_FIBOLEVELS, УровнейПродолжения) || !ObjectSet(Name, OBJPROP_COLOR, Цвет) || !ObjectSet(Name, OBJPROP_STYLE, Стиль) || !ObjectSet(Name, OBJPROP_WIDTH, Толщина) || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость) || !ObjectSet(Name, OBJPROP_LEVELCOLOR, Цвет) || !ObjectSet(Name, OBJPROP_LEVELSTYLE, СтильУровня) || !ObjectSet(Name, OBJPROP_RAY, Луч) || !ObjectSet(Name, OBJPROP_BACK, Фон) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+0, 1) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+1, 1.618) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+2, 2.618) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+3, 4.236) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+4, 6.854) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+5, 11.09) ){ Error=GetLastError(); PlaySound("alert.wav"); Print("**** "+Name+" - ошибка модификации параметров "+Error); } } else { Error=GetLastError(); PlaySound("alert.wav"); Print("***** "+Name+" не создан, ошибка "+Error); } Name=Prefix+"Recoils "; if( Number>0 ) Name=Name+Number; if( ObjectFind(Name)>=0 ) { if( !ObjectDelete(Name) ) { Error=GetLastError(); PlaySound("alert.wav"); Print("***** "+Name+" не создан, ошибка удаления "+Error); return(Error); } } if( ObjectCreate(Name,OBJ_FIBO,0,Time1,Price1,Time2,Price2) ){ if( !ObjectSet(Name, OBJPROP_FIBOLEVELS, УровнейОтката) || !ObjectSet(Name, OBJPROP_COLOR, Цвет) || !ObjectSet(Name, OBJPROP_STYLE, Стиль) || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость) || !ObjectSet(Name, OBJPROP_LEVELCOLOR, ЦветОтката) || !ObjectSet(Name, OBJPROP_LEVELSTYLE, СтильУровня) || !ObjectSet(Name, OBJPROP_RAY, false) || !ObjectSet(Name, OBJPROP_BACK, Фон) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+0, 0) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+1, 0.236) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+2, 0.382) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+3, 0.618) || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+4, 1) ){ Error=GetLastError(); PlaySound("alert.wav"); Print("**** "+Name+" - ошибка модификации параметров "+Error); } } else { Error=GetLastError(); PlaySound("alert.wav"); Print("***** "+Name+" не создан, ошибка "+Error); } return(Error); }
¿Es así como se puede prescribir la función? Pero el color no cambia en los niveles individuales ¿puede haber un error en alguna parte o hay que añadir algo más?
¿Busca un indicador o un asesor experto? Si lo utiliza para un Asesor Experto, entonces el cálculo de los valores de estos niveles será suficiente.
Para el EA - Quiero entender qué función se puede utilizar para separar cada nivel para asignar un valor de la señal? Mi idea para el ZigZag es encontrar coordenadas - el Asesor Experto dibuja niveles de Fibonacci y desde cada nivel (a una distancia un poco mayor que el spread) retrocedemos y establecemos niveles paralelos - los tomamos como base para las decisiones de apertura de la orden.
Para OBJ_FIBO, el color es el mismo para todos los niveles. Si estás realmente desesperado, dibuja una simple OBJ_TRENDLINE en diferentes colores.
Para el EA - Quiero entender qué función se puede utilizar para separar cada nivel para asignar un valor de la señal? Mi idea para ZigZag es encontrar coordenadas - el EA dibuja niveles de Fibonacci y desde cada nivel (a una distancia un poco mayor que el spread) retrocedemos y establecemos niveles paralelos - los tomamos como base para tomar decisiones sobre la apertura de una orden.
No tienes que separar nada, simplemente toma la fórmula y calcula cada nivel directamente en el EA, trabaja con los valores obtenidos, ¿para qué necesitas colores y líneas?
¿Busca un indicador o un EA? Si para un EA, basta con calcular los valores de estos niveles, no hace falta ningún adorno ni color.
No necesitas separar nada, coges la fórmula y calculas cada nivel directamente en el EA, trabajas con los valores obtenidos, ¿para qué necesitas color y líneas?
¿Cómo es la fórmula, puedo mostrarte un ejemplo?
Ah, cómo es la fórmula, ¿puedo mostrarte un ejemplo?
Bueno, es difícil llamarlo fórmula: tomamos los precios mínimos y máximos, 0% y 100%, y los dividimos por los niveles, y sus valores se escriben por todas partes: 23,6%, 38,2%, 50%, 61,8%, 161,8% (o 0,236, 0,382, 0,5, 0,618, 1,618, etc. redondeado a 3 dígitos).
para los precios de 1,3254 y 1,3896 algo así:
directo | revertir | ||
Nivel 161,80%: | 1.4293 | 0,0% Nivel: | 1.3896 |
100,0% Nivel: | 1.3896 | 23,60% Nivel: | 1.3744 |
61,8% Nivel: | 1.3651 | 38,2% Nivel: | 1.3651 |
50,0% Nivel: | 1.3575 | 50,0% Nivel: | 1.3575 |
38,2% Nivel: | 1.3499 | 61,8% Nivel: | 1.3499 |
23,6% Nivel: | 1.3406 | 100,0% Nivel: | 1.3254 |
0,0% Nivel: | 1.3254 | Nivel 161,8%: | 1.2857 |
Es decir, (Precio(100%)-Precio(0%))*Nivel(en miles) + Precio(0%) para el cálculo a futuro y Precio(100%) - (Precio(100%)-Precio(0%)) * Nivel (en miles) - para el cálculo inverso.
Para cada valor, se puede dibujar una línea separada con cualquier color de la paleta de su elección.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso