Эта стратегия представляет собой стратегию стоп-лосса, основанную на двойных скользящих средних. Она использует две скользящие средние, одну в качестве основной скользящей средней, а другую в качестве линии стоп-лосса. Когда цена выше основной скользящей средней, идите в длинный. Когда цена ниже линии стоп-лосса, закрывайте длинную позицию. Когда цена ниже основной скользящей средней, идите в короткий. Когда цена выше линии стоп-лосса, закрывайте короткую позицию. Она достигает стоп-лосса и получает прибыль, динамически регулируя длинные и короткие цены.
Эта стратегия использует функцию sma для вычисления простой скользящей средней длины len как основной скользящей средней линии ma. Затем в соответствии с вводом пользователем длинной стоп-потеря процента elpercent и короткой стоп-потеря процента espercent, она вычисляет длинную стоп-потеря линии el и короткой стоп-потеря линии es. Конкретные формулы:
el = ma + (ma * elpercent / 100) es = ma + (ma * espercent / 100)
где elpercent и espercent представляют собой процентные смещения от основной скользящей средней линии.
Это дает нам три линии: основная скользящая средняя ma, длинная линия стоп-лосса el и короткая линия стоп-лосса es.
Торговая логика стратегии:
Если цена закрытия выше линии длинного стоп-лосса el, открыть длинную позицию. Если цена закрытия ниже линии короткого стоп-лосса es, закрыть длинную позицию.
Если цена закрытия ниже короткой линии остановки потерь es, открыть короткую позицию. Если цена закрытия выше длинной линии остановки потерь el, закрыть короткую позицию.
Использование двойных скользящих средних для установки стоп-лосса и точек получения прибыли может эффективно контролировать риски.
Длина основной скользящей средней len и смещенные проценты elpercent и espercent настраиваются, которые могут быть скорректированы для разных рынков и хорошо адаптируются.
Механизм стоп-лосса может сократить потери во времени и избежать дальнейших потерь.
Логика стратегии проста и понятна, легко понять и реализовать, подходит для новичков.
Это может быть и долго и коротко, чтобы воспользоваться двусторонними рынками.
Риск перенапряжения на обратном тесте. Стратегии перемещающейся средней, как правило, перенапрягают данные на обратном тесте. Фактическая производительность может отличаться. Решение заключается в проверке на сложных живых рынках и соответствующей корректировке параметров.
Риск слишком близкого стоп-лосса. Если стоп-лосс слишком близок к основной скользящей средней, он может быть вызван краткосрочными колебаниями цены.
Уменьшить размер позиции для контроля давления на капитал.
Риск оптимизации параметров. Оптимальные параметры сильно варьируются в зависимости от различных рыночных условий. Для оптимизации параметров требуется время. Может использовать машинное обучение для помощи в оптимизации параметров.
Подумайте о добавлении дополнительных показателей для определения тенденции рынка и улучшения принятия решений, например, показателя объемных цен, показателя волатильности.
Исследование автоматической оптимизации длины скользящей средней и параметров остановки потери на основе изменений рынка.
Добавьте фильтрацию на торговые инструменты, торгуйте только очевидными тенденциями.
Подумайте о том, чтобы отслеживать стоп-лосс вместо фиксированного стоп-лосса, корректируя стопы на основе цен в реальном времени.
Создать систему оценки для оптимизации параметров для автоматического поиска оптимальных наборов параметров с помощью результатов обратных испытаний.
Общая логика этой стратегии ясна и легко понятна. Она использует двойные скользящие средние для остановки потери и может эффективно контролировать риски. Стратегия имеет такие преимущества, как настраиваемые параметры и адаптивность, но также имеет риски, такие как перегрузка заднего теста и настройка дистанции остановки потери, которые требуют внимания. При дальнейшей оптимизации эта стратегия может стать эффективной стратегией остановки потери, жизнеспособной для живой торговли. Она подходит в качестве отправной точки для новичков в алгоритмической торговле и может постоянно совершенствоваться с помощью практики, чтобы в конечном итоге сформировать уникальную торговую систему.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Robot WhiteBox StopMA", shorttitle = "Robot WhiteBox StopMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") len = input(50) src = input(ohlc4) elpercent = input(5.0, minval = 0, maxval = 100, title = "Shift long, %") espercent = input(-5.0, minval = -100, maxval = 0, title = "Shift short, %") showlines = input(true, defval = true, title = "Show lines") showbg = input(true, defval = true, title = "Show background") //Levels ma = sma(src, len) el = ma + ((ma / 100) * elpercent) es = ma + ((ma / 100) * espercent) //Lines colel = showlines ? color.lime : na colma = showlines ? color.blue : na coles = showlines ? color.red : na plot(el, color = colel, offset = 1) plot(ma, color = colma, offset = 1) plot(es, color = coles, offset = 1) //Background trend = 0 trend := high > el[1] ? 1 : low < es[1] ? -1 : trend[1] colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na bgcolor(colbg, transp = 80) //Trading if ma > 0 strategy.entry("Long", strategy.long, needlong ? na : 0, stop = el) strategy.entry("Short", strategy.short, needshort ? na : 0, stop = es)