Тестируем сеточный алгоритм торгового советника Setka Limit
Сегодня мы поговорим о «сеточном» торговом алгоритме, который имеет уже многим знакомую специфику торговли и который больше рассчитан на разгон депозита и на удачу, чем на плавный и стабильный заработок. Советник Setka Limit — это робот который торгует только отложенными лимит-ордерами и полностью основан на математическом расчете.
Торговый алгоритм советника Setka Limit
Уже из названия этого советника понятно, что этот торговый алгоритм расставляет сетку из ордеров, а далее, после срабатывания этих ордеров работает с ними, передвигая Cтоп Лоссы и выставляя противоположные ордера большего объема.
Советников с подобной торговой тактикой достаточно много, так как на «сеточной» стратегии можно придумать разные варианты ее реализации. Именно эта версия «сеточника» отличается тем, что торгует только лимитными ордерами и торгует сразу в обе стороны, т. е. общие позиции на покупку и на продажу мониторятся отдельно друг от друга.
Стоит отметить, что сетка строится по нарастающей, т. е. каждый следующий усредняющий ордер имеет больший объем (обычно в 2 раза), чем предыдущий. Многие тут могут возразить, что это обычный «Мартингейлщик» и что никаких положительных результатов от него ждать не следует. Но, когда вы разберетесь с самой торговой системой, вы поймете насколько это увеличение лота важно в данном торговом алгоритме. И то, что он полностью основан на математическом расчете, я вас тоже предупреждал.
Исходного кода этого советника у меня не оказалось, поэтому пришлось изучать его работу прямо из тестера стратегий терминала MetaTrader 4. Согласно результатам изучения тестера, после того как вы устанавливаете советник Setka Limit на график, он тут же выставляет ближайшие лимитные ордера на покупку и на продажу, так близко, что они сразу срабатывают и кажется, что сделки были открыты по рынку.
На некотором расстоянии от той точки, где были открыты первые ордера, советник Setka Limit расставляет еще 2 лимитных ордера на покупку и на продажу соответственно. Лоты у этих ордеров увеличены в 2 раза по сравнению с теми, которые были открыты близко к текущей цене. Расстояние до этих дальних ордеров, советник Setka Limit просчитывает автоматически, опираясь на текущую волатильность валютной пары, поэтому данное расстояние всегда меняется и его нельзя установить жестко.
Не по одному из этих ордеров не устанавливается ни Стоп Лосс, ни Тейк Профит. После того как срабатывает один из этих «дальних» ордеров, предположим сработал лимитный ордер на продажу, по открытому ордеру на покупку выставляется «безубыток» и на графике появляется ценовая отметка на том уровне, где находится безубыток по 2-м открытым ордерам на продажу. По понятным причинам эта отметка расположена ближе ко второму ордеру.
Далее, согласно встроенному алгоритму, на определенном этапе, все открытые ордера закрываются по рынку и все отложенные ордера на тот момент удаляются со счета. Затем торговый алгоритм начинается заново, как в тот момент, когда вы устанавливаете советник на график.
Технические характеристики советника Setka Limit
К данному торговому роботу не предъявляется каких-то особых требований, главное нужно помнить, что во время торговли могут быть просадки по счету и необходимо подбирать размер депозита и объем торгового лота так, чтобы этот депозит выдержал нагрузку.
При торговле минимальным лотом, вы даже можете начать торговлю с депозитом в $100, и не важно на каком таймфрейме вы собираетесь торговать, так как у данного робота выбранный таймфрейм абсолютно никак не влияет на результаты его работы, потому что он больше ориентируется на расстояния в пунктах между ордерами.
Ну, и наверно самое главное, на вашем торговом счете должно быть большое кредитное плечо, так как советник время от времени усредняется и у него всегда должен быть запас по марже на вашем счету.
Параметры советника Setka Limit
ProfitStartTrall — активация Трейлинг Стопа после достижения установленного уровня прибыли в валюте депозита;
TrailingPercentProfit — Трейлинг Стоп, который зависит от величины профита и устанавливается в процентах от максимальной величины;
TakeProfit — Тейк Профит в пунктах;
LocProfit — «замораживание» определенного уровня прибыли;
Buy — разрешить советнику открывать длинные позиции;
Sell — разрешить советнику открывать короткие позиции;
OrdersLimit, OrdersStop — количество ордеров;
lotLimit, lotStop — лот для соответствующих ордеров;
riskLimit, riskStop — максимальный риск по всем ордерам;
PlusLotStop, PlusLotLimit — количество лотов, на которое увеличивается предыдущее значение;
K_LotStop, K_LotLimit — коэффициент увеличения лота для ордеров;
DigitsLot — количество знаков после запятой в разрядности используемого лота;
MaxLot — максимально возможный торговый объем для ордера;
MoveStepGread — шаг перемещения сетки;
FirstStepLimit, FirstStepStop — первый шаг для ордеров;
StepLimit, StepStop — шаг изменения ордеров;
K_StepLimit, K_StepStop — множитель увеличения коэффициента для лота;
MaxPips — максимальное расстояние между ордерами;
SLossLimit, SLossStop — размеры Стоп Лоссов для соответствующих ордеров;
TProfitLimit, TProfitStop — размеры Тейк Профитов для соответствующих ордеров;
NoLoss — уровень безубытка;
MinProfitNoLoss — расстояние от точки входа то стопа после установки «безубытка»;
TrailingPercentStep — шаг Трейлинг Стопа в процентах;
magic — «магический номер» для ордеров советника;
TrailingOn — активировать Трейлинг Стоп в самом начале;
trailingStop — вид Трейлинг Стопа: 1 — по свечам, 2 — по фракталам, 3 — по индикатору ATR, 4 и более — фиксированный, в пунктах;
TF_Tralling — таймфрейм для Трейлинг Стопа: 1 – минутный, 5 – 5-ти минутный, 15 – 15-ти минутный, 30 – 30-ти минутный, 60 – часовой, 240 – 4-х часовой, 1440 – дневной, 10080 – недельный, 43200 – месячный;
StepTralling — шаг Трейлинг Стопа;
period_ATR — период используемого индикатора ATR;
AlertOn — активировать звуковой и текстовый сигналы;
SendMailInfo — отправлять оповещение на электронную почту;
DrawInfo — отображать информацию на графике;
font_size — размер шрифта выводимой информации;
Corner — расположение информационного окна советника;
text_color — цвет выводимого текста;
Monday — название дня недели, в данном случае «Понедельник»;
TimeStartMonday — старт начала торгов в понедельник;
TimeEndMonday — час окончания торгов в понедельник;
NoLossLoc — локирование безубытка;
MinPipsLoc — минимальный размер локирования, в пунктах;
Key — цифровой ключ для использования коммерческой версии советника.
Тестирование и оптимизация советника Setka Limit
Сразу стоит сказать, что мне в руки попало сразу 2 версии данного робота: «v2a» и «v9b». Версия «v2a» даже на стандартных параметрах на валютной паре EUR/USD за весь год показала отличные результаты:
Тестирование советника Setka Limit
С версией «v9b» оказалось не все так просто. После запуска ее на том же периоде, советник Setka Limit сразу же «сливает» депозит. После того как я снизил начальный лот с 0.1 до 0.01, ситуация немного улучшилась, но депозит все так же «сливался».
Оптимизировать этого робота было некогда, так как даже его прогонка за год на часовом графике, занимало немало времени. В итоге я решил отключить увеличение лота, т. е. выставил коэффициент умножения на «1.0», максимальный лот так и остался «0.01» и все это при начальном депозите в 10.000. И даже при этом, тестирование за весь год оказалось сильно затяжным и длилось несколько часов, после чего я все вырубил, так и не дождавшись окончания. Но, тест я все-таки провел, правда не на таком большом отрезке, а всего лишь за последний месяц. Вот результаты:
Оптимизация советника Setka Limit
Такие результаты обычно бывают, когда какие-то ордера зависают на счете и при остановке тестера они принудительно закрываются. В реальной торговли все могло быть по-другому, поэтому без тестировании на истории, здесь не обойтись.
Заключение
Советник Setka Limit подойдет тем трейдерам, которые любят «разгонять» депозиты. Но, по понятным причинам он является очень рискованным, поэтому при использовании данного робота, рекомендуется регулярно снимать полученную прибыль.
Советники и скрипты для выставления отложенных ордеров
Торговая позиция другими словами называется торговым ордером (order). Ордер — это приказ открыть или закрыть торговую позицию в наиболее широком смысле.
Приказы могут быть как простыми (вы можете приказать открыть или закрыть торговую позицию по любой цене), так и сложными (такими, что действуют только в течение определенного времени, срабатывают при достижении инструментом определенной цены или с некоторыми дополнительными условиями. Так было раньше. Даже и 100 лет назад. Мало что изменилось в настоящее время кроме того, что сейчас торговля в основном компьютеризирована.
К простым методам приказов относят рыночные ордера. К сложным — отложенные. Рассмотрим их подробнее. Допустим, вы не имеете возможности постоянно следить за развитием цены на финансовом инструменте. Но есть намерения:
открыть торговую позицию;
закрыть торговую позицию;
добавить объем к уже открытой торговой позиции;
уменьшить объем ранее открытой торговой позиции;
Существуют такие главные типа отложенных ордеров, как STOP и LIMIT.
К ордерам типа STOP относят:
- BUYSTOP — открыть ордер BUY по инструменту выше текущей цены на указанном уровне;
- SELLSTOP — открыть ордер SELL по инструменту ниже текущей цены на указанном уровне;
К ордерам типа LIMIT относят:
- BUYLIMIT — открыть ордер BUY по инструменту ниже текущей цены на указанном уровне
- SELLLIMIT — открыть ордер SELL по инструменту выше текущей цены на указанном уровне.
Кроме того, в отложенные ордера в МТ4-5 можно вносить дополнительные параметры экспирации. Вы указываете дату и время, когда приказ становится не актуальным.
Когда необходимо быстро выставить отложенный ордер, но считать в уме и указывать цену ордера крайне не удобно, все это занимает очень много времени, а время из главных факторов идеального входа, поэтому рекомендуем использовать скрипты или советники быстрой и лёгкой установки отложенных ордеров (BuyStop, BuyLimit, SellStop, SellLimit), которые позволяет установить отложенные ордера одним движением мыши, просто перетащив скрипт на нужный уровень на графике.
Скрипты SetOrderBuy и SetOrderSell
- Скрипт SetOrderBuy устанавливает отложенные ордера типа BuyStop или BuyLimit.
- Скрипт SetOrderSell устанавливает отложенные ордера типа SellStop или SellLimit.
2. Скрипты bvnopen, bvnbuy, bvnsell та bvnpending
Скрипты предназначены для открытия отложенных ордеров разными способами (перетаскивание скрипта мышью, вызов скрипта по горячей клавишей),
Параметры скрипта:
Risk — риск сделки в процентах от баланса депозита;
Lot — количество лотов ордера;
OrdersNumber — количество ордеров;
StopLoss — уровень Stop Loss в пунктах;
StopLossPrice — уровень Stop Loss по цене;
TakeProfit — уровень Take Profit в пунктах;
TakeProfitPrice — уровень Take Profit по цене;
BuySell — покупка (1) или продажа (-1), Если 0-направление определяется по месту вброса скрипта на график (см. ниже);
UserComment — комментарий к ордеру.
Magic — магический номер, может использоваться для работы с советниками.
Единственная разница между скриптами bvnopen, bvnbuy и bvnsell заключается в разном перекомпилированном значении параметра BuySell. Поскольку первый предназначен для работы с мышкой, то это значение параметра — 0, поэтому для двух других это 1 и -1 соответственно, так как они предназначены для использования с горячими клавишами, отдельно на покупку и на продажу.
Отдельным назначением скрипта bvnpending является открытие отложенных ордеров. Его можно использовать только с помощью мыши, а тип ордера определяется комбинацией двух обстоятельств: какое значение стоит у параметра BuySell (выставлять обязательно, иначе не сработает) и в каком месте графика брошен скрипт, выше или ниже текущей цены. Например, если BuySell равен -1, то это будет ордер на продажу, при этом, если он ниже цены, то SELL STOP, а если выше, то SELL LIMIT.
Интересной особенностью всех скриптов из набора является использование глобальных переменных терминала для настройки параметров скрипта, при этом используется взвешенная система приоритетов так, чтобы можно было задавать различные значения для различных условий. Переменные имеют следующий формат:
bvnopen.[symbol.]varname
Таким образом, действие переменной с указанным обозначением финансового инструмента имеет больший приоритет чем возможен без такого обозначения. Поэтому для разных пар можно настроить различные параметры.
Перечень глобальных переменных, используемых скриптом:
DnDLevel — одна из ключевых переменных в работе скрипта при использовании мыши. По умолчанию этот параметр равен 0 и в этом режиме место вброс скрипта определяет только направление торговли: выше цены на графике — покупка, ниже — продажа. Уровни Stop Loss и Take Profit не устанавливаются, если они не заданы входными параметрами скрипта.
Если установить для этой переменной значение 1, то в точке вброса скрипта будет устанавливать уровень Take Profit, при условии, что они не заданы параметрами скрипта, то есть входные параметры имеют приоритет над местом вброса скрипта. Выбор направления торговли остается таким же, как и при значении 0.
Если установить значение -1, то определение направления торговли инвертируется: выше цены на графике — продажа, ниже — покупка, а точка вбрасывания скрипта определяет уровень Stop Loss, при условии, что они не заданы входными параметрами скрипта, то есть входные параметры имеют приоритет над местом вбрасывания скрипта
LotMagnifier — эта переменная задает коэффициент для количества лотов, то есть, если задать его равным 0.01, то вы сможете вводить просто 1, 2, 4 и т. д. для получения лотов 0.01, 0.02, 0.04 и т. д.
Risk — эта переменная имеет приоритет над любыми установленными значениями объема сделки, но она требует также установленного уровня Stop Loss. Если такой не установлен, то эта переменная (как и входной параметр) игнорируется. Для установления уровня риска используется следующий приоритет:
значение, установленное переменной Risk для конкретного инструмента;
значение, установленное переменной Risk глобально;
значение входного параметра Risk.
Lot — эта переменная позволяет просто жестко задать размер сделки и тогда ни значение, заданное во входных параметрах, ни коэффициент не будут иметь никакого влияния, то есть можно сказать, что для установления количества лотов используется следующий приоритет:
значение, рассчитанное по установленному параметру Risk;
значение, установленное переменной Lot для конкретного инструмента;
значение, установленное переменной Lot глобально;
значение входного параметра Lot умноженное на значение переменной LotMagnifier для конкретного инструмента;
значение входного параметра Lot умноженное на значение переменной LotMagnifier глобально;
значение входного параметра Lot.
StopLoss — переменная, которая устанавливает уровень Stop Loss по количеству пунктов и она имеет приоритет над соответствующим входным параметром, но не над параметром StopLossPrice. Полный список приоритетов будет выглядеть так:
значение входного параметра StopLoss, если отличное от 0;
значение входного параметра StopLossPrice;
значение, установленное переменной StopLoss для конкретного инструмента;
значение, установленное переменной StopLoss глобально;
место вброса скрипта на график.
TakeProfit — величина, которая устанавливает уровень Take Profit по количеству пунктов. Порядок приоритетов аналогичен предыдущему случаю.
OrderNumber — этой переменной можно задать количество ордеров, которые необходимо открыть. Она имеет приоритет над соответствующим входным параметром. Эта возможность может использоваться, когда необходимо обойти ограничение на максимальное количество лотов. Например, по правилам конкурса можно открыть 5 ордеров максимальным лотом 1. Вы хотели бы открыть один ордер лотом 5, но вас разбивать один ордер на 5 отдельных ордеров.
Magic — эта переменная, как и соответствующий параметр, задает магический номер ордера, который может использоваться вместе с советниками.
Sound — эта переменная включает (1) или выключает (0) звуковой сигнал (хлопок) при выполнении скрипта.
На первый взгляд, может показаться слишком сложно, но стоит попробовать, возможно, вам понравится.
Использовать эти скрипты можно на горячих клавишах ATL+B и ATL+S.
https://blog.roboforex.com/ru/blog/2020/07/03/testiruem-setochnyj-algoritm-torgovogo-sovetnika-setka-limit/
https://forex-method.ru/vystavlenie-otlozhennyh-orderov-na-praktike-sovetniki-dlya-upravleniya-poziciey