Chicos, por favor, aconsejen que es lo que está mal con el probador. en lugar de velas sólo muestra los precios de apertura en el modo "Todos los ticks, el método más preciso" y en otros modos también. El volumen de MT4 Batter también es inadecuado en el probador
En términos sencillos, su algoritmo es el siguiente: si no hay órdenes, abre una Compra, y en cada tick, abre una Venta.
¿Cómo se puede cambiar el código para que funcione sin condiciones adicionales?
Alert(Sborinfo(Magic)); // Closse(Magic); if(Sborinfo(Magic)==0) { Print("количество ордеров ",Sborinfo(Magic)); MassivPrice(step); if(OrdersTotal()<2)// без таких условий tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,0,0,Green); if(tiket>=0) LastPrice=Ask; }
MassivPrice(step); if(OrdersTotal()<2)// без таких условий tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,0,0,Red); if(tiket>=0) LastPrice=Bid;
} //+------------------------------------------------------------------+ int Sborinfo(int magic) { kol=0; for(int i=0; i<OrdersTotal(); i++) { Print(" чему ровно кол " , kol ); if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic) { Print(" ордера после " , kol );
Pero no puedes, si necesitas tanto comprar como vender y limitar su número. Sólo que yo no miraríaOrdersTotal(), y contaría cuánta compra y cuánta venta.
Y de nuevo, ¿por qué necesita este "if(Sborinfo(Magic)==0)", si luego utilizaOrdersTotal()?
¿Te refieres a esto? ¿Hay otras opciones más sencillas?
¡Camaradas! Tengo una pregunta. El Asesor Experto abre las órdenes pendientes a las 00:00 del comienzo del día basándose en los extremos del día anterior.
Entre semana, todo funciona bien, pero con la apertura del lunes,las órdenes pendientes no se colocan en los extremos del viernes, sino en los niveles del jueves por alguna razón. ¿Por qué?
El volumen de MT4 Batter también es inadecuado en el probador
¿Puede decirme por qué se abre en cada tic?
{
Alert(Sborinfo(Magic));
if(Sborinfo(Magic)<=0)
{
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
if(tiket>=0)
LastPrice=Ask;
else LastPrice=-1;
}
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
else LastPrice=-1;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
Print("колличество ордеров ",kol);
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
kol++;
}
Print("новые ордера ",kol);
return(kol);
}
¿Puede decirme por qué se abre en cada tic?
Porque siempre pruebo en este modo
{
Alert(Sborinfo(Magic));
if(Sborinfo(Magic)<=0)
{
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
if(tiket>=0)
LastPrice=Ask;
else LastPrice=-1;
}
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
else LastPrice=-1;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
Print("колличество ордеров ",kol);
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
kol++;
}
Print("новые ордера ",kol);
return(kol);
}
¿Puede decirme por qué se abre en cada tic?
Porque así es como está escrito el código.
En términos sencillos, su algoritmo es el siguiente: si no hay órdenes, abre Compra, y en cada tick, abre Venta.
Porque así es como está escrito el código.
En términos sencillos, su algoritmo es el siguiente: si no hay órdenes, abre una Compra, y en cada tick, abre una Venta.
// Closse(Magic);
if(Sborinfo(Magic)==0)
{
Print("количество ордеров ",Sborinfo(Magic));
MassivPrice(step);
if(OrdersTotal()<2)// без таких условий
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,0,0,Green);
if(tiket>=0)
LastPrice=Ask;
}
MassivPrice(step);
if(OrdersTotal()<2)// без таких условий
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
kol=0;
for(int i=0; i<OrdersTotal(); i++)
{
Print(" чему ровно кол " , kol );
if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic)
{
Print(" ордера после " , kol );
// kol++;
}
}
return(kol);
}
¿Cómo se cambia el código para que funcione sin condiciones adicionales?
Pero no puedes, si necesitas tanto comprar como vender y limitar su número. Sólo que no miraríaOrdersTotal(), y contaría cuánto compra y cuánto vende.
Y de nuevo, ¿por qué necesitas este "if(Sborinfo(Magic)==0)" si luego utilizasOrdersTotal()?
Pero no puedes, si necesitas tanto comprar como vender y limitar su número. Sólo que yo no miraríaOrdersTotal(), y contaría cuánta compra y cuánta venta.
Y de nuevo, ¿por qué necesita este "if(Sborinfo(Magic)==0)", si luego utilizaOrdersTotal()?
CloseFirst(Magic);
int b=0;
int s=0;
for(int i=0; i<=OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==Magic && OrderSymbol()==_Symbol )
{
if(OrderType()==OP_BUY)
b++;
if(OrderType()==OP_SELL)
s++;
}
if(b==0)
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,Magic,0,Green);
if(s==0)
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,Magic,0,Red);
}
¡Camaradas! Tengo una pregunta.
El Asesor Experto abre las órdenes pendientes a las 00:00 del comienzo del día basándose en los extremos del día anterior.
Entre semana, todo funciona bien, pero con la apertura del lunes,las órdenes pendientes no se colocan en los extremos del viernes, sino en los niveles del jueves por alguna razón. ¿Por qué?
currtime=TimeToStr(TimeCurrent(),TIME_MINUTES);
Format=Digits();
DH=NormalizeDouble(iHigh(NULL,PERIOD_D1,1),Format) ;
DL=NormalizeDouble(iLow(NULL,PERIOD_D1,1),Format);
if (currtime==OpenTime)
{
отложки
}
¿Te refieres a esto? ¿Hay otras opciones más sencillas?
Sí, así es. ¿Cuánto más simple?
Sí, así es. ¿Cuánto más fácil puede ser?