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

 
Artyom Trishkin :

Я не разбирался - не подскажу к сожалению.

Я объясню. Надеюсь, это имеет смысл.

Вот объяснение:

Я торгую по EURUSD и AUDJPY в MT5. Оба зарезервировали маржу, как показано на панели инструментов MT5. Поделюсь изображением.

Первая сделка по EURUSD:

Я продал с лотом = 1. Взял маржу = 235,31.

Сейчас торгую по AUDJPY:

Я совершил продажу с лотом = 1. Взял маржу = 144,24.

И общая маржа, показанная в ToolBox = 379,55.

Панель инструментов, как вы видите, показывает общую маржу, используемую символами EURUSD и AUDJPY.

Теперь я перехожу к своему вопросу.

Я хочу знать, какая маржа от общей маржи используется EURUSD. Я не получаю расчетов для этого. Я знаю, что ответ должен = 235,31

Но с помощью OrderCalcMargin () я получаю разные ответы. Иногда функция возвращает 235,23, иногда 235,01. Но это неправильный ответ. Я хочу знать, как я могу рассчитать использованную маржу по определенному символу. В моем примере скажите, как я могу рассчитать маржу, используемую EURSD или AUDJPY.

Примечание:

Ответ OrderCalcMargin () иногда дает правильный ответ на EURUSD. Но если я хочу рассчитать маржу для AUDJPY, всегда по-другому.

А теперь, пожалуйста, дайте мне знать, если я понимаю.

У меня есть этот вопрос, и я пытался объяснить всем на форуме, но никто не смог понять. Это я пытаюсь снова.

Я попробую еще раз, если все еще не имеет смысла.

@ Артём Тришкин, дайте мне знать. Я рассчитываю, что вы дадите мне решение.

 
jaffer wilson:

Я объясню. Надеюсь, это имеет смысл.

Вот объяснение:

Я торгую по EURUSD и AUDJPY в MT5. Оба зарезервировали маржу, как показано на панели инструментов MT5. Поделюсь изображением.

Первая сделка по EURUSD:

Я продал с лотом = 1. Взял маржу = 235,31.

Сейчас торгую по AUDJPY:

Я совершил продажу с лотом = 1. Взял маржу = 144,24.

И общая маржа, показанная в ToolBox = 379,55.

Панель инструментов, как вы видите, показывает общую маржу, используемую символами EURUSD и AUDJPY.

Теперь я перехожу к своему вопросу.

Я хочу знать, какая маржа от общей маржи используется EURUSD. Я не получаю расчетов для этого. Я знаю, что ответ должен = 235,31

Но с помощью OrderCalcMargin () я получаю разные ответы. Иногда функция возвращает 235,23, иногда 235,01. Но это неправильный ответ. Я хочу знать, как я могу рассчитать использованную маржу по определенному символу. В моем примере скажите, как я могу рассчитать маржу, используемую EURSD или AUDJPY.

Примечание:

Ответ OrderCalcMargin () иногда дает правильный ответ на EURUSD. Но если я хочу рассчитать маржу для AUDJPY, всегда по-другому.

А теперь, пожалуйста, дайте мне знать, если я понимаю.

У меня есть этот вопрос, и я пытался объяснить всем на форуме, но никто не смог понять. Это я пытаюсь снова.

Я попробую еще раз, если все еще не имеет смысла.

@ Артём Тришкин, дайте мне знать. Я рассчитываю, что вы дадите мне решение.

Очень важные значения для расчёта в вашем случае:

  1. В какой валюте счёт
  2. Какой был курс валют в момент открытия позиции

Как пример, в расчёте маржи по AUDJPY участвуют AUDUSD и USDJPY. Какие были курсы этих валют в момент открытия позиции AUDJPY, никто никогда не угадает. Можно только попытаться высчитать через текущую маржу. Об этом упоминалось в той теме на которую я давал вам ссылку. Но, честно сказать об этом там мало сказано, но в кодах что-то есть.

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

А вот готовое решение вряд-ли кто-то вам даст.

 
Alexey Viktorov :

Очень важные значения для расчёта в вашем случае:

  1. В какой валюте счёт
  2. Какой был курс валют в момент открытия позиции

Как пример, в расчёте маржи по AUDJPY участвуют AUDUSD и USDJPY. Какие были курсы этих валют в момент открытия позиции AUDJPY, никто никогда не угадает. Можно только попытаться высчитать через текущую маржу. Об этом упоминалось в той теме на которую я давал вам ссылку. Но, честно сказать об этом там мало сказано, но в кодах что-то есть.

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

А вот готовое решение вряд-ли кто-то вам даст.

Да, я это понимаю. Но я вижу, что MT5 ToolBox точно рассчитывает без изменения маржи. Тогда какую логику использует MT5 ToolBox? Не могли бы вы пролить свет на это, пожалуйста?

 

Вопрос, как присвоить различными переменным значение через аргументы в функции. Если один аргумент, то его можно возвратить и присвоить значение, а если 2, то как быть?

int x,x1,x2,x3=1,x4,x5;
void OnStart()
{
x=2;
F(x,x1,x2);
Print ("x1= ",x1," x2= ",x2);
x=5 ;
F(x,x4,x5);
Print ("x4= ",x4," x5= ",x5);
return;
}

int F(int ArgX, int ArgX1, int ArgX2)
{
ArgX1=ArgX + x3;
ArgX2=ArgX - x3;
return ArgX1;
}

//результат
2020.09.09 15:10:10.561 TestS EURUSD,H1: x4= 0 x5= 0
2020.09.09 15:10:10.561 TestS EURUSD,H1: x1= 0 x2= 0
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
  • www.mql5.com
Побитовые операции производятся только с целыми числами. При выполнении операции логический сдвиг представления y вправо/влево на x бит используются младшие 5 двоичных разрядов значения x, старшие разряды отбрасываются, то есть сдвиг производится на 0-31 бит.
 

Валерий, может так устроит:

void F(int &ArgX, int &ArgX1, int &ArgX2)
 
Aleksei Stepanenko:

Валерий, может так устроит:

Точно, ссылки, апперсанд если не ошибаюсь.

2020.09.09 15:18:33.572 TestS EURUSD,H1: x4= 6x5= 4

2020.09.09 15:18:33.572 TestS EURUSD,H1: x1= 3x2= 1

Спасибо)))


 
Точно! Передача по ссылке.
 
Valeriy Yastremskiy:

Вопрос, как присвоить различными переменным значение через аргументы в функции. Если один аргумент, то его можно возвратить и присвоить значение, а если 2, то как быть?

Вот это что?

void start()

Когда-то давно-давно... мамонты кушали. А потом накладывали. По-моему - это как раз это?

 
Artyom Trishkin:

Вот это что?

Когда-то давно-давно... мамонты кушали. А потом накладывали. По-моему - это как раз это?

Не судите строго, вручную писал скрипт. А строгая проверка старые функции пропускает. Конечно так у себя не пишу. К тому же есть конструкторы.)))))

Поправил)
 
Коллеги, всем доброго времени суток. В общем торгуют пять роботов с разными магиками по символу открывают рыночные позиции по цене открытия нового бара, условия на вход у всех одни. Выхода разные. 
Бываю закрываю позиции все пять вручную. 
И далее, как с мин трудозатратами организавать алгоритм открытия их новых рын позиций но не  на следующем баре - торгуют на М1, но на последовательно разных, т.е. на 1 м1 открылся первый кто успел, на второй м1 открылся из них второй кто успел и тд до 5. 
Т.е. считаю, что вопрос сводится к следующему, как вариант, как выделить минуту из времени открытия рын позиции для ее последующего сравнения с Minutes ()  стандарной ф-ии? И типа если уже на этой минуте есть рын позиция, то return (). 
Причина обращения: