Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 521

 
Всех с пасхой! Как решить проблему, в mql4  тип double при вычислениях цен не давал таких значений -9315605757223320000.00, -9232595408891630000.00 а mql5 их откуда-то откопал? Может глюк в котировках? Как обойти эту ситуацию? Благодарю.
 
mwwm:
Всех с пасхой! Как решить проблему, в mql4  тип double при вычислениях цен не давал таких значений -9315605757223320000.00, -9232595408891630000.00 а mql5 их откуда-то откопал? Может глюк в котировках? Как обойти эту ситуацию? Благодарю.
А код где?
 
Artyom Trishkin:
А код где?

Вот примерный:

//+------------------------------------------------------------------+
//|                                                      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);
  }
 
Здравствуйте !  Хочу установить vps от mql.  У меня есть 2 счета у разных брокеров и я хочу копировать сигналы на каждый счет от 2 разных поставщиков сигналов. Скажите мне на каждый счет нужно подключать отдельный vps по 10$/мес или можно подключить один?
 
 Киньте пожалуйста прямую ссылку на mt4 .  Пытаюсь скачать mt4 - вместо него устанавливается mt5 . Заранее благодарен
 
Aleksei Poliakov:
 Киньте пожалуйста прямую ссылку на mt4 .  Пытаюсь скачать mt4 - вместо него устанавливается mt5 . Заранее благодарен
просто скачайте у своего брокера. Или у другого
 
Artyom Trishkin:


Alexey Viktorov:


Спасибо, понятно. Как проследить если два или три раза закрою часть ордера? Например был лот 0.1, закрыл 0.5 потом ещё закрыл 0.25 Коммент последней закрытой позиции будет равен тикету открытой а профит по предыдущей закрытой как искать?

 
PolarSeaman:

Спасибо, понятно. Как проследить если два или три раза закрою часть ордера? Например был лот 0.1, закрыл 0.5 потом ещё закрыл 0.25 Коммент последней закрытой позиции будет равен тикету открытой а профит по предыдущей закрытой как искать?

п1 и единственный. вести собственный учёт и историю.

есть ещё вариант пройти по истории ордеров терминала, но там есть лихие нюансы.

 
Maxim Kuznetsov:

п1 и единственный. вести собственный учёт и историю.

Вот это поворот!)))

 

Нашел, здесь, на форуме, функцию подсчёта профита с определённой даты "функция возвращает суммарный профит в валюте депозита закрытых с определённой даты позиций"

Предполагаю это мне подойдёт. Только как выяснить какая была дата когда была открыта позиция, которую частично закрываю?

Причина обращения: