Ошибки, баги, вопросы - страница 3670

 
Kristian Kafarov #:
Спасибо! А с какой машины запускали?
2025.09.23 19:20:16.135 Terminal Windows 7 Service Pack 1 build 7601, ...
 
seldes #:

Действительно, опираясь на SYMBOL_TRADE_CALC_MODE, стало понятно, что маржа за лот высчитывается по формуле Margin: Lots * InitialMargin * Margin_Rate

Библиотечная функция MaxLotCheck прекрасно работает, когда начальная маржа равна 1. 

А если взять, например, GOLD, то по спецификации начальная маржа там 0.000001 а лот 0.38. Простое перемножение дает 0,00000038.

Нужно умножать начальную маржу на размер контракта. В данном случае он 100. Сумма взята из спецификации символа.

И только после этого мы можем правильно запросить OrderCalcMargin, который честно вернет цену около 3700, которая является 1.0 лотом при покупке.

Препарировал MaxLotCheck, вывалив его в OnTick() и слегка доработав напильником под сложившуюся ситуацию.


Возможно, я изобрел велосипед. Подскажите, пожалуйста, готовое решение, если оно есть.

Вот это всё неправильно. Прошу прощения, если кого-то ввёл в заблуждение. Не используйте этот код.
 
seldes #:
Вот это всё неправильно. Прошу прощения, если кого-то ввёл в заблуждение. Не используйте этот код.

Вы молодец.

Вообще про то как рассчитывается маржа очень хорошо описано в учебнике и примеры там лучше чем в справке.

 

Что за фигня  [Disk error] - такого еще не видел:

Это на MQ-терминале.

2025.09.26 00:01:00.714    Trades    '81707222': market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071
2025.09.26 00:01:00.761    Trades    '81707222': accepted market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071
2025.09.26 00:01:00.761    Trades    '81707222': failed market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071 [Disk error]

 
Dmitriy Skub #:

Что за фигня  [Disk error] - такого еще не видел:

Это на MQ-терминале.

2025.09.26 00:01:00.714    Trades    '81707222': market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071
2025.09.26 00:01:00.761    Trades    '81707222': accepted market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071
2025.09.26 00:01:00.761    Trades    '81707222': failed market sell 0.01 EURUSD, close #4728882562 buy 0.01 EURUSD 1.17071 [Disk error]

Что-то с демо-сервером?


 
Dmitriy Skub #:

Что-то с демо-сервером?


у всех похоже так
 

В кодобазе не появляется кнопка "Опубликовать".


 

Я запутался, прошу подсказать!

Платформа Meta Trader 5 раньше была зарегистрирована на фирму MetaQuotes Software Corp, а сейчас на фирму MetaQuotes Ltd.

Вопрос в том, когда произошла перерегистрация?

В коде от MQ фигурирует старое название, а в самом терминале новое.

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

 

В дебагере и в реальной торрговли пропускается простое условие 

if(tester_strategys == 0)

open не равно тру. 

Хотя если в дебареге вставить строку tester_strategys == 0, то показывает тру


Если в код дописать else { }. то все работает как нужно


---

Сработает условие или нет, на это влияет  где размещу строку

bool open = false;


Здесь переменная open в 237 строке и в 256 условие срабатывает


Здесь переменная open прям над условием. И условие не срабатывает. 


 
Kristian Kafarov #:

Оооооочень долго общался с поддержкой Бинанса. Итог: мои IP не в бане, дело не в них. В сухом остатке сейчас получается, что, с одного и того же сервера:

-- команда curl https://fapi.binance.com/fapi/v1/ticker/bookTicker?symbol=ETHUSDT возвращает успех

-- WebRequest из MT5 https://fapi.binance.com/fapi/v1/ticker/bookTicker?symbol=ETHUSDT вот с таким кодом возвращает 503 Service Temporarily Unavailable (разумеется, все URL в белом списке терминала).

Получается, проблема либо в моем коде, либо в МТ5. Мой код дважды проверяли разные люди в саппорте, сказали все в порядке.

После последнего обновления терминала build 5320 все проблемы с WebRequest исчезли. Очевидно, проблема была в самой функции.

Тем временем, написал свои аналоги обеих форм WebRequest на базе WinAPI. Кому понадобится - обращайтесь.