¿Cómo codificar? - página 336

 
tkuan77:
Hola mladen, lamento decir que acabo de volver a intentarlo y sigue sin funcionar.

¿Existe otra forma de cerrar mi operación basada en un tiempo específico?

Saludos

Ryan

He utilizado este código:

extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Para probar, y cerró la orden (ver el ejemplo)

Archivos adjuntos:
test_closed.gif  63 kb
 
mladen:
He utilizado este código :
extern bool UseCurrSymbol = false;

int init() { return(0); }

int deinit() { return(0); }

void start(void)

{

bool result;

if(OrdersTotal()>0)

{

if (TimeCurrent()>= StrToTime("07:00:00"))

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

double pBid=MarketInfo(OrderSymbol(),MODE_BID);

result = OrderClose(OrderTicket(),OrderLots(),pBid,3,Blue);

}

if (OrderType()==OP_SELL)

{

double pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

result = OrderClose(OrderTicket(),OrderLots(),pAsk,3,Red);

}

}

}

}

return;

}

Para probar, y cerró la orden (ver el ejemplo)

Hola mladen, gracias. el problema se ha resuelto por mi parte. sólo una nota al margen, ¿puedes explicarme un poco cuál es el propósito de estas pocas líneas en tu codificación?

extern bool UseCurrSymbol = false; y

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Saludos

Ryan

 
tkuan77:
Hola mladen, gracias. el problema se ha resuelto por mi parte. sólo una nota al margen, ¿puedes explicarme para qué sirven estas pocas líneas en tu código?

extern bool UseCurrSymbol = false; y

if (!UseCurrSymbol || OrderSymbol()==Symbol())

Saludos

Ryan

Has utilizado la variable UseCurrSymbol y esa línea exacta en tu código

He tenido que hacer esa variable para que el código utilice las mismas variables que tu código

 
mladen:
Usaste la variable UseCurrSymbol y en esa línea exacta de tu código tuve que hacer esa variable para que el código use las mismas variables que tu código

Hola mladen, lo siento ya que obtuve esa parte del código de las fuentes que me proporcionaste anteriormente.

lo que quise decir fue por qué necesitamos establecer un bool UseCurrSymbol a falso y cuál es el propósito de la segunda línea para --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

 
tkuan77:
Hola mladen, lo siento ya que obtuve esa parte del código de las fuentes que me proporcionaste anteriormente. lo que quería decir es por qué necesitamos establecer un bool UseCurrSymbol a false y cuál es el propósito del segundo forro para --> if (!UseCurrSymbol || OrderSymbol()==Symbol())

No es necesario ponerlo en false

Si lo estableces en true, entonces sólo se comprobará el símbolo actual para las órdenes. Así que te permite elegir qué órdenes quieres procesar

 

¡Hola chicos!

Tengo el siguiente problema.

Quiero que un valor de un indi icustom por ejemplo iCustom(NULL,0, "MACD",12,26,9,0,i) se utilice en una subfunción como:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

para obtener el impulso del "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Cuando lo llamo normalmente con Mom(High,22,Bars,i)

esto funciona, pero cuando uso el indi personalizado en lugar del "High", por supuesto que no.

Así que mi pregunta es, ¿cómo puedo implementar esto para que el código funcione?

¡Gracias por cualquier ayuda!

Adiós, AT

 
at120:
¡Hola chicos!

Tengo el siguiente problema.

Quiero que un valor de un indi icustom por ejemplo iCustom(NULL,0, "MACD",12,26,9,0,i) se utilice en una subfunción como:

double Mom(const double& series[], int period, int totcount, int index)

{

if (totcount<1 || period<1) return (EMPTY_VALUE);

if (indextotcount-1) return (EMPTY_VALUE);

return (series-series);

}

para obtener el impulso del "iCustom(NULL,0, "MACD",12,26,9,0,i)"...

Cuando lo llamo normalmente con Mom(High,22,Bars,i)

esto funciona, pero cuando uso el indi personalizado en lugar del "High", por supuesto que no.

Así que mi pregunta es, ¿cómo puedo implementar esto para que el código funcione?

¡Gracias por cualquier ayuda!

Adiós, AT

at120

¿Tienes algún indicador llamado "macd" en la carpeta de indicadores (no me refiero al macd incorporado, sino a algún macd personalizado)? Si es así, comprueba si los parámetros son correctos

 

¡Hola Mladen!

¡Gracias por la respuesta rápida!

Lo siento MACD era un mal ejemplo, tomar cualquier otro indi un MACD personalizado o algo así.

He comprobado la salida a través de la ventana extra y prueba indi /output para establecer la configuración correcta,

para estar seguro de que "iCustom(NULL,0, "myIndi",0,i)" tiene los parámetros correctos. Por supuesto que está compilado, carpeta correcta, etc...

Siempre me sale el error (cuando uso una variable) - por ejemplo

double mom1 = iCustom(NULL,0, "myIndi",0,i); -> mom(mom1,Bars,20,i)

-> "mom" - parámetro conversación no permitido o cuando lo uso directamente ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Error: iCustom - parámetro pasado como referencia, se espera una variable

¡Gracias por la ayuda y la información!

Adiós, AT

 
at120:
¡Hola Mladen!

¡Gracias por la rápida repetición!

Lo siento MACD era un mal ejemplo, tomar cualquier otro indi un MACD personalizado o algo así.

He comprobado la salida a través de la ventana extra y prueba indi /output para establecer la configuración correcta,

para estar seguro de que "iCustom(NULL,0, "myIndi",0,i)" tiene los parámetros correctos. Por supuesto que está compilado, carpeta correcta, etc...

Siempre me sale el error (cuando uso una variable) - por ejemplo

double mom1 = iCustom(NULL,0, "myIndi",0,i);-> mom(mom1,Bars,20,i)

-> "mom" - parámetro conversación no permitido o cuando lo uso directamente ->

mom( iCustom(NULL,0, "myIndi",0,i),Bars,20,i)

Error: iCustom - parámetro pasado como referencia, se espera una variable

¡Gracias por la ayuda y la información!

Adiós, AT

Si utilizas una llamada simple a iCustom(), el error puede ocurrir sólo en los parámetros

No puede utilizar iCustom() como parámetro para la función mom() (compruebe la cabecera de la función mom y verá qué parámetros y qué tipo de parámetros acepta la función mom()). El resultado de iCustom() está definido como "double" - no puede tomar el ritmo de un array pasado por referencia. Compruebe este hilo también : https://www.mql5.com/en/forum/173108 - tal vez ayuda

 

¡Hola Mladen!

Creo que la llamada de mi iCustom es correcta, porque en prueba y normal(exportar datos o usar como indi)

funciona bien hasta ahora. Creo que el problema es como mencionas el valor double/array.

Cuando ahora uso un

double mom1[];

mom1 = iCustom(NULL,0, "miIndi",0,i);

y que a -> mom(mom1,Bars,20,i);

-> "mom" - parámetro conversación no permitido

¿Cómo puedo escribir esto bien?

Muchas gracias y adiós, AT