[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 826

 

Неужели нельзя посчитать раздельно для каждой открываемой в последующем позы остаток маржи, а потом это суммировать? Не зря же в

AccountFreeMarginCheck(sy, op, lot); 

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

Напишите скрипт, который будет выводить вам и ваш рассчёт и то, что возвращает ваш ДЦ. И сравните...

MODE_MARGINHEDGED 31 Маржа, взимаемая с перекрытых позиций в расчете на 1 лот


Вот и посчитайте свои лоты. Количество перекрытых лотов считайте по значению, возвращаемому MODE_MARGINHEDGED
Оставшиеся не перекрытые считайте по значению, возвращаемому MODE_MARGINREQUIRED

 

Столкнулся с проблемой в компании MRC. А именно с тем что у них учитывается своп при тестировании и например когда я хочу выполнить вот этот код :

 

double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();

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

Как это можно сделать ??

Пытаюсь вычислить это вот так :

 

for (i=1; i <=OrdersTotal();i++){
    if (OrderSelect(i-1,SELECT_BY_POS)==true){
       if (OrderType()== OP_BUY ){
          if (OrderMagicNumber() == Magic_N_F5){
             double OpPriceF5B = OrderClosePrice()- OrderOpenPrice();
          }
       }      
    }   
}
 

Эксперимент с AccountFreeMarginCheck():

- на терминале открыт ордер BUY

- Баланс: 94919,36 Средства: 94921,16 Залог: 1273,39 Свободно: 93647,07 Уровень: 7454,15%

- спрашиваю: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - дает остаток от уровня Свободно

- спрашиваю: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - дает остаток от уровня Средства


В общем мою задачу так не решить.

У меня же вопрос (задача) такой: предстоит открыть несколько ордеров, которые остаются одновременно открытыми, примерно так

первый - sell лотом 0.10

второй - buy лотом 0.26

третий - sell лотом 0.43
четвертый - buy лотом 0.72

пятый - sell лотом 1.19 ну и т.д

Прайс 1.2737, плечо 100, минимальный лот 0.1

Существует вероятность, что на каком-то цикле выставления очередного ордера, наступит СтопАут.

Значит надо рассчитать этот худший вариант, конечно же, по методике ДЦ. И сделать для себя вывод: до какого суммарного числа лотов по открытым в указанном порядке ордерам можно идти без опаски нарваться на Стоп Аут? То есть " в начале начал" :) посчитать суммарную маржу по ордерам, которые буду (возможно) открыты. При этом, повторюсь, порядок открытия указан выше, и размеры лотов для каждого ордера известны заранее.

 
ikatsko:

Эксперимент с AccountFreeMarginCheck():

- на терминале открыт ордер BUY

- Баланс: 94919,36 Средства: 94921,16 Залог: 1273,39 Свободно: 93647,07 Уровень: 7454,15%

- спрашиваю: AccountFreeMarginCheck(Symbol(),OP_BUY,0.1) - дает остаток от уровня Свободно

- спрашиваю: AccountFreeMarginCheck(Symbol(),OP_SELL,0.1) - дает остаток от уровня Средства


В общем мою задачу так не решить.

У меня же вопрос (задача) такой: предстоит открыть несколько ордеров, которые остаются одновременно открытыми, примерно так

первый - sell лотом 0.10

второй - buy лотом 0.26

третий - sell лотом 0.43
четвертый - buy лотом 0.72

пятый - sell лотом 1.19 ну и т.д

Прайс 1.2737, плечо 100, минимальный лот 0.1

Существует вероятность, что на каком-то цикле выставления очередного ордера, наступит СтопАут.

Значит надо рассчитать этот худший вариант, конечно же, по методике ДЦ. И сделать для себя вывод: до какого суммарного числа лотов по открытым в указанном порядке ордерам можно идти без опаски нарваться на Стоп Аут? То есть " в начале начал" :) посчитать суммарную маржу по ордерам, которые буду (возможно) открыты. При этом, повторюсь, порядок открытия указан выше, и размеры лотов для каждого ордера известны заранее.

Давайте подумаем.

Все Баи: 0.26+0.72 = 0.98

Все Селлы: 0.1+0.43+1.19 = 1.72

Перекрытые: Количество лотов Бай меньше кол-во лотов Селл, значит перекрытое кол-во лотов равно кол-ву лотов Бай = 0.98

Оставшиеся однонаправленные Селл: 1.72-0.98 = 0.74

Значит что делаем? Баи складываем, а Селлы вычитаем: -0.1+0.26-0.43+0.72-1.19= -0.74 Если минус - значит однонаправленные у нас Селл

Вот для перекрытых берём значение из MODE_MARGINHEDGED и умножаем на кол-во перекрытых лотов...

Ну а для однонаправленных берём из MODE_MARGINREQUIRED и умножаем на MathAbs(кол-во однонаправленных лотов);

Ну и всё остальное тоже попробуйте учесть...

ЗЫ. Я тут долго не думал - так между дел накропал - допускаю упущения, так что воспринимайте только как вероятное направление действий... :)

 

Так... логика стала понятной. Спасибо! Сейчас попробуем проверить.

А вот и кстати на ДЕМО поставил эксперимент:

первый BUY лотом 0,1 прайс 1,27339 - показывало Залог=1273,39. Т.е. 0,1*1000000*1,27339/100

второй SELL лотом 0,26 прайс 1,27039 -показал суммарный Залог=3305,18. И он очень похож на такое 0,26*1000000*1,27039/100=3303,01 ??? Странность?

Получается, что залог взят от максимального к-ва лотов, которые перекрывают ордера, открытые в противоположном направлении??

Подожду, когда откроется следующий BUY

 
eugggy:
Всем добрый день. Есть ли понятное определение термина оператор или это как "в чём смысл жизни"(нельзя объяснить)?

:) Оператор как таковой - понятие растяжимое, он ведь может быть и оператором самогонного аппарата... :)

Вы бы задавали вопросы в том контексте, в котором вам нужно значение данного слова. Надеюсь не слишком длинное предложение :)

 
eugggy:
Всем добрый день. Есть ли понятное определение термина оператор или это как "в чём смысл жизни"(нельзя объяснить)?

=Команда. См. в википедии

https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)

 
ikatsko:

Так... логика стала понятной. Спасибо! Сейчас попробуем проверить.

А вот и кстати на ДЕМО поставил эксперимент:

первый BUY лотом 0,1 прайс 1,27339 - показывало Залог=1273,39. Т.е. 0,1*1000000*1,27339/100

второй SELL лотом 0,26 прайс 1,27039 -показал суммарный Залог=3305,18. И он очень похож на такое 0,26*1000000*1,27039/100=3303,01 ??? Странность?

Получается, что залог взят от максимального к-ва лотов, которые перекрывают ордера, открытые в противоположном направлении??

Подожду, когда откроется следующий BUY

Эх... Было бы времечко всё обдумать... :) Задачка-то интересная, да сроки поджимают.

Думаю, что раз у вас есть похожесть, но не схожесть - значит это не так. Это просто странность... :) Попробуйте подсчитать разницу для максимального лота...

За такие "странности" ДеЦлам ноги поотрывают серьёзные клиенты... :)

В другом направлении нужно думать...

Ждём-с вашего следующего ордерочка :)

 
eugggy:
оператором самогонного аппарата))). Если я правильно понял, то оператор(в том числе и в MQL4) это наименьшее по размеру и законченное по смыслу выражение в коде программы.... как то так.

О ... мать-моя-бабушка... Вам не живётся без этого? В гамаке стоя? Зачем жизнь себе усложнять???

Вот тут прочтите... и дело с концом...

 

Однако, как иногда простые вопросы ставят в тупик :) (я про оператор)

Самое доступное (простое)  определение нашел в БСЭ:

"В вычислительной технике - предписание ... предназначенное для задания некоторого завершенного действия ..." 

А вот в документации:

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

Так и функция себя ведет так же...

 Занятно.

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