OrdersHistoryTotal() devuelve 0

4 respuestas

Steve Green

Abonado, bbp_participant, comunidad, 47 respuestas.

Visitar el perfil

hace 5 años #238359

Hola,

Tratando de obtener el último tamaño de la orden para un magicnumber dado y símbolo, pero OrdersHistoryTotal() siempre devuelve como 0 aunque tengo órdenes en mi ficha Historial de la cuenta en mi terminal mt4?

 

Mi código es el siguiente.

 

extern int lv_hora = 6;
extern int lv_minuto = 0;
extern int lv_orderMagicNumber = 0; // introduce aquí el número mágico correcto

int lv_count = 0;

double lv_DefaultPositionSize = 5;
double lv_ReturnPositionSize = 0;

void start()
{
if (TimeHour(Time[0]) == lv_hour && Minute() == lv_minute && lv_count == 0)
{
lv_ReturnPositionSize = sqGetLastPositionSize(lv_orderMagicNumber);

if (lv_ReturnPositionSize != 0)
{
lv_DefaultPositionSize = lv_ReturnPositionSize; //overide tamaño de posición por defecto
}
printf("lv_DefaultPositionSize = " +lv_DefaultPositionSize);

lv_count = 1; // asegura que sólo se imprima una vez en el diario
}
}

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=TotalOrdersHistory(); i>=0; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol()) {
if(orderMagicNumber == 0 | OrderMagicNumber() == orderMagicNumber) {
return(LotesOrden());
}
}
}

return(0);
}

 

 

Gracias de antemano

Steve

 

0

coensio

Cliente, bbp_participant, comunidad, 106 respuestas.

Visitar el perfil

hace 5 años #238361

Por ejemplo, podrías hacer un poco de depuración y ver dónde falla.

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=TotalOrdersHistory(); i>=0; i-) {
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print("Símbolo:",SímboloOrden());
if(orderMagicNumber == 0 | OrderMagicNumber() == orderMagicNumber) {

Print("Magia: ",OrdenNúmeroMágico());
return(LotesOrden());
}
}
}

return(0);
}

Esta afirmación es falsa.

0

Steve Green

Abonado, bbp_participant, comunidad, 47 respuestas.

Visitar el perfil

hace 5 años #238362

Gracias Coensie,

 

 

Has ejecutado tu código. Ni siquiera entra en la declaración if(OrderSelect como OrderSymbol() devuelve como NULL y especulo OrderSelect devuelve como falso por eso?

 

véase la modificación de su función sqGetLastPositionSize a continuación:

 

double sqGetLastPositionSize(int orderMagicNumber) {
for(int i=TotalOrdersHistory(); i>=0; i-) {
Print("SímboloOrden():",SímboloOrden());
Imprimir("Símbolo():",Símbolo());
Print("NúmeroMágicoDePedido():",NúmeroMágicoDePedido());

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true && OrderSymbol() == Symbol())

{

Print("Símbolo:",SímboloOrden());
if(orderMagicNumber == 0 | OrderMagicNumber() == orderMagicNumber) {

Print("Magia: ",OrdenNúmeroMágico());
return(LotesOrden());
}
}
}

return(0);
}

 

 

 

¿Alguna idea?

0

coensio

Cliente, bbp_participant, comunidad, 106 respuestas.

Visitar el perfil

hace 5 años #238365

Este verificado en mi cuenta:

 

double sqGetLastPositionSize(int orderMagicNumber)
{
for(int i=TotalPedidosHistoria()-1; i>=0; i-)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(SímboloPedido() == Símbolo())
{
if(númeroMágicoDePedido == 0 | NúmeroMágicoDePedido() == númeroMágicoDePedido)
{
Print("Magic:",OrderMagicNumber()," OrderLots: ",LotesOrden());
return(LotesOrden());
}
}
}
return(0);
}

Esta afirmación es falsa.

0

Steve Green

Abonado, bbp_participant, comunidad, 47 respuestas.

Visitar el perfil

hace 5 años #238369

 

¿Todavía no funciona tal vez porque es una cuenta demo?

 

Mi último pedido fue:

166861186 2019.01.24 08:00:01 comprar 0.79 usdjpy 109.625 109.690 0.000 2019.01.24 08:37:29 109.691 0.00 0.00 0.00 47.53

 

 

Este es el resultado de tu código:

2019.01.26 12:39:35.900 USDJPY,H1: 109397 eventos de tick (24 barras, 110397 estados de barra) procesados en 0:00:00.016 (tiempo total 0:00:02.359)2019.01.26 12:39:35.900 USDJPY,H1: 109397 eventos de tick (24 barras, 110397 estados de barra) procesados en 0:00:00.016 (tiempo total 0:00:02.359)2019.01.26 12:39:35.892 2019.01.25 06:00:00 dummy USDJPY,H1: lv_DefaultPositionSize = 52019.01.26 12:39:35.889 2019.01.25 00:00:00 dummy inputs: lv_hour=6; lv_minute=0; lv_orderMagicNumber=2670682; 2019.01.26 12:39:33.536 TestGenerator: spread actual 14 utilizado

0

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)