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

 
Seric29:
Ребята кто может помочь с таким вопросом. Я хочу объявить глобальную переменную неопределённого типа или произвольного типа. Далее эта переменная будет использоваться в функциях к которым применяются шаблоны. Т.е. получается вызывается функция и принимает допустим массив любого типа дальше происходят расчёты и результат вычисления будет возвращаться функцией а также будет присваиваться в эту переменную. Подразумевается передача 3ёх параметров это дата, дабл и инт и результат от расчётов этих параметров я хочу сохранить в переменную чтобы не взывать функцию 2ой раз. Какими путями можно найти универсальное решение задачи с наименьшим количеством проверок, можно ли конвертировать тип переменной, или объявить переменную через макрос, что можно сделать?

Если я правильно понял, то

https://www.mql5.com/ru/docs/basis/oop/templates

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Перегруженные функции обычно используются для выполнения похожих операций над различными типами данных. Простой пример такой функции в MQL5 - ArraySize(), которая возвращает размер массива любого типа. На самом деле эта системная функция является перегруженной, и вся реализация такой перегрузки спрятана от разработчика программ на MQL5: То есть...
 
leonerd:

Не очень понял это замечание. Можно открыть локирующую позицию (противоположную открытой) при свободной марже марже ниже чем маржа для вновь открытого ордера (не в локе). Так где же там 100%?

Пример:

Валюта USDJPY, плечо 1:100. Лот 0.1, маржа получается 100

По спецификации хеджированная маржа 50000, что означает 50%

Для открытия локирующей позиции на счёте должно быть свободных средств ещё 100. Иначе будет ошибка ... не помню номер, в общем не хватает средств.

И только после открытия позиции действительная маржа будет скорректирована в соответствии с указанными в спецификации значениями.

Но, если на счёте свободных средств только 50, то можно открыть два раза по 0.05

 
Alekseu Fedotov:

Если я правильно понял, то

https://www.mql5.com/ru/docs/basis/oop/templates

Применение шаблонных технологий мне уже известно. Этот способ позволяет вернуть тип переменной а вот конвертировать тип одной переменной в другую не даст. Может быть это и невозможно.

 
Alexey Viktorov:

Пример:

Валюта USDJPY, плечо 1:100. Лот 0.1, маржа получается 100

По спецификации хеджированная маржа 50000, что означает 50%

Для открытия локирующей позиции на счёте должно быть свободных средств ещё 100. Иначе будет ошибка ... не помню номер, в общем не хватает средств.

И только после открытия позиции действительная маржа будет скорректирована в соответствии с указанными в спецификации значениями.

Но, если на счёте свободных средств только 50, то можно открыть два раза по 0.05

Ну хорошо, возможно, так и есть. Надо проверить.

По цене ордера. Как же тогда с MQL5 функцией https://www.mql5.com/ru/docs/trading/ordercalcmargin.

Там цена открытия ордера в параметре. Как же так? Как это работает для кросскурсов? МТ5 умеет предсказывать цены?

Документация по MQL5: Торговые функции / OrderCalcMargin
Документация по MQL5: Торговые функции / OrderCalcMargin
  • www.mql5.com
Вычисляет размер маржи, необходимой для указанного типа ордера на текущем счете и при текущем рыночном окружении без учета текущих отложенных ордеров и открытых позиций. Позволяет оценить размер маржи для планируемой торговой операции. Значение возвращается в валюте счета. [out]  Переменная, в которую...
 
Привет.может кто подсказать я скачал индикатор freeNumFractals для мт5.но почему то фракталы не обновляются на графике.допустим график закрою и по новой открою видно что был новый сигнал.а если график открыт.то вообще нет ни одного сигнала.уже на неск раз переустановил мт5 и данный индикатор.нет эффекта.

FreeNumFractals

 
Pavel5554:
Привет.может кто подсказать я скачал индикатор freeNumFractals для мт5.но почему то фракталы не обновляются на графике.допустим график закрою и по новой открою видно что был новый сигнал.а если график открыт.то вообще нет ни одного сигнала.уже на неск раз переустановил мт5 и данный индикатор.нет эффекта.

FreeNumFractals

А что за индикатор? Где ссылка на него?

 
leonerd:

Ну хорошо, возможно, так и есть. Надо проверить.

По цене ордера. Как же тогда с MQL5 функцией https://www.mql5.com/ru/docs/trading/ordercalcmargin.

Там цена открытия ордера в параметре. Как же так? Как это работает для кросскурсов? МТ5 умеет предсказывать цены?

Так читать-то надо всё и внимательно. Цитата из документации:

Вычисление производится как если бы на текущем счете не было отложенных ордеров и открытых позиций. Значение маржи зависит от многих факторов и может меняться при изменении рыночного окружения.

Вычисление проводится... то-есть полученное значение будет без учёта открытой позиции и только потом будет скорректировано в соответствии со спецификацией если открыта противоположная позиция. О чём я и говорил.

Значение маржи... для отложенных ордеров посчитано "от фонаря" и может не соответствовать реальному значению.

 
Sergey Voytsekhovsky:

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

Так было:

Так стало, эффективность подхода очевидна!!! Спасибо.

Спасибо Сергею и Алексею за индикатор цветной стохастик. Вы просто молодцы. Респект!!

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

Чтобы данные моего индикатора заменили данные графика.

И чтобы все стандартные индикаторы клиентского терминала можно было на этот новый график бросать. И чтобы эти индикаторы работали по данным моего индикатора, а не по ценовым барам.
 

Есть такой вопрос. Значит есть цикл

     for(...........)              
     {if(.........){ что-то делаем}else
      if(.........){ break}else{ break;}} 

Здесь получается 1ый break находится не в первых скобочках цикла а уже во вложенных, 2ой break находится ещё глубже вложен во внутренние вложенные скобочки. Как я понял в данном случае break попросту не срабатывает, по правде я так и не понял срабатывает или нет но программа зависала и производила лишние итерации. Чтобы всё таки выйти из цикла в большом количестве условий я делал флаг выхода который вписывал в цикл. Может мне показалось что оно не работает, кто что думает по данному вопросу?

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