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
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
RyanHe utilizado este código:
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)
He utilizado este código :
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
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
RyanHas 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
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())
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
¡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, ATat120
¿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
¡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, ATSi 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