Baja y alta - página 2

 

¿Hasta dónde llega i? ¿Qué es el número Bars-1?

 
if(Hour() == 17 && gethighlows == true)
{
gethighlows = false;
HighValue=High[iHighest(NULL,15,MODE_HIGH,8,1)]; // 8 barras M15 entre 15.00-17.00
LowValue=Low[iLowest(NULL,15,MODE_LOW,8,1)]; // 8 barras M15 entre 15.00-17.00
}
 
fxcourt:
if(Hour() == 17 && gethighlows == true)
{
gethighlows = false;
HighValue=High[iHighest(NULL,15,MODE_HIGH,8,1)]; // 8 barras M15 entre 15.00-17.00
LowValue=Low[iLowest(NULL,15,MODE_LOW,8,1)]; // 8 barras M15 entre 15.00-17.00
}

¡No funciona! Realmente no sé qué hacer...

 
01005379:

[...]

No funciona. Realmente no sé qué hacer...

¿De qué manera no funciona? ¿Los valores son erróneos? ¿No se calculan en absoluto?

 
jjc:

¿De qué manera no funciona? ¿Los valores son erróneos? ¿No se calculan en absoluto?

No puedo entenderlo. Tengo orden de abrir compra cuando el precio es mayor que HighValue y viceversa para la venta.

¿Cómo se pueden escribir estos valores en el monitor? Con Print("Valor alto: ",Valor alto);

Creo que es la única manera de encontrar lo que estos valores son, pero no son altos / bajos entre 15,00 y 17,00.

 
¿utilizas un gráfico m15?
 

Sí. Creo que lo mejor es poner el código aquí y luego quizás alguien encuentre una solución.


if(Hour() == 17 && gethighlows == true)
{
gethighlows = false;
TopRange=High[iHighest(NULL,15,MODE_HIGH,8,1)]; // 8 barras M15 entre 15.00-17.00
LowRange=Low[iLowest(NULL,15,MODE_LOW,8,1)]; // 8 barras M15 entre 15.00-17.00
}

//-----

if (Hour() ==0 && (Minute()==0 && (Seconds()==1))
{
TopRange=0;
LowRange=0;
comprado=false;
sold=false;
sessionfound=false;
}
//-----
bool TradeDayOK=(DayOfWeek()>=1) && (DayOfWeek()<=5);
if ((DayOfWeek()==1) && (Trade_on_Monday==true)) TradeDayOK=true;

//-----
total=Total de pedidos();
if(total<1)
{
if(AccountFreeMargin()<(1000*Lots))
{
Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());
return(0);
}
if(newbar==Time[0])return(0);
si no, newbar=Time[0];

if(TradeDayOK)
{
if(sessionfound && ( (Hour()>=17) && (Minute()>15) && Hour()<=23)
{
if ((bought==false) && (Low[1] > (TopRange+Point*3))
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-(StopLoss*Point),Ask+(TakeProfit*Point),0,0,Blue);
bought=true;
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de COMPRA abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de COMPRA : ",GetLastError());
return(0);
}
if ((sold==false) && (High[1] < (LowRange-Point*3) ))
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(StopLoss*Point),Bid-(TakeProfit*Point),0,0,Red);
vendido=verdadero;
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de venta abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de VENTA : ",GetLastError());
return(0);
}
return(0);
}
return(0);
}
}

 
entonces, ¿qué sucede cuando se ejecuta el ea
 
Abre posiciones de compra y venta pero no en los niveles adecuados.
 
01005379:

Sí. Creo que lo mejor es poner el código aquí y luego quizás alguien encuentre una solución.


if(Hour() == 17 && gethighlows == true)
{
gethighlows = false;
TopRange=High[iHighest(NULL,15,MODE_HIGH,8,1)]; // 8 barras M15 entre 15.00-17.00
LowRange=Low[iLowest(NULL,15,MODE_LOW,8,1)]; // 8 barras M15 entre 15.00-17.00
}

//-----

if (Hour() ==0 && (Minute()==0 && (Seconds()==1))
{
TopRange=0;
LowRange=0;
comprado=false;
sold=false;
sessionfound=false;
}
//-----
bool TradeDayOK=(DayOfWeek()>=1) && (DayOfWeek()<=5);
if ((DayOfWeek()==1) && (Trade_on_Monday==true)) TradeDayOK=true;

//-----
total=Total de pedidos();
if(total<1)
{
if(AccountFreeMargin()<(1000*Lots))
{
Print("No tenemos dinero. Margen libre = ", AccountFreeMargin());
return(0);
}
if(newbar==Time[0])return(0);
si no, newbar=Time[0];

if(TradeDayOK)
{
if(sessionfound && ( (Hour()>=17) && (Minute()>15) && Hour()<=23)
{
if ((bought==false) && Ask >= TopRange)

{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-(StopLoss*Point),Ask+(TakeProfit*Point),0,0,Blue);
bought=true;
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de COMPRA abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de COMPRA : ",GetLastError());
return(0);
}
if ((sold==false) && Bid <= LowRange)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+(StopLoss*Point),Bid-(TakeProfit*Point),0,0,Red);
vendido=verdadero;
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Orden de venta abierta : ",OrderOpenPrice());
}
else Print("Error al abrir la orden de VENTA : ",GetLastError());
return(0);
}
return(0);
}
return(0);
}
}