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

 
¡Feliz Pascua a todos! ¿Cómo resolver el problema, en mql4 el tipo doble no daba -9315605757223320000.00, -9232595408891630000.00 al calcular los precios, pero mql5 los sacaba de alguna parte? ¿Tal vez un fallo en las comillas? ¿Cómo sortear esta situación? Gracias.
 
mwwm:
¡Feliz Pascua a todos! ¿Cómo resolver el problema, en mql4 el tipo doble no daba -9315605757223320000.00, -9232595408891630000.00 al calcular los precios y mql5 los sacaba de algún sitio? ¿Quizás un fallo en las comillas? ¿Cómo sortear esta situación? Gracias.
¿Dónde está el código?
 
Artyom Trishkin:
¿Dónde está el código?

Aquí hay una aproximación:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot OC
#property indicator_label1  ""
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#property strict 
//--- indicator buffers
double Op[],Hi[],Lo[],Cl[],Ti[];
double q1[100],q2[100];

///---------
double Lim1[10],Lim2[10];
double Max1[10],Min1[10];
double Max2[10],Min2[10];
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXX

//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit()
  {
//--- откроем файл 
   ResetLastError();
//--- привязка массива к индикаторному буферу с индексом 0 
   SetIndexBuffer(0,Ti,INDICATOR_DATA); SetIndexBuffer(1,Op,INDICATOR_DATA);SetIndexBuffer(2,Hi,INDICATOR_DATA);
   SetIndexBuffer(3,Lo,INDICATOR_DATA); SetIndexBuffer(4,Cl,INDICATOR_DATA);
//---- установка значений индикатора, которые не будут видимы на графике 
//--- 
   ArraySetAsSeries(Ti,true);
   ArraySetAsSeries(Op,true);
   ArraySetAsSeries(Hi,true);
   ArraySetAsSeries(Lo,true);
   ArraySetAsSeries(Cl,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(time,true); 
   ArraySetAsSeries(open,true); 
   ArraySetAsSeries(high,true); 
   ArraySetAsSeries(low,true); 
   ArraySetAsSeries(close,true); 
   ArrayInitialize(Lim1,1);ArrayInitialize(Lim2,1);
  
   int f=1;
/////////      
//--- Проверка на минимальное колиество баров для расчёта
   if(rates_total<1) return 0;
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1) // если это первый запуск, или изменение истории, или открытие нового бара
     {
      limit=rates_total-1;                   // установим начало цикла на начало исторических данных
      ArrayInitialize(Ti,EMPTY_VALUE);       // инициализируем массив
      ArrayInitialize(Op,EMPTY_VALUE);
      ArrayInitialize(Hi,EMPTY_VALUE);
      ArrayInitialize(Lo,EMPTY_VALUE);
      ArrayInitialize(Cl,EMPTY_VALUE); 
     }
 int p=0;
    
//--- Расчёт индикатора
   for(int i=limit-1; i>=0 && !IsStopped(); i--)
     {
      Op[i]=open[i];Hi[i]=high[i];Lo[i]=low[i];Cl[i]=close[i];

            q1[1]=((Hi[i+f+0]+Lo[i+f+0])/2+Hi[i+f+0])/2;
            Lim1[1]=q1[1]-Hi[i+f+1];  
            Max1[1]=MathMax(Max1[1], Lim1[1]);
            Min1[1]=MathMin(Min1[1], Lim1[1]);

double n=100000000;
if(MathAbs(Lim1[1])>n){p++;Print(Lim1[1]," = ",p,"  = ",i);}
 } 
//--- return value of prev_calculated for next call 
   return(rates_total);
  }
 
Hola, quiero instalar vps de mql. tengo 2 cuentas con diferentes brokers y quiero copiar señales a cada cuenta de 2 proveedores de señales diferentes. ¿Necesito conectar un vps separado para cada cuenta por 10$/mes o puedo conectar uno?
 
Por favor, envíenme el enlace directo a mt4. Estoy intentando descargar mt4 pero en su lugar se instala mt5. Gracias de antemano.
 
Aleksei Poliakov:
Por favor, envíenme el enlace directo a mt4. Estoy intentando descargar mt4 pero en su lugar se instala mt5. Gracias de antemano.
Sólo tienes que descargarlo de tu corredor. U otro.
 
Artyom Trishkin:


Alexey Viktorov:


Gracias, ya veo. ¿Cómo puedo hacer un seguimiento si cierro una parte de un pedido dos o tres veces? Por ejemplo, cerré un lote de 0,1, luego cerré 0,5, luego cerré otro de 0,25. La última posición cerrada será igual a la entrada de la posición abierta, pero ¿cómo debo buscar una ganancia en una anterior cerrada?

 
PolarSeaman:

Gracias, ya veo. ¿Cómo puedo hacer un seguimiento si cierro una parte de un pedido dos o tres veces? Por ejemplo, cerré un lote de 0,1, luego cerré 0,5, y luego cerré otro de 0,25. La última posición cerrada será igual al ticket de la posición abierta, y el beneficio de la anterior cerrada, ¿cómo debo buscarlo?

p1 es el único. mantenga sus propios registros e historia.

Otra opción es utilizar el historial de pedidos del terminal, pero tiene algunos matices complicados.

 
Maxim Kuznetsov:

p1 y el único. mantenga sus propios registros e historia.

Qué giro!))

 

Encontré, aquí en el foro, una función para calcular el beneficio desde una fecha determinada"la función devuelve el beneficio total en la moneda de las posiciones cerradas desde una fecha determinada".

Supongo que esto me servirá. ¿Sólo cómo saber cuál fue la fecha de apertura de la posición que cierro parcialmente?

Razón de la queja: