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

 
Artyom Trishkin:

De este tiempo[i] debe extraerse una hora.

Sigue imprimiendo la hora 10:05:00 y 22:10:00 y otras fuera de la hora permitida.

No debería imprimirse de las 17:00 a las 11:00, pero lo hace.

 for(int i=limit-2; i>0; i--) 
     {
    if(TimeHour(time[i])>=17&&TimeHour(time[i])<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
            if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }

   Comment("Max: ",max,"dat_max ",dat_max," rates_total ",rates_total);

 
if(TimeHour(time[i])>=17 || TimeHour(time[i])<=11)continue;
 
Taras Slobodyanik:

Gracias.

 
k_chens:

¡Buenas tardes! ¡Por favor, ayuda! Estoy tratando de escribir mucho control de cuentas. Si mi cuenta obtiene un beneficio de +10%, entonces el lote se duplica. Si es +20%, entonces lote*4. Si en mi cuenta disminuye, entonces respectivamente disminuye el tamaño del lote. No entiendo cómo hacer que Lots_New tome un nuevo valor en cada nueva operación.

Esta es una tarea nada trivial para una persona que está empezando a aprender a programar. Al fin y al cabo, para solucionarlo hay que pensar en un mecanismo para almacenar el siguiente valor de saldo. Además, tenemos que averiguar dónde almacenar este valor. Las variables de los programas no son adecuadas para este fin. Por ejemplo, puede utilizar las variables globales del terminal o escribirlas en un archivo. Todo depende de dónde y cómo piense utilizar el programa.

La solución más universal (si se planea utilizar el programa en diferentes ordenadores sin la posibilidad de transferir los datos entre las copias del programa) es escanear el historial de la cuenta para calcular el beneficio/pérdida, obtenido como resultado del trabajo del programa. Pero también está la cuestión de elegir un punto de referencia (de dónde sacar el valor de equilibrio a partir del cual contar).

 
Hola, por favor, puede explicar las líneas para la selección de un medgic :

Extern bool órdenes de mano =true ;
Extern int Número_mágico =777;
//primera línea
((OrderMagicNumber()==Magic_Number && hand_orders==false) || (OrderMagicNumber()==0 && hand_orders==true))

/segunda línea
(OrderMagicNumber()==Magic_Number || (OrderMagicNumber()==0 && hand_orders==true))


¿Qué tipo de valores médicos les faltan? Por favor, escriba
 
Tigerfreerun:
Hola, por favor explique las líneas para seleccionar un medjic :

Extern bool órdenes de mano =true ;
Extern int Número_mágico =777;
//primera línea
((OrderMagicNumber()==Magic_Number && hand_orders==false) || (OrderMagicNumber()==0 && hand_orders==true))

/segunda línea
(OrderMagicNumber()==Magic_Number || (OrderMagicNumber()==0 && hand_orders==true))


¿Qué tipo de valores médicos les faltan? Por favor, escriba

sustituir en sus expresiones - && por "Y AL MISMO TIEMPO", y sustituir || por "O".

deberías poder leerlo y ver cómo funciona.


la primera línea funcionará con magic =777 (cuando hand_orders=false) o magic = 0 (cuando hand_orders=true)

la segunda línea funciona SIEMPRE con majic=777, y si hand_orders=true, funciona ADEMÁS con majic=0

 

¿Cómo puedo calcular, en una función, el beneficio en pips para dos instrumentos?

Rodando

double Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   double xxx=0;
   bool bw;
   for(int t=0;t<=OrdersTotal();t++)
     {
      bw=OrderSelect(t,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Sy_1 || OrderSymbol()==Sy_2
         && OrderMagicNumber()==_Mag
         && (OrderType()==OP_BUY || OrderType()==OP_SELL))
         xxx=OrderClosePrice()-OrderOpenPrice();
      RefreshRates();
     }
   return(xxx);
  }
 
PolarSeaman:

¿Cómo puedo calcular, en una función, el beneficio en pips para dos instrumentos?

Rodando

int Punkts_B(string Sy_1="",string Sy_2="",int _Mag=-1)
  {
   int xxx = 0;
   double tickValue_1 = SymbolInfoDouble(Sy_1, SYMBOL_TRADE_TICK_VALUE),
          tickValue_2 = SymbolInfoDouble(Sy_2, SYMBOL_TRADE_TICK_VALUE);
   for(int t=0;t<OrdersTotal();t++)
     {
      if( !OrderSelect(t,SELECT_BY_POS,MODE_TRADES) )  continue;
      if( OrderSymbol()!=Sy_1 && OrderSymbol()!=Sy_2 ) continue;
      if( OrderMagicNumber()!=_Mag )                   continue;
      if( OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;
      xxx+=(int)((OrderProfit()+OrderSwap()+OrderCommission())/(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2));
     }
   return(xxx);
  }
 
Konstantin Nikitin:
Los puntos de dos instrumentos diferentes no pueden apilarse.
 
Maxim Kuznetsov:
Los puntos de dos instrumentos diferentes no pueden sumarse.

Preguntó, en puntos, aquí está en puntos. Déjale pensar =)

Razón de la queja: