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

 
Aleksandr Slavskii #:

Нет не хорошо. Сейчас проверил, кросы не считает. Файл из книги  MarginProfitMeter.mqh с которого я списывал, тоже кросы не считает, да ещё и запятые в марже не верно ставит.

Сейчас добавил SymbolSelect(нужный символ, true) и Sleep(500) после него, если не смогли найти нужный символ. 

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



Перепробовал всех чатботов, никто не может сделать. Как будто чисто технически языком не предусмотрено такое.

То есть, движение ползунка возможно сделать колёсиком, но только при одном условии: параллельно от колёсика будет прокручиваться и график цены. И никак иначе  🤷‍♂️
 
Ivan Butko #:
Подскажите, пожалуйста, а это правда, что скроллинг ползунка меню в канвасе в mql4 колёсиком мышки невозможен без скроллинга графика цены?



Перепробовал всех чатботов, никто не может сделать. Как будто чисто технически языком не предусмотрено такое.

То есть, движение ползунка возможно сделать колёсиком, но только при одном условии: параллельно от колёсика будет прокручиваться и график цены. И никак иначе  🤷‍♂️

А попробуйте сначала выделить один пункт списка.

А вообще, это тонкости драйвера мышки. У меня мышка прокручивает любое окно над которым находится курсор, даже если это окно находится под двумя другими окнами

 
Alexey Viktorov #:

А попробуйте сначала выделить один пункт списка.

А вообще, это тонкости драйвера мышки. У меня мышка прокручивает любое окно над которым находится курсор, даже если это окно находится под двумя другими окнами



Просто я интересовался про панели на графике цены, построенные на канвасе.

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

И прикол в том, что МТ4 не даёт перехватывать скроллинг колёсиком мышки конкретно для панели и её содержимого. Параллельно будет прокручиваться и график цены вместе с вертикальной прокруткой содержимого канваса. 

И это, вроде как, не исправить
 
Ivan Butko #:


Просто я интересовался про панели на графике цены, построенные на канвасе.

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

И прикол в том, что МТ4 не даёт перехватывать скроллинг колёсиком мышки конкретно для панели и её содержимого. Параллельно будет прокручиваться и график цены вместе с вертикальной прокруткой содержимого канваса. 

И это, вроде как, не исправить

если не для маркета, то используйте DLL - там всё работает и это более оптимально (да даже в разработке удобнее). откинуть GUI в отдельный тред и никто никому не мешает.

остаются только объекты непосредственно в чарте - линии, каналы. Вот с ними вечные проблемы, что в 4-ке были, что в 5-ке остались. Привязки ещё и сбиваются от подгрузки данных, переключения ТФ, малейшего шороха

 
Maxim Kuznetsov #:

если не для маркета, то используйте DLL - там всё работает и это более оптимально (да даже в разработке удобнее). откинуть GUI в отдельный тред и никто никому не мешает.

остаются только объекты непосредственно в чарте - линии, каналы. Вот с ними вечные проблемы, что в 4-ке были, что в 5-ке остались. Привязки ещё и сбиваются от подгрузки данных, переключения ТФ, малейшего шороха

Да, Вы правы: для маркета интересовался

Познаю так сказать ограничения платформы

Благодарю за длл - имею ввиду
 
Aleksandr Slavskii #:
OrderCalcMargin().

можно попробовать это 

double margin = MarketInfo(_Symbol, MODE_MARGINREQUIRED);

а если нужно рассчитать маржу для произвольного объема (volume), то можно думаю использовать формулу:

double lotSize = 100000; // стандартный лот для большинства валютных пар
double requiredMargin = MarketInfo(_Symbol, MODE_MARGINREQUIRED) * volume / lotSize;

есть ещё универсальный подход (с учетом плеча и спецификации контракта)

long leverage = AccountLeverage();
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
string baseCurrency = StringSubstr(_Symbol, 0, 3);
double price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
double currencyRate = SymbolInfoDouble(baseCurrency + AccountCurrency(), SYMBOL_LAST);
double margin = contractSize * volume * price * currencyRate / leverage;

так же  можно использовать функцию AccountFreeMarginCheck(symbol, operation, volume). для эмуляции OrderCalcMargin

double freeNow = AccountFreeMargin();
double freeAfter = AccountFreeMarginCheck(_Symbol, OP_BUY, volume);
double usedMargin = freeNow - freeAfter;
 
Igor Nagorniuk #:

Задача была получить размер залога для определённой цены.

AccountFreeMarginCheck() и MarketInfo(_Symbol, MODE_MARGINREQUIRED)  в них нет указания цены, они работают только для текущей цены.

Вот это margin = contractSize * volume * price * currencyRate / leverage;   ближе к истине, но далеко не универсально, а только для форекса, к тому же остаётся загадкой, что мы получим по этому идентификатору SYMBOL_LAST, думаю, что ничего.

 
Aleksandr Slavskii #:

Задача была получить размер залога для определённой цены.

AccountFreeMarginCheck() и MarketInfo(_Symbol, MODE_MARGINREQUIRED)  в них нет указания цены, они работают только для текущей цены.

Вот это margin = contractSize * volume * price * currencyRate / leverage;   ближе к истине, но далеко не универсально, а только для форекса, к тому же остаётся загадкой, что мы получим по этому идентификатору SYMBOL_LAST, думаю, что ничего.

Хотелось бы конкретики, вопросу. Если, Вы обладаете информацией, по данному вопросу. Поделитесь, знаниями и опытом. Я, так, думаю, что тут, многие, хотели бы увидеть решение данной проблемы, в готовом коде. 
 
Igor Nagorniuk #:
Хотелось бы конкретики, вопросу. Если, Вы обладаете информацией, по данному вопросу. Поделитесь, знаниями и опытом. Я, так, думаю, что тут, многие, хотели бы увидеть решение данной проблемы, в готовом коде. 

Мне тоже хочется конкретики, но если бы она у меня была, я бы не задавал вопрос на форуме.