Эта стратегия использует простые методы перекрестки скользящей средней и двойной прибыли для контроля риска и повышения прибыльности.
Стратегия основана на перекрестке EMA и WMA для определения рыночных тенденций.
При входе устанавливаются два уровня получения прибыли. Первый уровень получения прибыли фиксируется по цене входа + 20 пунктов, а второй уровень получения прибыли фиксируется по цене входа + 40 пунктов. Между тем, стоп-лосс размещается по цене входа - 20 пунктов.
Когда цена достигнет первой прибыли, она закроет половину позиции. Остальная позиция будет продолжать работать в сторону второй прибыли или до тех пор, пока не остановится.
Есть три возможных результата для каждой сделки:
Цена достигает стоп-лосса, принимает убыток 2% напрямую.
Сначала цена падает, потом прибыль, затем закрывается половина позиции, получая 1% прибыли, затем продолжается до тех пор, пока не остановится, и заканчивается безубыточностью.
После того, как цена достигнет первой прибыли, цена продолжает работать и достигает второй прибыли, заканчиваясь 1% + 2% = 3% общей прибыли.
Наибольшее преимущество этой стратегии двойного получения прибыли заключается в том, что она контролирует риск и избегает огромных одиночных потерь. Стоп-лосс ограничивает максимальную потерю в пределах 2% при движении рынка против.
По сравнению с однократным получением прибыли / остановкой убытка, эта стратегия имеет три результата - потерю, выигрыш или безубыточность, что снижает вероятность остановки убытка. Даже если остановить, максимальный убыток ограничивается 2%. По сравнению с традиционными стратегиями, механизм двойного получения прибыли значительно снижает DD и улучшает показатель выигрыша.
Еще одно преимущество заключается в его простоте. EMA и WMA являются хорошо известными индикаторами, которые легко понять. Логика получения прибыли / остановки убытков проста в мониторинге. Это делает стратегию легкой для внедрения новичками.
Несмотря на преимущества, есть также риски, о которых следует знать для этой стратегии.
Во-первых, как индикаторы скользящих сред, EMA и WMA имеют относительно слабые возможности в определении рыночных диапазонов.
Во-вторых, фиксированные уровни получения прибыли/остановки убытков могут не адаптироваться к волатильности рынка.
Наконец, стратегия не может реагировать на неожиданные события, с риском попасть в ловушку.
Для дальнейшей оптимизации стратегии существует несколько аспектов:
Улучшить входные сигналы. Испытать лучшие скользящие средние или индикаторы тренда, чем EMA и WMA, чтобы получить более качественные сигналы.
Используйте такие методы, как ATR, последующая остановка убытков и т. Д., Чтобы уровни прибыли/убытка адаптировались к рынкам.
Добавьте фильтры. Требуйте подтверждения объема или вторичного индикатора перед перекрестным переходом, чтобы избежать ловушек. Также подумайте, стоит ли торговать вокруг крупных событий.
Оптимизируйте размер позиций, уточните размер позиций в соответствии с правилами управления капиталом.
В целом, это простая и практичная стратегия следования тренду. Она использует EMA и WMA для перекрестных входов и двойную прибыль для контроля рисков. По сравнению с традиционными стратегиями, она имеет более высокий показатель выигрыша и меньший риск. Конечно, следует следить за ограничениями индикаторов и настроек прибыли / убытка. Дальнейшая оптимизация может сделать стратегию более надежной.
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("FS ATR & PS (MA)", overlay=true) // Strategy Buy = input(true) Sell = input(true) // Time Period start_year = input(title='Start year' ,defval=2019) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_hour = input(title='Start hour ' ,defval=0) start_minute = input(title='Start minute' ,defval=0) end_time = input(title='set end time?',defval=false) end_year = input(title='end year' ,defval=2019) end_month = input(title='end month' ,defval=12) end_day = input(title='end day' ,defval=31) end_hour = input(title='end hour' ,defval=23) end_minute = input(title='end minute' ,defval=59) // MA ema_period = input(title='EMA period',defval=10) wma_period = input(title='WMA period',defval=20) ema = ema(close,ema_period) wma = wma(close,wma_period) // Entry Condition longCondition = crossover(ema,wma) and Buy and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) shortCondition = crossunder(ema,wma) and Sell and nz(strategy.position_size) == 0 and time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true) // Exit Condition a = input(20)*10 b = input(40)*10 c = a*syminfo.mintick d = b*syminfo.mintick long_stop_level = float(na) long_profit_level1 = float(na) long_profit_level2 = float(na) long_even_level = float(na) short_stop_level = float(na) short_profit_level1 = float(na) short_profit_level2 = float(na) short_even_level = float(na) long_stop_level := longCondition ? close - c : long_stop_level [1] long_profit_level1 := longCondition ? close + c : long_profit_level1 [1] long_profit_level2 := longCondition ? close + d : long_profit_level2 [1] long_even_level := longCondition ? close + 0 : long_even_level [1] short_stop_level := shortCondition ? close + c : short_stop_level [1] short_profit_level1 := shortCondition ? close - c : short_profit_level1 [1] short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1] short_even_level := shortCondition ? close + 0 : short_even_level [1] // Position Sizing Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100 size = 1 // Strategy if longCondition strategy.entry("Buy" , strategy.long, qty=size) strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2) strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2) if shortCondition strategy.entry("Sell" , strategy.short, qty=size) strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2) strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2) // Plot plot(strategy.position_size <= 0 ? na : long_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size <= 0 ? na : long_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_stop_level , color=#dc143c, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1) plot(strategy.position_size >= 0 ? na : short_even_level , color=#ffffff, style=plot.style_linebr, linewidth=1) plot(ema,color=#00ced1) plot(wma,color=#dc143c)