Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1338

 

Plantearé la pregunta de forma más correcta.

Hay un bloque de código que explica al Asesor Experto cuántas operaciones debe abrir. Se ve así

int OPEN=1;

if(PedidosTotal())

OPEN=0; // no se pueden abrir más órdenes

if(OPEN==1)

{

//abrir aquí

}

El problema es que abre el número necesario de tratos (1 en este ejemplo) para todos los símbolos. Y tengo que explicarle

que necesita para abrir este número de operaciones en el instrumento ACTUAL . Algo como _Symbol o Symbol (). ¿Cómo se puede hacer? Creo que la solución es sencilla.

 
sibiriyak73:

Plantearé la pregunta de forma más correcta.

Hay un bloque de código que explica al Asesor Experto cuántas operaciones debe abrir. Se ve así

int OPEN=1;

if(PedidosTotal())

OPEN=0; // no se pueden abrir más órdenes

if(OPEN==1)

{

//abrir aquí

}

El problema es que abre el número necesario de tratos (1 en este ejemplo) para todos los símbolos. Y tengo que explicarle

que necesita para abrir este número de operaciones en el instrumento ACTUAL . Algo como _Symbol o Symbol (). ¿Cómo se puede hacer? Creo que la solución es sencilla.

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
Toma un montón de ofertas, y en una venta
 
sibiriyak73:
Hace saltar por los aires un montón de tratos, y en una venta

bueno hay dos opciones:
1. mostrar todo el código
2. unirse al club de telépatas

 
Iurii Tokman:

bueno hay dos opciones:
1. mostrar todo el código
2. unirse al club de telépatas:)

:)

He descubierto cómo abrir tanto la compra como la venta. Pero el número de ofertas no se abre en cada tictac

int inicio()

{

double a=iOpen(NULL,PERIOD_D1,0);

doble d=_ORDEN*0,00001;

doble c=d+1;

doble s=c*a;

double limit= NormalizeDouble(s,_Digits);

// Imprimir("nivel de límite= ",límite);

doble e=_STOP*0.00001;

doble n=e+1;

doble m=n*a;

double SL= NormalizeDouble(m,_Digits);

//Print("nivel de parada= ",SL);

doble p=_TP*0,00001;

doble f=p+1;

doble z=f*a;

double TP= NormalizeDouble(z,_Digits);

double w=iOpen(NULL,PERIOD_D1,0);

doble q=_ORDEN*0,00001;

doble j=q+1;

doble v=w/j;

double limit1= NormalizeDouble(v,_Digits);

// Imprimir("nivel de límite= ",límite);

doble k=_STOP*0.00001;

doble y=k+1;

doble u=w/y;

double SL1= NormalizeDouble(u,_Digits);

//Print("nivel de parada=",SL);

doble g=_TP*0,00001;

doble _f=g+1;

doble _m=w/_f;

double TP1= NormalizeDouble(_m,_Digits);


if(Hora()==Nac)

{

if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))

{

if(!isTradeToDay(Symbol()))

{

int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //abrir aquí

}

}

if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))

{

if(isTradeToDay(Symbol()))

{

int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,0,clrBlueViolet); //abrir aquí

}

}

}

if(Hora()==Kon)

{

resultado bool;

error int;

//----

while(PedidosTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE);

if(OrderType()==OP_SELL)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);

if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)

OrderDelete(OrderTicket());

if(resultado!=TRUE)

{

error=GetLastError();

Print("ÚltimoError = ",error, ",Symbol());

}

si no

error=0;

}

si no

Print("Error al seleccionar el pedido ", GetLastError());

}

}

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

return(0);

}

Aquí está el código sin ninguna variable declarada.

 
sibiriyak73:

el código debe ser insertado Alt+S
y ¿dónde está la función?
¿cómo lo has compilado? ¿no hay errores?

 
Iurii Tokman:

hay que insertar el código Alt+S
y ¿dónde está la función?
¿cómo lo has compilado? ¿no hay errores?

La función está en la parte inferior. La compilación no presenta errores. La parte vendedora logró ajustar las aperturas de una operación en un instrumento específico, incluso si hay abiertas en otros

instrumentos. Pero el lado de la bahía dispara oficios en cada garrapata y eso es todo

 
Iurii Tokman:

hay que insertar el código Alt+S
y ¿dónde está la función?
¿cómo lo has compilado? ¿no hay errores?

Por el momento el código es así. El lado de la venta está bien, pero el lado de la compra es un negocio.
Archivos adjuntos:
 
sibiriyak73:
Por el momento el código es así. El lado de la venta está bien, pero el lado de la compra cada tick es una operación

en el lado de la compra se debería hacer lo mismo

 
Iurii Tokman:

lo mismo debería hacerse en el lado de la compra

No encuentro lo que hay que cambiar en la función isTradeToDay para que sea igual en el lado de la compra que en el de la venta. Todavía la parte de compra no funciona :(