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

 
ruslan:

в подключаемом инклюднике OPENCL cl_ есть константа и она равна #define CL_DBL_MAX 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0 перепроверив степень двойки в 1024 получил. 2^1024 = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216 И тут же ниже число Пи

после

#define CL_M_PI 3.141592653589793115998

                            3.141592653589793238462643383279502884197169

обьясните почему так ????

https://ru.wikipedia.org/wiki/Число_двойной_точности

Число двойной точности — Википедия
  • ru.wikipedia.org
Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (до 80486SX, включительно, выполнен как отдельный модуль-0х87/0х287/0х387/0х487, начиная с 80486DX является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU — Floating Point Unit...
 
Есть ли возможность в мкл4 получить значение баланса на предыдущих барах? Как это прописать в коде?
 
В моём индикаторе задержка выполнения действий после нажатия кнопки +/- 1 секунда. MQL5

Для работы и обновления панели я добавил эти обработчики событий:
- OnChartEvent для обработки кликов по кнопкам
- OnTimer для обновления данных панели

Весь код пока 750+ строк кода, в нём только несколько циклов, один для обновлений в окне индикатора, другие три имеют малое количество проходов (максимум 10 * 4)

Вот эта часть кода после OnChartEvent if(id == CHARTEVENT_OBJECT_CLICK) заметно медленно исполняется
if(go == "E")
     {
      if(ObjectGetInteger(ChartID(),no,OBJPROP_STATE) == true)
        {
         ObjectSetInteger(ChartID(),no,OBJPROP_COLOR,cpanel);
         ObjectSetInteger(ChartID(),no,OBJPROP_BGCOLOR,ctext);
        }
      else
        {
         ObjectSetInteger(ChartID(),no,OBJPROP_COLOR,ctext);
         ObjectSetInteger(ChartID(),no,OBJPROP_BGCOLOR,cpanel);
        };
      for(int i = 0; i < limit_x; i++)
        {
         vname = i + 1;
         if("MCC B№"+(string)vname != no)
           {
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_STATE,false);
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_COLOR,ctext);
            ObjectSetInteger(ChartID(),"MCC B№"+(string)vname,OBJPROP_BGCOLOR,cpanel);
           };
        };
     };
 
Alexandr Sokolov:
В моём индикаторе задержка выполнения действий после нажатия кнопки +/- 1 секунда. MQL5

Для работы и обновления панели я добавил эти обработчики событий:
- OnChartEvent для обработки кликов по кнопкам
- OnTimer для обновления данных панели

Весь код пока 750+ строк кода, в нём только несколько циклов, один для обновлений в окне индикатора, другие три имеют малое количество проходов (максимум 10 * 4)

Вот эта часть кода после OnChartEvent if(id == CHARTEVENT_OBJECT_CLICK) заметно медленно исполняется

ChartRedraw() нужен после внесения всех изменений во все объекты, свойства которых изменяются действием по кнопке.

 
Artyom Trishkin:

ChartRedraw() нужен после внесения всех изменений во все объекты, свойства которых изменяются действием по кнопке.

Действительно! А я об этом не подумал. Спасибо большое!


Я когда в OnChartEvent if(id == CHARTEVENT_OBJECT_CLICK) алерты ставил - алерты были, обновлений не было. И по этому я не мог понять почему

 
novichok2018:
Есть ли возможность в мкл4 получить значение баланса на предыдущих барах? Как это прописать в коде?

Ау, специалисты! Неужели никто не знает?! Ни за что не поверю.

 
novichok2018:

Ау, специалисты! Неужели никто не знает?! Ни за что не поверю.

Вот стоимость одного тика

SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE ) * volume

Дальше умножайте на разницу тиков между ценой открытия ордера и Close (или другой ценой) нужного бара. Только учитывайте то что стандартными методами невозможно узнать какой был спред в тот момент времени

 
novichok2018:

Ау, специалисты! Неужели никто не знает?! Ни за что не поверю.

баланс зависит от закрытия позиций - если ничего не закрывалось, то и баланс не изменялся

 
Я наверное непонятно сформулировал вопрос, раз ответы не в тему. Мне не важно, закрылись позиции, или нет, и тем более не интересует стоимость тика. Необходимо узнать, какой баланс счета был на момент закрытия 1, 2, 3 баров определенного символа для сравнения. На этих барах открывались и закрывались позиции, в том числе и на других символах: где-то позиции закрывались в плюс, где-то в минус, где-то еще не закрылись, следовательно баланс менялся. Нужно узнать конкретные значения. Спасибо. 
 
novichok2018:
Я наверное непонятно сформулировал вопрос, раз ответы не в тему. Мне не важно, закрылись позиции, или нет, и тем более не интересует стоимость тика. Необходимо узнать, какой баланс счета был на момент закрытия 1, 2, 3 баров для сравнения. На этих барах открывались и закрывались позиции, следовательно баланс менялся. Нужно узнать конкретное значение. Спасибо. 

- смотрим время крайнего бара 
- складываем всё что закрылось на этом баре
- отнимаем от текущего баланса

и так по очереди все бары

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