[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 37

 
nuan:
Pregunta, ¿cómo puedo cerrar programáticamente todas las órdenes, por ejemplo, cada 30 minutos?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }
 
Gracias
 
Sustitución de los precios de cierre por los de apertura: el resultado es idéntico al anterior, salvo que ahora la línea de la renta variable está estrictamente por encima de la línea de equilibrio. El número de operaciones y los beneficios han disminuido un poco, pero la situación se ha estabilizado aún más. No hay operaciones perdedoras en el periodo estudiado.
 
Vinin:


Si he entendido bien, ¿con un control del estado de las órdenes en el mercado? -

...
if (OrderType()<2) 
//здесь  корректировка размера позиций с учетом ввода/вывода


¡Interesante! ¿Puede publicar el código completo? No está muy claro cómo se vinculan las órdenes con los fondos que se depositan/retiran. ¿Podemos determinar cuánto dinero se depositó en la cuenta al principio, el saldo inicial por así decirlo, sin recalcular el historial de posiciones cerradas? No todos los brokers proporcionan todo el historial de operaciones, algunos no tienen más de 1 mes, por lo que el recálculo de la rentabilidad del Asesor Experto es erróneo: La fecha de inicio es correcta, pero el saldo es el de hace un mes. Como resultado, el beneficio mensual se extiende a lo largo de todo el periodo de negociación.

 
nuan:
Pregunta, ¿cómo puedo cerrar programáticamente todas las órdenes, por ejemplo, cada 30 minutos?

datetime prevtime;
int Magic=11111;
int slippage=5;

//=====================
 int start(){
 
    datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPos();
  return(0);
 }
//=====================
 void CloseAllPos(){
   double maxlot=0;
   for(int i=OrdersTotal()-1; i>=0; i--){
     if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
     if(OrderSymbol()!=Symbol())continue;
     if(OrderMagicNumber()!=Magic)continue; 
      if(maxlot<OrderLots()){ 
         maxlot=OrderLots();
         if(OrderType()==OP_BUY)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Bid, Digits),slippage,Yellow);
         if(OrderType()==OP_SELL)OrderClose(OrderTicket(),maxlot,NormalizeDouble(Ask, Digits),slippage,Yellow);
  } } }


чет он не работает , закрывает в секунду
 
forexnew:


Si he entendido bien, ¿con un control del estado de las órdenes en el mercado? -


¡Interesante! ¿Puede publicar el código completo? No está muy claro cómo se vinculan las órdenes con los fondos que se depositan/retiran. ¿Podemos determinar cuánto dinero se depositó en la cuenta al principio, el saldo inicial por así decirlo, sin recalcular el historial de posiciones cerradas? No todos los brokers proporcionan todo el historial de operaciones, algunos no tienen más de 1 mes, por lo que el recálculo de la rentabilidad del EA es erróneo: la fecha de inicio es correcta, pero el saldo es el de hace un mes. Como resultado, el beneficio mensual se extiende a lo largo de todo el periodo de negociación.


Probablemente no sea el caso después de todo.
En el terminal, abre la pestaña "Historial de la cuenta", haz clic con el botón derecho y selecciona "Todo el historial".
El historial se descargará hasta el momento en que se abrió la cuenta.
 
forexnew:


Si he entendido bien, ¿con un control del estado de las órdenes en el mercado? -


¡Interesante! ¿Puede publicar el código completo? No está muy claro cómo se vinculan las órdenes con los fondos que se depositan/retiran. ¿Podemos determinar cuánto dinero se depositó en la cuenta al principio, el saldo inicial por así decirlo, sin recalcular el historial de posiciones cerradas? No todos los brokers proporcionan todo el historial de operaciones, algunos no tienen más de 1 mes, por lo que el recálculo de la rentabilidad del Asesor Experto es erróneo: La fecha de inicio es correcta, pero el saldo es el de hace un mes. Como resultado, el beneficio mensual se extiende a lo largo de todo el periodo de negociación.

No se trata de eso aquí, pero sí de llevar un control programático de si ha habido ingresos/retiradas en la cuenta a una hora determinada. Todavía no hay código, hay una fórmula básica para calcular el ajuste del volumen de la posición aquí. (El número (en términos de fondos totales) de colocaciones/retiradas está ligado a él)
 
nuan:


¿Qué quieres decir con "se cierra en un segundo"?
¿Mucho tiempo? ¿O qué?

 

La carta significa que cierra la orden en el mismo segundo, no en 30 minutos.


Lo he puesto como en tu ejemplo


datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
El robot no se cierra por otros motivos, es decir, no se cierra en el stop o en el beneficio.


1 2011.07.29 00:00 comprar 1 0,01 1,4328 1,3328 1,5328 0,00 1000,00
2 2011.07.29 00:01 cierre 1 0,01 1,4327 1,3328 1,5328 -0,10 999,90
3 2011.07.29 00:01 comprar 2 0,01 1,4329 1,3329 1,5329 0,00 999,90
4 2011.07.29 00:01 cierre 2 0,01 1,4326 1,3329 1,5329 -0,30 999,60
5 2011.07.29 00:01 comprar 3 0,01 1,4328 1,3328 1,5328 0,00 999,60
6 2011.07.29 00:03 cierre 3 0,01 1,4327 1,3328 1,5328 -0,10 999,50
7 2011.07.29 00:03 comprar 4 0,01 1,4329 1,3329 1,5329 0,00 999,50
8 2011.07.29 00:03 cierre 4 0,01 1,4329 1,3329 1,5329 0,00 999,50


 
Roman.:
No se trata de esto, sino de si ha habido ingresos/retiradas en la cuenta en un momento determinado. Todavía no hay código, hay una fórmula básica para calcular el ajuste del volumen de la posición aquí. (El número (en términos de fondos totales) de los depósitos/retiros está ligado a él)

Lo entiendo.

Y si consideras abrir una cuenta con $0 como inicio, y el 1er depósito como recarga. ¿Es posible determinar mediante programación todos los toppings (incluido el primero) que se han realizado en la cuenta?