Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1230

 
Igor Makanu:

hay muchos errores en su ejemplo

debería haber:

aquí los precios no están normalizados OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen);

Aquí no entiendo la lógica por la que OnTick() debe salir si la condición es falsa.

probablemente deberíamos continuar el bucley sólo contar el número de pedidos

Tu ejemplo es muy sencillo en cuanto a la lógica y sería difícil modificarlo para otras tareas... tal vez quiera hacer un seguimiento.

Todavía es temprano)))) Habrá muchas cosas a la vez. No tiene mucho sentido allí))))) Y entonces sí, por supuesto, después de los cálculos para todo lo que la normalización sendorder es necesario))))

Allí la condición por orden, si no hay órdenes en el instrumento actual con nuestro magik, ponemos la orden. Y entonces la condición no llegará a la orden hasta que se cierre.

PS no le gusta la condición Si no.

 

Saludos, ¿podría decirme cómo se lee la expresión

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

Saludos, ¿podríais decirme cómo se lee correctamente esta expresión?

Sisymbol está vacío, devuelve el valor del símbolo actual a la variable sym, y si no está vacío, devuelve el valor a la variable sym

 
Vladimir Pastushak:

Si la variable symbol está vacía, devuelve el valor del símbolo del gráfico actual a la variable sym, y si no está vacía, pasa su valor a la variable sym

Gracias.

 
Galim_V:

Saludos, ¿podríais decirme cómo se lee correctamente esta expresión?

Lee Symbol() si el símbolo es NULL, en caso contrario asigna el símbolo a la variable.

El equivalente de esta entrada

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
La única diferencia es el número de líneas.
 
Alexey Viktorov:

Se lee así: Asigna una variable a Symbol() si symbol es NULL en caso contrario asigna un valor a symbol.

Equivalente a esta entrada

La única diferencia es el número de líneas.

Gracias.

 
Valeriy Yastremskiy:

Lo que entonces, por ejemplo, usted tiene una ventana abierta no Eurobucks, pero Eurofunt, se compara el símbolo de la orden seleccionada con Eurobucks, si es cierto, entonces hay una orden en Eurobucks, y si nuestro magik, a continuación, volver de la función Onstart, y si no, a continuación, establecer una orden en Eurobucks, pero Kloz, Alta, Asc, Bid tendrá para Eurofunt. será un error al abrir las órdenes porque la oferta y pedir para estos instuents diferente. Y Symbol() devolverá el símbolo de la ventana actual y no se producirá ningún error.

Utilice la plantilla desde el editor de meta, hay un botón Nuevo en la parte superior izquierda. La función OnStart se sigue utilizando, pero no está bien, y OnStart es para los scripts. La plantilla correcta.

El código correcto. Falta el comentario de tu pedido y el mago no está contabilizado en tu código. ¡¡¡En las advertencias a la línea de apertura anote Conversión de tipo implícita de un número a una cadena!!!

Sí, funciona como debería. ¡¡¡Gracias!!!

No sabía que era tan importante crear por plantilla. OnStart, en efecto. Tenía la estructura básica mal. Bueno, ahora lo sabré.

 
Alexey Belyakov:

Sí, funciona como debería. ¡Gracias!

No sabía que era tan importante crear a partir de una plantilla. OnStart, efectivamente. Tenía la estructura básica mal. Bueno, ahora lo sabré.

Bueno, y todo lo que pongas en las funciones de trabajar con órdenes debe ser normalizado. Si el punto decimal va seguido de 6 dígitos, el pedido no se realizará y generará un error.

Busca el tema con "Sólo funciones útiles de KimIV" o búscalo en KodoBase.

Igor Makanu escribió arriba más errores. Y las funciones de Kim son realmente útiles para empezar. Los comentarios son claros.

 

Por favor, ayuda. ¿Por qué la prueba da un error - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)" ????


#enlace de propiedad "2020, Grey".

#enlace de propiedad "uirnP0215@mail.ru"

#versión de la propiedad "1.00"

#propiedad estricta


entrada lotes dobles = 0,01;

entrada int Magia = 1546;



doble ibufUP[];

doble ibufDN[];


//+------------------------------------------------------------------+

//| Función de inicialización de expertos |

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEED);

}

//+------------------------------------------------------------------+

//| Función de desinicialización experta |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| función de tic experto |

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lotes, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Fallo en la apertura de la orden de venta");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Fallo al abrir una orden de compra");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void ContarFractales()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



 
Madmas:

Por favor, ayuda. ¿Por qué la prueba da un error - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)" ????


#enlace de propiedad "2020, Grey".

#enlace de propiedad "uirnP0215@mail.ru"

#versión de la propiedad "1.00"

#propiedad estricta


entrada lotes dobles = 0,01;

entrada int Magia = 1546;



doble ibufUP[];

doble ibufDN[];


//+------------------------------------------------------------------+

//| Función de inicialización de expertos |

//+------------------------------------------------------------------+

int OnInit()

{


return(INIT_SUCCEED);

}

//+------------------------------------------------------------------+

//| Función de desinicialización experta |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

{

//---


}

//+------------------------------------------------------------------+

//| función de tic experto |

//+------------------------------------------------------------------+

void OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lotes, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Print("Fallo en la apertura de la orden de venta");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Print("Fallo al abrir una orden de compra");

}



}

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

void ContarFractales()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

//+------------------------------------------------------------------+



Añade un contador de decrecimiento en la funciónCountFractals para empezar.

Razón de la queja: