Эта стратегия использует простые движущиеся средние пересечения и двойные остановки, чтобы контролировать риск и повысить вероятность получения прибыли. Стратегия подходит для среднесрочных и краткосрочных торгов, чтобы поймать возможности при изменении тенденции.
Эта стратегия основана на перекрестном значении EMA и WMA для определения движения рынка. Когда EMA выходит за пределы WMA, вы делаете больше; когда EMA выходит за пределы WMA, вы делаете меньше.
Каждый раз, когда открывается позиция, стратегия устанавливает два уровня остановки. Первый уровень остановки фиксируется как цена открытия позиции +20 пунктов, второй уровень остановки фиксируется как цена открытия позиции +40 пунктов.
Когда цена достигает первого уровня остановки, она плавно устраняет половину позиции. Оставшиеся позиции продолжают держаться, преследуя второй уровень остановки или остановки.
Таким образом, каждая сделка имеет три возможных исхода:
Цена вызывает остановку убытков, прямые убытки 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)