Всем привет.
Использую в торговом советнике функцию PositionOpen для открытия позиции по рыночной цене. Выглядит это примерно так:
В переменной Lots содержится количество лотов на покупку инструмента.
Задача: Как грамотно рассчитать количество лотов, чтобы их было ровно столько, чтобы купить инструмента на все доступные средства по рыночной цене?
PS: никаких плечей не используем.
Спасибо.
на вскидку, где-то так: lots=AccountBalance()/(tickValue+marginRequired+marginMantainance); // и чуть-чуть уменьшить, а то пара пунктов не в ту сторону и стопаут
PS: никаких плечей не используем.
Всем привет.
Использую в торговом советнике функцию PositionOpen для открытия позиции по рыночной цене. Выглядит это примерно так:
В переменной Lots содержится количество лотов на покупку инструмента.
Задача: Как грамотно рассчитать количество лотов, чтобы их было ровно столько, чтобы купить инструмента на все доступные средства по рыночной цене?
PS: никаких плечей не используем.
Спасибо.
AccountFreeMargin/(price*tickvakue/ticksize)
Всем привет.
Использую в торговом советнике функцию PositionOpen для открытия позиции по рыночной цене. Выглядит это примерно так:
В переменной Lots содержится количество лотов на покупку инструмента.
Задача: Как грамотно рассчитать количество лотов, чтобы их было ровно столько, чтобы купить инструмента на все доступные средства по рыночной цене?
PS: никаких плечей не используем.
Спасибо.
Для МТ5 (MT4 внизу) , без нормализации , округления и без ограничение на минимум и максимум :
Lots = AccountInfoDouble(ACCOUNT_EQUITY) / SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);
Lots = AccountEquity() / MarketInfo(_Symbol,MODE_LOTSIZE);
Для МТ5 (MT4 внизу) , без нормализации , округления и без ограничение на минимум и максимум :
А в чём отличие, и почему не использовать в мт4 современную запись, то есть первую
А в чём отличие, и почему не использовать в мт4 современную запись, то есть первую
Для МТ5 (MT4 внизу) , без нормализации , округления и без ограничение на минимум и максимум :
допустим размер вашего депозита 1000, в 1 контракте 100 000, если вы поставите лот 0.01 при покупке EURUSD по цене 1.35432 он не отработает по причине цена 0,01 контракта больше чем вы можете себе позволить.
с уважением.
вы забыли цену, если работать чисто на свои при плече 1:1 получаем:
допустим размер вашего депозита 1000, в 1 контракте 100 000, если вы поставите лот 0.01 при покупке EURUSD по цене 1.35432 он не отработает по причине цена 0,01 контракта больше чем вы можете себе позволить.
с уважением.
Да я согласен , вот корекция :
double Ask; // Текущая цена double LotMin = SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN); // Мимимальной лот double MarginBuy; // Марджин для мимимального лота if ( SymbolInfoDouble(_Symbol,SYMBOL_ASK,Ask) ) // Получаем Текущая цена if ( OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,LotMin,Ask,MarginBuy) ) // Вычиляме Марджин дла Минимального лота { MarginBuy = MarginBuy*AccountInfoInteger(ACCOUNT_LEVERAGE); // Изключаем Леверидж Lots = AccountInfoDouble(ACCOUNT_EQUITY) / MarginBuy; // Сколько Минимальныь лотов можем купить Lots = NormalizeDouble(LotMin*MathFloor(Lots),2); // Округляем резултат к менщее }
Пояснение : Марджин должен учитывать текущую цену актива, в валюте депозита.
Нет нет нет!
Мой косяк в том, что я не указал рынок. Рынок FORTS московской биржи. Там как-то по-другому считается. Ну, вот смотрите, например инструмент RTS-9.17:
Текущая цена: 109350
Начальная маржа: 12806
Допустим, я имею 100 000 рублей. Я знаю точно, что могу купить несколько штук. Если 100 000 / 12 806 = 7.8088
Но могу ли я купить 7 лотов? Или смогу меньше?
Нет нет нет!
Мой косяк в том, что я не указал рынок. Рынок FORTS московской биржи. Там как-то по-другому считается. Ну, вот смотрите, например инструмент RTS-9.17:
Текущая цена: 109350
Начальная маржа: 12806
Допустим, я имею 100 000 рублей. Я знаю точно, что могу купить несколько штук. Если 100 000 / 12 806 = 7.8088
Но могу ли я купить 7 лотов? Или смогу меньше?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Aleksey Vyazmikin, 2017.08.17 16:54
Может кто не знает - я вот не знал.
Оказывается, открыть единовременно позицию по рынку и отложенными ордерами можно не на одинаковое количество лотов, при одинаковом количестве средств.
Комментарий брокера:
"
...
Дело в том, что рыночные заявки требуют большего обеспечения, чем лимитированные.
Например: ГО на лимитные заявки по Si-9.17 составляет 3558, а на рыночные 5388, в связи с этим вы можете купить меньше.
...
"
Таким образом, по рынку открывать нужно в пару заходов, если торговля идет под максимальную загрузку депозита.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет.
Использую в торговом советнике функцию PositionOpen для открытия позиции по рыночной цене. Выглядит это примерно так:
В переменной Lots содержится количество лотов на покупку инструмента.
Задача: Как грамотно рассчитать количество лотов, чтобы их было ровно столько, чтобы купить инструмента на все доступные средства по рыночной цене?
PS: никаких плечей не используем.
Спасибо.