Попробуйте, это скрипт для расчета лота исходя из заданной суммы.
//+------------------------------------------------------------------+ //| CalcLot.mq5 | //| Copyright 2011, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2011, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property script_show_inputs //--- входные параметры input double InpMoney = 200; //Сумма, на которую открывается сделка input ENUM_ORDER_TYPE InpDirection = ORDER_TYPE_BUY; //Тип ордера //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID); double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK); double price; if(InpDirection==ORDER_TYPE_BUY) price=ask; else if(InpDirection==ORDER_TYPE_SELL) price=bid; else { printf("Расчет лота ведется только для значений %s и %s",EnumToString(ORDER_TYPE_BUY),EnumToString(ORDER_TYPE_SELL)); return; } double calc_margin=0; if(OrderCalcMargin(InpDirection,_Symbol,1.0,price,calc_margin)) { if(calc_margin>0.0) { double lot=InpMoney/calc_margin; printf("Для суммы %.2f(%s), лот равен %.2f",InpMoney,_Symbol,lot); } } } //+------------------------------------------------------------------+
Попробуйте этот скрипт.
Спасибки, скрипт навел на замечательную функцию OrderCalcProfit()
В результате нарисовал скрипт рассчитывающий лот исходя из желаемого минуса при открытии. БОЛЬШИМ СПРЕДАМ - МАЛЕНЬКИЕ ЛОТЫ !!!
double zLot (string zSymbol, string Shift) { double zSpeadProfit = 20; double zMinLot= SymbolInfoDouble(zSymbol,SYMBOL_VOLUME_MIN); if (zMinLot == 0) {zMinLot = SymbolInfoDouble(zSymbol,SYMBOL_VOLUME_STEP);} double zOrderCalcProfit; if (Shift == "Buy") { OrderCalcProfit(ORDER_TYPE_BUY, zSymbol, 100 ,SymbolInfoDouble(zSymbol,SYMBOL_ASK), SymbolInfoDouble(zSymbol,SYMBOL_BID), zOrderCalcProfit); } if (Shift == "Sell") { OrderCalcProfit(ORDER_TYPE_SELL, zSymbol, 100 , SymbolInfoDouble(zSymbol,SYMBOL_BID), SymbolInfoDouble(zSymbol,SYMBOL_ASK), zOrderCalcProfit); } if (Shift == "Wait") {Alert ("Не могу определить для лота тип ордера, возвращаю минимальный лот."); return (NormalizeDouble(zMinLot,2));} //Alert (Shift, " zOrderCalcProfit = ",zOrderCalcProfit); double Lot = - zSpeadProfit * 100 / zOrderCalcProfit; Alert ("Lot =", Lot); return (NormalizeDouble(Lot,2)); }
Спасибки, скрипт навел на замечательную функцию OrderCalcProfit()
В результате нарисовал скрипт рассчитывающий лот исходя из желаемого минуса при открытии.
Круто, весь народ желает прибыли, а вы тут желаемые убытки рассчитываете :)
nothing personal, just life.
Попробуйте, это скрипт для расчета лота исходя из заданной суммы.
Для покупок нужно учитывать ещё проскальзывание, если оно будет использоваться:
if(InpDirection==ORDER_TYPE_BUY) price=ask + slippage;
действительно, почему лота нет в MQL5 ?
ведь многим хочется знать цену пункта лотом
так и придётся вычислять лот с помощью OrderCalcMargin и OrderCalcProfit
Полотовая ,попипсовая, подолларовая логики в какой-то мере ущербны. Как и многое другое, что измеряется в абсолютных единицах. Переход к относительным единицам измерения особенно полезен при торговле портфелем разнокалиберных символов. Вообще тема перехода от одних единиц измерения к другим довольно простая, но слабо (вообще не встречал) освещена, т.к., видимо, почти не практикуется.
По сути задача при открытии позиции сначала должна ставиться так: какую часть имеющегося капиталла мы хотим инвестировать в позицию портфлеля (включая простейший случай портфеля - 1 символ)? Например, хотим инвестировать 50% от тех денежных средств, что имеем. Далее встает вопрос (грубо): какой профит мы хотим получить? Допустим, что хотим получить 5%.
И уже только потом встает вопрос, какие лоты и направления должны быть для различных символов портфеля, как должна измениться цена порфтеля (в абсолютных единицах).
Причем заметьте, все это распространяется на любые "символы", включая картошку, мебель и т.д. А не только FOREX+биржи. Подобная логика универсальна.
P.S. Представьте себе такую картину в терминале: 30% из ваших средств задействованы в торговле. Они распределены так: 100% = 10% (инвестированы в BUY EURUSD) + 20% (SELL GBPUSD) + 50% (BUY GOLD) + 30% (SELL OIL). И собственно, без разницы тогда, какие там лоты у каждого символа и чему равна цена каждого символа.
P.P.S. На FOREX еще бывает полезна другая система координат: сколько какой валюты (не пар, а именно валюты: USD, JPY, CHF и т.д.) у вас "имеется" (включая отрицательное количество). Например, при рыночно-нейтральной позиции BUY EURUSD, SELL GBPUSD и SELL EURGBP количество "имеющейся" каждой валюты (EUR, USD, GBP) должно быть нулевым. И тема взаимного перехода от имеющейся валюты к лотам их соответствующих пар-символов тоже интересна.
P.P.P.S. Нет на MQL5-форуме трейдерских тем. Один программинг.
1. Мне ближе лоты ограничевать потерями, а не прибылью.
Видимо, не догнали относительную систему координат. В ней вы без проблем можете по отношению к любому символу с одним тем же условием ограничивать потери.
В вашем примере, допустим, вы вложились по 33% в EURUSD, USDJPY и AUDUSD. Так вот если вы поставите у всех символов, например, 5% стоп-лосс (0.005% изменение цены от цены открытия), то при срабатывании стоплоссов убыток по этим символам будет совпадать (в валюте депозита). Ключевое действие - вложиться по 33% (т.е. не лотовая система координат). И вам совершенно не понадобится рассчитывать "хитрым" образом SL, просто ставите для всех 5% и все.
Это не только крайне удобно, но и правильно с точки зрения логики торговли. Прибыль спекулянта измеряется в процентах от инвестированных в сделку средств.
Лотовая система координат совершенно не показательна. Видите вы лоты текущих открытых позиций по разным символам - и это ничего не говорит о распределении рисков по символам, загрузке депозита и т.д. А в относительных координатах вы бы мгновенно видели, что такой-то инструмент "сжирает" основную часть риска, остальные влияют не сильно. Это можно определить только в относительной системе координат. И любой, кому нужно оценить текущее состояние позиций по рискам, (возможно, не осознавая этого) переходит от лотовой системы координат к относительной.
Ну и как говорил выше, с лотовой системой без преобразований в портфельной торговле делать практически нечего. Напрашивается создание простейшего конвертора систем координат.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Лотом как-то не наглядно открываться: на одной валюте он стоит 20$, на другой 200$.
Хотелось бы входить в рынок всегда фиксированной суммой, а не лотом.
Т.е. рассчитать лот так, чтобы при его открытии получить скажем спрэд в 20$.
Конечно можно:
- открыть позицию на 1 лот в тесте
- посмотреть какой по ней получился спредовый минус (Например: -222$)
- пересчитать процентное соотношение лота под 20$ ( 20$*1 лот / 225$ = 0,08888888888 )
- и открыть на продуктиве позицию на 0.09 лота на желаемые примерно -20$
Перебрал некоторые переменные, но никак не могу из них сообразить стоимость 1 лота.