[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 408

 
Zhunko:

Сложно сказать на счёт выделенного. Это надо Метаквотов спросить.

Я сразу поверил Виктору на слово, но.. дабы развеять сомнения тока что отписал метаквотам.

Zhunko:

Мне в MRC заблокировали реальный счёт из-за частого открытия и обновления графика. Это не функции MQL4, но штатные средства просмотра графика

Что Вы имеете в виду, под " частым открытием графика ". про обновление переменных рыночного окружения я понимаю, а про открытие и обновление графика не уяснил..

Zhunko:

Возможно, например, MarketInfo() обращается к серверу или только часть данных получает из обзора рынка.

Я отписал в поддержку, как ответят отпишусь тут!
 
Andrew245:

догадывался об этом, но не могу их никак найти, эти параметры стоп-лосса
https://docs.mql4.com/ru/trading/OrderSend
 

Я как-то задавал вопрос по поводу использования библиотек. В общем-то всё-таки немного путанница у меня появилась.

 Я так понимаю, библиотека представляет собой набор функций с кодом, который не помню как это называется точно, "закрытые", т.е. значит, что в процессе на код библиотечной функции ни повлияет ни что извне.

Логично, что когда все часто используемые и не только функции вынесены из эксперта, это очень удобно. Но зачем тогда нужны инклюды? Ведь библиотеки работают без них. Получается включения не нужны? Кто как это использует?

 
pako:

10% в год это хорошо или плохо?

Ну всегда говорят ведь, что галвное чтобы кривая баланса была ровной, а увеличить прибыль можно с помощью ММ. Или это не так?(
 
Dmido:

Ну всегда говорят ведь, что галвное чтобы кривая баланса была ровной, а увеличить прибыль можно с помощью ММ. Или это не так?(


попробуйте увеличить

если колян не прийдет 

 
TarasBY:
Текущий день начинается с начала текущего D1 бара (iTime (NULL, PERIOD_D1, 0)), НО Вы же не ищите лёгких путей?! :)))


не работает.

iTime (NULL, PERIOD_D1, 0)  печатает 137082240

а вставленное в функцию выдает все имеющуюся историю сделок, а не сделки за сегодня.....

GetProfitFromDateInCurrency(NULL,-1,-1,(iTime (NULL, PERIOD_D1, 0))); 
видимо правильнее будет GetProfitFromDateInCurrency(NULL,-1,-1,(TimeCurrent()-iTime (NULL, PERIOD_D1, 0)));   НО И ТУТ РЕЗУЛЬТАТ ВСЕ СДЕЛКИ, ВМЕСТО СЕГОДНЯШНИХ
 
lottamer:


не работает.

iTime (NULL, PERIOD_D1, 0)  печатает 137082240

а вставленное в функцию выдает все имеющуюся историю сделок, а не сделки за сегодня.....

если использовать GetProfitFromDateInCurrency() (оригинальную - это ВАЖНО: я не знаю, что Вы там могли "наковырять" в своём варианте), то вызывать нужно так:
GetProfitFromDateInCurrency (Symbol(), -1, -1, iTime (NULL, PERIOD_D1, 0));

и функция вернёт профит по ордерам, закрытым с начала текущих суток.

А ВСЕ глупости из кода отлавливаются через Print().

 
hoz:
  Что Вы имеете в виду, под " частым открытием графика ". про обновление переменных рыночного окружения я понимаю, а про открытие и обновление графика не уяснил.. 
При открытии и обновлении графика на сервер идут запросы на новые данные. Некоторые жадные ДЦ предпочитают свои средства расходовать не на более мощные сервера и более широкий канал, а рассовывать их по своим карманам. Им приходится ограничивать количество запросов от терминала чтобы слабый сервер "не повесили". У MRC всего 2000 запросов в сутки. Это в 10 раз меньше количества их инструментов помноженное на количество ТФ, не считая торговых запросов.
hoz:

Я как-то задавал вопрос по поводу использования библиотек. В общем-то всё-таки немного путанница у меня появилась.

 Я так понимаю, библиотека представляет собой набор функций с кодом, который не помню как это называется точно, "закрытые", т.е. значит, что в процессе на код библиотечной функции ни повлияет ни что извне.

Логично, что когда все часто используемые и не только функции вынесены из эксперта, это очень удобно. Но зачем тогда нужны инклюды? Ведь библиотеки работают без них. Получается включения не нужны? Кто как это использует?

Инклюды в MQL4 помогают упорядочить код. Например, так выглядит индикатор у меня на 3000 строк:

#property indicator_separate_window

#include <stdlib.mqh>
#include <stderror.mqh>
#include <ServicesMT4.mqh>
#include <Spectrum.mqh>
#include <TimeFrames.mqh>
#include <GeneralFunctions.mqh>
#include <DynamicArray2.mqh>
#include <SPECTRUM_IND_Macros.mq4>
#include <SPECTRUM_IND_Preset_Buffers.mq4>
#include <SPECTRUM_IND_Extern_Variable.mq4>
#include <SPECTRUM_IND_Global_Variable.mq4>
#include <SPECTRUM_IND_Functions_Project.mq4>

void init()
 {
  int    i = 0;
  string i_sName = StringSubstr(WindowExpertName(), 0, StringLen(WindowExpertName()) - 8);
  g_nCounterStart = 0;
  #include <SPECTRUM_IND_Check_Param.mq4>
  if (Postfix == "") g_sNameIndicator = i_sName + g_sPostfix;
  else g_sNameIndicator = i_sName + g_sPostfix + Postfix + " ";
  g_sNameObject = g_sNameIndicator + "Derivative ";
  g_sNameLine = g_sNameIndicator + "Line ";
  g_sNameSpectrum = g_sNameIndicator;
  IndicatorShortName(g_sNameIndicator);
  #include <SPECTRUM_IND_Extern_Variables_In_Array.mq4>
  #include <SPECTRUM_IND_Buffers.mq4>
  ServiceRefreshChart(WindowHandle(Symbol(), 0), 1000);
 }

void deinit()
 {
  ObjectsDeleteAll(g_nWindow);
  DeleteObject();
 }

void start()
 {
  if (g_bStop) return;
  #include <SPECTRUM_IND_Start_Variable.mq4>
  #include <SPECTRUM_IND_Start_Initialize.mq4>
  #include <SPECTRUM_IND_Optimization.mq4>
  #include <SPECTRUM_IND_Calc_Filters.mq4>
  #include <SPECTRUM_IND_Calc_Last_Derivative.mq4>
  #include <SPECTRUM_IND_Show_Lines.mq4>
  #include <SPECTRUM_IND_Show_Sum.mq4>
  g_nBegin = s_nBegin;
  g_nTemp_SizeChart = s_nSizeChart;
  g_tLastTime = iTime(NULL, g_nPeriod, 0);
  ArrayCopy(g_adTemp_PriceBeginBar, s_adPriceBeginBar);
 }
Строк 5 накапливается однотипных операций, или отдельный алгоритм, или другой какой-нибудь критерий группы и можно выделять в отдельный файл. Всё же, лучше смотреть на код до 200 строк, чем сразу на 10000 строк. Замучаешься крутить его. В MQL4 лучше избегать вызовы функций. Особенно в циклах. Если есть возможность, лучше раскрыть функцию. Код значительно быстрее работать будет. Тут инклюды в помощь.

К сожалению, компилятор не разрешает использовать один инклюд более одного раза в одном модуле. Обычно так можно экономить на повторяющемся коде.

 
hoz:
Я сразу поверил Виктору на слово, но.. дабы развеять сомнения тока что отписал метаквотам.
...

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

 
Integer:

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

Запрос от графика похож на запрос от RefreshRates(). Не сомневаюсь, что она обращается к серверу. При этом RefreshRates() не является торговой функцией.

Надо у Метаквотов спросить.

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