Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 521

 
Feliz Páscoa para todos! Como resolver o problema, em mql4 tipo duplo não deu -9315605757223320000.00, -923259595408891630000.00 ao calcular os preços e mql5 escavados de algum lugar? Talvez uma falha nas citações? Como contornar esta situação? Obrigado.
 
mwwm:
Feliz Páscoa para todos! Como resolver o problema, em mql4 tipo duplo não deu -9315605757223320000.00, -923259595408891630000.00 ao calcular os preços e mql5 escavados de algum lugar? Talvez uma falha nas citações? Como contornar esta situação? Obrigado.
Onde está o código?
 
Artyom Trishkin:
Onde está o código?

Aqui está um rascunho:

//+------------------------------------------------------------------+
//|                                                      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);
  }
 
Olá! Quero instalar vps de mql. Tenho 2 contas com corretores diferentes e quero copiar sinais para cada conta de 2 provedores de sinais diferentes. Eu preciso conectar um vps separado para cada conta por 10$/mês ou posso conectar um?
 
Por favor, envie-me o link direto para mt4. Eu tento baixar o mt4 mas o mt5 está instalado. Obrigado de antemão.
 
Aleksei Poliakov:
Por favor, envie-me o link direto para mt4. Eu tento baixar o mt4 mas o mt5 está instalado. Agradecemos antecipadamente.
Basta baixá-lo de seu corretor. Ou outro.
 
Artyom Trishkin:


Alexey Viktorov:


Obrigado, estou vendo. Como posso acompanhar se eu fechar uma parte de um pedido duas ou três vezes? Por exemplo, eu fechei um lote 0,1, depois fechei 0,5, depois fechei outro 0,25. A última posição fechada será igual ao bilhete de posição aberta, mas como devo procurar lucro em uma posição fechada anterior?

 
PolarSeaman:

Obrigado, estou vendo. Como posso acompanhar se eu fechar uma parte de um pedido duas ou três vezes? Por exemplo, eu fechei um lote 0,1, depois fechei 0,5 e depois fechei outro 0,25. A última posição fechada será igual ao bilhete de posição aberta, e o lucro do anterior fechado, como devo procurar por ele?

p1 é o único. mantenha seus próprios registros e sua história.

Outra opção é usar o histórico de pedidos do terminal, mas ele tem algumas nuances complicadas.

 
Maxim Kuznetsov:

p1 e o único. mantenha seus próprios registros e histórico.

Que reviravolta!))

 

Encontrei, aqui no fórum, uma função para calcular lucros a partir de uma determinada data"função retorna lucros totais na moeda das posições fechadas desde uma determinada data".

Presumo que isto vai funcionar para mim. Somente como saber qual foi a data em que a posição, que eu fechei parcialmente, foi aberta?

Razão: