Форум трейдеров » Торговые роботы, советники, индикаторы » Индикатор маржи (BrocoRealMargin)
+ Подписаться
Страница 1 из 3 123 ПоследняяПоследняя
  1. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей

    Индикатор маржи (BrocoRealMargin)

    Все, кто торгует фьючерсами в Броко, наверняка уже не раз сталкивались с проблемой ночной маржи, когда на счёте одновременно открыты позиции по различным контрактам, а точнее по различным инструментам. Время действия ночной маржи для каждого инструмента разное, поэтому очень сложно бывает расчитать суммарную маржу для определённого момента времени. Я помню как мне приходилось жёстко извращаться с калькулятором и листком бумаги, чтобы вычислить, выбьет меня вечером/ночью по стопауту или не выбьет :) Особенно когда в портфеле имеются 20-30 разных фьючерсов и депозит забит почти под завязку, то ситуация с расчётом маржи превращается в постоянную головную боль. А если ещё и счетов несколько, то вообще кошмар...
    Понятное дело, что штатный броковский индикатор BrocoMarginView тут не поможет, т.к. там все значения ночной маржи тупо суммируются, независимо от времени действия этой маржи. Поэтому получаемый результат имеет мало общего с реальностью. Обычно он показывает 2-3-кратный избыток по сравнению реально необходимой маржой. Если ориентироваться на эти значения, то средства на счёте будут использоваться очень нерационально, т.к. придётся впустую морозить значительную часть депозита.

    Поэтому я сделал полноценный индикатор маржи BrocoRealMargin, учитывающий время действия дневной/ночной маржи по каждому фьючерсу.
    Вот как он выглядит:



    Ну вроде тут всё достаточно понятно. Слева указан список инструментов, по которым открыты позиции, затем указан суммарный лот по каждому инструменту. Сверху указаны фиксированные моменты времени, в которые происходит изменение маржи хотя бы по одному из этих инструментов (естественно и совокупная маржа также меняется в эти моменты времени). Жёлтым цветом подсвечен момент времени, когда происходило последнее изменение маржи. Т.е. оно соответствует текущему состоянию на данный момент. Возможны небольшие расхождения в пределах доли процента, но это несущественно.
    Ну и в основной таблице для каждого времени указаны соответствующие значения маржи по каждому инструменту, а также совокупная маржа (Margin Total) и уровень средств (Equity Level).
    Если уровень средств для какого-то момента времени будет равен или ниже уровня стопаута, то этот уровень будет подсвечен красным. Также подсвечиваются уровень 100% и уровень задаваемый в параметрах, они будут светло-красные.

    Теперь что касается параметров и принципа работы индикатора.



    Исходные данные для фьючерсов (значение маржи и время) автоматически считываются с сайта Броко со страницы спецификаций при инициализации индикатора. Для этого параметр RecieveDataFromServer должен быть включён (true)
    Полученные спецификации затем сохраняются в файле BrocoMargin.txt и в дальнейшем могут быть использованы в качестве резерва, если по каким-то причинам не удастся считать их с сайта, либо если вышеуказанный параметр отключён (false).

    Параметр Signal включает сигнализирование для определённого уровня эквити (Equity Level), заданного в параметре Signal_EquityLevel
    Если ожидается что уровень эквити в какой-то момента времени опустится до или ниже указанного значения, то индикатор будет пищать каждые 10 секунд и печатать в лог предупреждение. Такое же оповещение будет срабатывать и при пересечении уровня стопаута.

    Выкладываю в архиве сам индикатор + DLL к нему, которая считывает инфу с сайта.
    Для тех кто не знает: файл .mq4 помещаем в папку Indicators, файл .dll помещаем в папку Libraries, в настройках индикатора должен быть разрешён импорт DLL.

    Вроде пока всё. Если будут вопросы или пожелания, обращайтесь.
    Вложения Вложения
    Недоступно! Pro 0
    Поделиться
    Просмотров: 14,974
  2. 2,257
    Комментарии
    21
    Темы
    2597
    Репутация Pro
    Аватар для wiking  
    Мастер форумных наук

    6 Медалей
    Цитата Сообщение от Meat Посмотреть сообщение

    Вроде пока всё. Если будут вопросы или пожелания, обращайтесь.
    Привет.
    Попробовал поставить. Сразу вопрос возник - у меня открыты
    позиции по sin1 и siu1, а индикатор показывает только sin1.
    Почему ?
  3. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от wiking Посмотреть сообщение
    Привет.
    Попробовал поставить. Сразу вопрос возник - у меня открыты
    позиции по sin1 и siu1, а индикатор показывает только sin1.
    Почему ?
    Хм, странно. А в логе ошибку не выдаёт какую-нибудь? Лоты по sin1 корректно считает? И проверь ещё файл BrocoMargin.txt в папке files, присутствует в нём запись о siu1 или нет? Возможно индикатор некорректно инициализировался, попробуй запусти его по новой
  4. 2,257
    Комментарии
    21
    Темы
    2597
    Репутация Pro
    Аватар для wiking  
    Мастер форумных наук

    6 Медалей
    Цитата Сообщение от Meat Посмотреть сообщение
    Хм, странно.
    :D Это я ступил. С индикатором все в порядке, спасибо !

    Там просто вторая строчка по цвету совпала с фоном и я ее
    в упор не видел, пока не догадался фон сменить. :fist:
  5. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей
    Доработал индикатор. Теперь там отображается время экспирации контрактов. Причём когда наступает день экспирации по какому-нибудь контракту, то его значение в таблице выделяется красным цветом. А также выдаётся сигнал с предупреждением: "Внимание! Сегодня произойдёт экспирация по следующим контрактам: ...... Не забудьте закрыть ваши сделки!". Сигнал выдаётся однократно, но если открывается сделка по новому экспирируемом контракту, которого раньше не было в списке ордеров, то сигнал выдаётся опять.
    Включается эта опция параметром Signal_Expiration.
    А также добавил параметры Font и FontSize для самостоятельной настройки шрифта по вкусу.




    В прикреплённом архиве 2 файла как и в прошлый раз: сам индикатор + DLL. Оба обновлённые.

    Кстати, если у кого-то индикатор отображает только один столбец маржи по фьючерсам, а в лог выдаётся ошибка чтения данных с сайта, то это скорее всего из-за того, что его антивирусник блокирует соединение. У некоторых такое наблюдается с Касперским. Поэтому нужно либо временно отключить файерволл, чтобы спецификации были получены и сохранены в файл, либо поковыряться в его настройках, добавив исключения или ещё что-нибудь.
    Вложения Вложения
  6. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей
    Недавно обнаружил, что у меня в этом индикаторе был небольшой косяк. Для позиций на продажу по форексу он показывал нулевое значение маржи. Исправил.
    И также оптимизировал загрузку данных с сайта. Теперь она выполняется в асинхронном режиме (т.е. в фоновом), не блокируя работу терминала. Поэтому подвисаний на старте теперь нет.
    Вложения Вложения
  7. 15
    Комментарии
    2
    Темы
    15
    Репутация Pro
     
    Новичок

    2 Медалей
    Алексей, а нет ли у Вас желания добавить отдельно учет отложенных ордеров? В смысле, что если отложенные ордера откроются, вопросы размера маржи будут иметь не меньшее значение, что и при выставлении рыночных ордеров.....
  8. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от Azerus Посмотреть сообщение
    Алексей, а нет ли у Вас желания добавить отдельно учет отложенных ордеров? В смысле, что если отложенные ордера откроются, вопросы размера маржи будут иметь не меньшее значение, что и при выставлении рыночных ордеров.....
    Да, согласен, изначально у меня тоже была такая мысль, потом как-то забылось... Ок, добавлю в ближайшее время эту опцию. Единственное надо решить, как лучше отображать эти ордера: отдельными строками или как-то группировать. Например на счёте есть такие ордера:
    CLH2 buy 0.1
    CLH2 buy limit 0.1
    CLH2 buy limit 0.2
    CLH2 sell limit 0.3
    CLH2 buy stop 0.4
    CLH2 sell stop 0.5
    Надо ли их как-то объединять?
  9. 15
    Комментарии
    2
    Темы
    15
    Репутация Pro
     
    Новичок

    2 Медалей
    Цитата Сообщение от Meat Посмотреть сообщение
    .......Единственное надо решить, как лучше отображать эти ордера: отдельными строками или как-то группировать. .....
    Как по-мне, то лучше показывать отдельными строками.... Единственно, необходимо четко выделять открытые позиции от отложенных ордеров (в верху таблички добавить типа:
    - Margin for Open positions
    - Margin for Pending orders
    - Total margin
    ) ....
  10. 1,676
    Комментарии
    9
    Темы
    1703
    Репутация Pro
     
    Мастер форумных наук

    4 Медалей
    Кстати тут ещё есть один нюанс. Открытие ордеров происходит по начальной марже (initial margin), а уже открытые позиции расчитываются по поддерживающей марже (maintenance margin). Поэтому тут возникает много спорых моментов. Например для поддержания нового ордера маржи будет достаточно, но для его открытия - нет. А если отложенных ордеров несколько? Какие-то смогут открыться, какие-то нет. Причём ты ведь не знаешь заранее, какие именно смогут открыться. До кого первого рынок дойдёт, тот и откроется первым (либо наоборот не откроется, если объём слишком велик).
    В итоге маржа будет показывать одно, а в реальности получится совсем другой сценарий.
    Либо тогда всех их обсчитывать по инициирующей марже, т.е. брать с запасом, чтоб наверняка. Но тогда и имеющиеся открытые ордера по данному инструменту нужно тоже обсчитывать по инициирующей марже, ибо в процессе открытия ордера проверка идёт именно по суммарной инициирующей марже для всех открытых ордеров (по данного инструменту).
    В общем тут много подводных камней получается... Я теперь вспомнил, что именно по вышеуказанным причинам и отбросил в своё время эту затею с отложенными ордерами :)

Вверх
РегистрацияX

чтобы писать, читать, комментировать