[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 291
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Ayuda por favor tener un asesor para romper a través de los fractales. Recogí buenos parámetros sólo tiene que añadir que establece una gran cantidad de martingala (2 más cuando se pierde).O dar el poder en el asesor sólo se duplicará el lote sin esperar a 2 para ejecutar (si está disponible).Aquí es un asesor:
//+------------------------------------------------------------------+
|| Fractales.mq4 |
//| TO |
//| http://www.forex-tradexperts-to.narod.ru |
//+------------------------------------------------------------------+
#property copyright "TO"
#enlace de propiedad "http://www.forex-tradexperts-to.narod.ru"
#include <WinUser32.mqh>.
extern int TP_Fract_3=300;
extern int SL_Fract_3=200;
extern int TP_Fract_11=500;
extern int SL_Fract_11=300;
extern bool comprar_Fract_3=true;
extern bool vender_Fract_3=true;
extern bool comprar_Fract_11=true;
extern bool vender_Fract_11=true;
extern bool podtvergdenie=false;
extern int tofract=10;
extern double lotes=0.1;
extern int ID = 5452;
cadena com;
doble pliego;
int init()
{
com=DoubleToStr(ID,0);
spread=MarketInfo(Symbol(),MODE_SPREAD)*Punto;
return(0);
}
int deinit()
{
return(0);
}
datetime t1,t2=0;
bool order(double price,int type,string c,int m)
{
int i;
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==c && OrderMagicNumber()==m && OrderOpenPrice()==price && OrderType()==type)return(false);
if(i==0)return(true);
}
if(OrdersTotal()==0)return(true);
}
int inicio()
{
int i,ret;
t1=Tiempo[0];
si(t1!=t2)
{
int fract_buy_3=iHighest(Symbol(),Period(),MODE_HIGH,5,1);
int fract_sell_3=iLowest(Symbol(),Period(),MODE_LOW,5,1);
int fract_buy_11=iHighest(Symbol(),Period(),MODE_HIGH,21,1);
int fract_sell_11=iLowest(Symbol(),Period(),MODE_LOW,21,1);
if( fract_buy_3==3 && buy_Fract_3==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,Alto[fract_buy_3]+tofract*Punto-SL_Fract_3*Punto,Alto[fract_buy_3]+tofract*Punto+spread+TP_Fract_3*Punto,5);
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_3]+tofract*Point+spread, High[fract_buy_3]+tofract*Point-SL_Fract_3*Point, High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,0,Blue);
romper;
}
if(i==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))
{
si(podtvergdenie)
{
ret=MessageBox("Señal en "+Símbolo()+" H1 BUYSTOP "+"{¿Set Order?", "Señal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);
}
}
}
if( fract_sell_3==3 && sell_Fract_3==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,com,5);
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_3]-tofract*Point,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,0,Red);
romper;
}
if(i==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))
{
si(podtvergdenie)
{
ret=MessageBox("Señal en "+Símbolo()+"H1 SELLSTOP "+"{¿Set Order?", "Señal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point*Point,com,5);
}
}
}
if( fract_buy_11==11 && buy_Fract_11==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))orderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,Alto[fract_buy_11]+tofract*Punto-SL_Fract_11*Punto,Alto[fract_buy_11]+tofract*Punto+spread+TP_Fract_11*Punto,21);
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_11]+tofract*Point+spread, High[fract_buy_11]+tofract*Point-SL_Fract_11*Point, High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,0,Blue);
romper;
}
if(i==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))
{
si(podtvergdenie)
{
ret=MessageBox("Señal en "+Símbolo()+"H4 BUYSTOP "+"{¿Set Order?", "Señal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);
}
}
}
if( fract_sell_11==11 && sell_Fract_11==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))orderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,com,21);
for(i=Total de pedidos()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_11]-tofract*Point,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,0,Red);
romper;
}
if(i==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))
{
si(podtvergdenie)
{
ret=MessageBox("Señal en "+Símbolo()+"H4 BUYSTOP "+"{¿Set Order?", "Señal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lotes,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point*Point,com,21);
}
}
}
t2=Tiempo[0];
}
return(0);
}
Soy malo escribiendo en ruso, ¡lo siento!
No se me da bien escribir en ruso, ¡lo siento!
Dime quién puede ayudar con el bloque Klimov, el problema es que no devuelve el valor del último cerrado, sino el valor del último cerrado por la condición
por lo que a 2 condiciones
devuelve ambos valores True,
cómo hacer que devuelva sólo la última orden cerrada y no la última por un condicional,
Aquí está el código que añadí comprobación por lotes para mi comodidad
Dime quién puede ayudar con el bloque Klimov, el problema es que no devuelve el valor del último cerrado, sino el valor del último cerrado por la condición
por lo que a 2 condiciones
devuelve ambos valores True,
cómo hacer que devuelva sólo la última orden cerrada y no la última por un condicional,
He añadido una comprobación de lotes al código para mi comodidad
¿Ha añadido la comprobación de los lotes a esta función? Ahora comprueban las últimas posiciones cerradas con el lote pasado, y el lote es probablemente siempre igual a cero, o un número entero. La variable ll debe ser de tipo double. De todos modos, ¿por qué necesitamos comprobar el lote aquí?
Escribe lo que quieres conseguir, y ellos te lo dirán :)
Sí, ¿y por qué el lote es una int? El lote siempre ha sido doble.
Podrías hacer esto, cuando te quede un pedido, determinar qué pedido queda y buscar el contrario.
Dime quién puede ayudar con el bloque Klimov...
¿Comprobar los lotes en la función añadida por ti mismo? Ahora comprueban las últimas posiciones cerradas con el lote pasado, y el lote es probablemente siempre igual a cero, o un número entero. La variable ll debe ser de tipo double. De todos modos, ¿por qué necesitamos comprobar el lote aquí?
Escribe lo que quieres conseguir, y ellos te lo dirán :)
Ya lo he conseguido todo, pero hay un fallo, es que en un momento determinado me sale un pedido que no necesito,
Intenté cambiarlo a int, originalmente era double pero se me olvidó devolverlo, y si uso una función separada sin comprobación de lote, el resultado no cambia, así que tal vez no lo comprobé correctamente, ayúdenme a entender qué pasa con este error
este es el aspecto de la solicitud
Sí, ¿y por qué el lote es una int? El lote siempre ha sido doble.
Podrías hacer esto, cuando te quede un pedido, determinar qué pedido queda y buscar el contrario.
no es tan sencillo porque las condiciones de apertura pueden ser 2 en la venta, y entonces esta búsqueda no encontrará nada
No duplique los mensajes en diferentes hilos, es una mala forma.
Lo siento, me esforzaré más en recordar borrar los mismos mensajes de diferentes hilos,