Además, la operación inversa en órdenes detenidas tampoco funciona.
Ya te han dicho que esto no es fiable
if(Volume[0]>1) return(0);
Esto no hace nada
//+------------------------------------------------------------------+//| OnTick function |//+------------------------------------------------------------------+voidOnTick(){
staticdatetime timeCur; datetime timePre = timeCur; timeCur=Time[0];
bool isNewBar = timeCur != timePre;
if(isNewBar){
return; // Once per bar
}
return; // every tick
}
Devuelve si es una barra nueva y también devuelve si no lo es, por lo que siempre devuelve sin hacer nada.
Cuando encuentras una nueva barra, tienes que restablecer el valor.
voidOnTick(){
datetime timeCur=Time[0];
staticdatetime timePre = timeCur;
bool isNewBar = timeCur != timePre;
if(isNewBar){
timePre=timeCur;
//Do what you want at each new bar // Once per bar
}
//Do other stuff that you may need to do every tickreturn; // every tick
}
Tu código para comprobar la última orden asume que el índice más alto del historial de órdenes es el de las últimas operaciones cerradas. No estoy seguro de que esto sea siempre cierto.
Ok he aplicado el código...pero cuando trato de llamar a la función de inicio en cada nueva barra...su no tomar cualquier orden...
voidOnTick(){
datetime timeCur=Time[0];
staticdatetime timePre = timeCur;
bool isNewBar = timeCur != timePre;
if(isNewBar){
timePre=timeCur;
//Do what you want at each new bar // Once per bar
start();
}
//Do other stuff that you may need to do every tickreturn; // every tick
}
Incluso si agrego buyCall & sellcall función dentro de la zona de la nueva barra...y start() dentro de la zona de garrapatas...su creación de múltiples órdenes.
Junto con esta función de inicio...tengo la siguiente función extra..que es llamada en la función principal.
int split(double x)
void BuyCall(double BC)
void SellCall(double SC)
y por ultimo la funcion void onTick sobre la cual estoy confundido...como establecerla de una manera..que no repita las ordenes pendientes tick por tick
...solo una secuencia de ordenes pendientes en cada hora...ademas comprobara si alguna orden pendiente se detiene
... entonces se abrirá otro comercio en la dirección opuesta ... pero sólo una secuencia por hora.
Por favor, ayúdame, estoy atascado en la misma área una y otra vez... pero obviamente quiero aprender... para no tener que hacer preguntas tontas en el futuro.
Además, la operación inversa en órdenes detenidas tampoco funciona.
Ya te han dicho que esto no es fiable
Esto no hace nada
Devuelve si es una barra nueva y también devuelve si no lo es, por lo que siempre devuelve sin hacer nada.
Cuando encuentras una nueva barra, tienes que restablecer el valor.
Tu código para comprobar la última orden asume que el índice más alto del historial de órdenes es el de las últimas operaciones cerradas. No estoy seguro de que esto sea siempre cierto.
Ok he aplicado el código...pero cuando trato de llamar a la función de inicio en cada nueva barra...su no tomar cualquier orden...
Incluso si agrego buyCall & sellcall función dentro de la zona de la nueva barra...y start() dentro de la zona de garrapatas...su creación de múltiples órdenes.
Junto con esta función de inicio...tengo la siguiente función extra..que es llamada en la función principal.
int split(double x)
void BuyCall(double BC)
void SellCall(double SC)
y por ultimo la funcion void onTick sobre la cual estoy confundido...como establecerla de una manera..que no repita las ordenes pendientes tick por tick
...solo una secuencia de ordenes pendientes en cada hora...ademas comprobara si alguna orden pendiente se detiene
... entonces se abrirá otro comercio en la dirección opuesta ... pero sólo una secuencia por hora.
Por favor, ayúdame, estoy atascado en la misma área una y otra vez... pero obviamente quiero aprender... para no tener que hacer preguntas tontas en el futuro.
...quiero aclarar mi concepto..:(
Gracias por su tiempo.