Возможно, вы уже слышали об этом, но выбор подходящего размера лота для вашей торговой системы является ключевым элементом для разработки хорошей системы. Вы можете указать размер лота, просто объявив его во внутренней переменной в качестве фиксированного размера лота для каждого ордера, но мы рассмотрим простой метод, который вычисляет размер лота на основе процента вашей свободной маржи.
За кулисами есть небольшая математика, но в основном, если вы выберете пользовательскую настройку риска 1, вы будете торговать 0,01 микролота за каждый 1K размера капитала. Таким образом, с пользовательской настройкой риска 2 и размером счета 10 000 вы начнете с 0,2 лота, и он будет автоматически добавлять/вычитать 0,01 лота на каждые 100 долларов прибыли/убытка. Этот метод автоматического определения размера лота настолько прост, насколько это возможно, но очень эффективен для автоматического начисления вашей прибыли, разделения ваших убытков или автоматической корректировки депозитов и снятий со счета.
Bool:будете ли вы использовать управление капиталом или нет.
Двойной:ваша предустановленная настройка риска.
Двойной:если MM отключен, вы будете использовать этот размер лота вручную.
Double:это количество знаков после запятой для лотов, предоставленных вашим брокером. У большинства есть два десятичных знака, но у некоторых есть один.
extern bool MM =TRUE;
extern double Risk =2;
extern double Lots =0,1;
extern double LotDigits =2;
double GetLots()
{
двойной минимальный лот =MarketInfo(Symbol(), MODE_MINLOT);
двойной максимальный лот =MarketInfo(Symbol(), MODE_MAXLOT);
двойное кредитное плечо =AccountLeverage();
двойной размер лота =MarketInfo(Symbol(), MODE_LOTSIZE);
двойной стоп-уровень =MarketInfo(Symbol(), MODE_STOPLEVEL);
двойной минлот =0,01; двойной максимальный лот =50,0;
if(MM)
{
двойные лоты =лоты;
двойные лоты =NormalizeDouble(AccountFreeMargin() * Risk/100 / 1000,0, LotDigits);
if(lots
if (AccountFreeMargin()
Comment («У нас нет денег. Лоты =«, лоты», , Свободная маржа =«, AccountFreeMargin());
}}
else lots=NormalizeDouble(Lots,Digits);
return (много);
}
Вы увидите, что сначала нам пришлось объявить несколько переменных extern, чтобы определить, нужно ли включать управление (true). или выключено (false) , какой будет наша пользовательская настройка риска, если она включена, а если нет, то каким будет размер лота по умолчанию.
Количество цифр - это количество знаков после запятой, которое позволяет ваш брокер (например, если он допускает микролоты, такие как 0,01, он будет иметь 2 цифры или знаки после запятой).
Получить лоты() это имя, которое мы дали нашей пользовательской функции. Таким образом, все о (это могло быть любое имя) и все, что заключено в его скобки, является вычислением этой функции. Вы просто разместите GetLots() в третьем параметре функции OrderSend(), чтобы вызвать ее, заменив переменную с фиксированным лотом, которая была там раньше.
Мы создаем переменную minlot для ссылки на MarketInfo(). функция. MarketInfo() function — это функция, которая нам нужна для получения различных рыночных данных по данной валюте, таких как цена Bid или Ask, значение свопа, количество цифр, и для наших целей она также может сообщить нам минимальный размер лота для этой валюты. . Мы хотим убедиться, что какой бы расчет лота ни проводился, он больше минимального размера лота брокера, иначе он меньше minlot, это будет minlot.
Основной расчет автоматического лота ММ происходит в одной строке:
<цитата>двойные лоты =NormalizeDouble(AccountEquity() * Risk/100/1000.0, LotDigits);
Собственный капитал() — это одна из многих информационных функций счета, которая возвращает значение собственного капитала текущего счета. Мы хотим вернуть значение капитала счета, а не функцию AccountBalance(). , потому что собственный капитал представляет собой более достоверную картину состояния счета (то есть чистую стоимость счета). Мы хотим, чтобы стоимость собственного капитала определяла наши математические расчеты при подходящем размере лота. Мы собираемся умножить это значение собственного капитала на наше значение риска, затем разделить на 100, а затем еще раз разделить на 1000, чтобы определить подходящий размер лота.
Результатом является пропорциональный размер лота, основанный на выбранной настройке риска:он делает настройку риска 1 сделки 0,01 лота на 1 тыс. капитала, настройку риска 2 сделки 0,02 лота на 1 тыс. капитала и т. д. Существует множество возможностей. , в зависимости от выбранной настройки риска. Лоты добавляются или вычитаются из счета по мере его увеличения или уменьшения в размере. Например, при значении риска 2 можно торговать 0,2 лота на счете 10 000 и прибавлять/вычитать 0,01 лота на каждые 100 долларов прибыли или убытка собственного капитала. Пользователь может легко настроить параметры риска, соответствующие его допустимому уровню риска, стилю торговли советника и размеру счета.
Если ММ установлено значение true, мы рассчитаем размер лота на основе эквити и присвоим это значение переменной лотов. Если ММ неверно, мы просто присваиваем значение лотов фиксированному размеру лотов.
Вы можете видеть, что приведенный выше код относительно прост, но он может существенно изменить автоматический размер лота в зависимости от меняющегося размера капитала. Существуют более сложные способы определения размера лота, но иногда самые простые методы работают лучше всего.
Что такое план обслуживания клиентов (POS)?
Сколько времени нужно, чтобы получить письмо о финансовой помощи?
Исправление прежней версии NiceHash Miner Fork v19.2 (CPU+GPU):загрузить для Windows.
Потеря слуха связана с многочисленными проблемами со здоровьем
Иерархия потребностей Маслоу - развенчание всей теории