
Эта стратегия является количественной торговой стратегией биткоина, основанной на двойных стопах, двойных стопах и движущихся стопах. Эта стратегия использует EMA и WMA в качестве входных сигналов, использует двойной стоп с двойным стопом для управления рисками, использует движущийся стоп с гарантированной частичной прибылью после достижения первого стопа, и продолжает преследовать более высокие доходы.
При переходе EMA через WMA сверху вниз, делается дополнительный вход; при переходе EMA через WMA сверху вниз, делается пустой вход.
С точки зрения остановки, установлены две остановки, первая остановка установлена на 20 пунктов выше точки входа, вторая остановка установлена на 40 пунктов выше точки входа.
С точки зрения остановки убытков, также устанавливаются две остановки, первая остановка устанавливается в 20 пунктов ниже точки входа, а вторая остановка устанавливается в качестве самой точки входа.
Когда цена впервые достигнет первой остановки, выровняйте 50% позиции и перенесите остановку на входную точку, чтобы продолжить поиск более выгодных позиций на второй остановке.
Таким образом, стратегия имеет три результата:
Наибольшее преимущество этой стратегии заключается в системе управления рисками. С помощью установки двойного стопа и двойного стопа можно, после получения части прибыли, использовать мобильный стоп для блокировки прибыли и продолжать стремиться к более выгодной деятельности. Это может значительно повысить рентабельность.
Еще одним преимуществом является то, что эта стратегия разделяет результаты одной сделки на три варианта, что снижает вероятность потерь в одной сделке, что делает общую прибыль более равномерной. У обычной стратегии есть только два результата, либо потеря 2% или получение прибыли, превышающей 2%. В то время как эта стратегия имеет три результата, соответственно, потеря 2%, получение 1%, и получение 3%. Это также лучше контролирует конечный риск.
Риски этой стратегии в основном связаны с установкой стоп-стоп. Слишком широкий стоп-диапазон может привести к слишком большим одноразовым потерям, а слишком узкий стоп-диапазон может быть подвержен рыночному шуму. Это требует установки подходящего стоп-диапазона в зависимости от характеристик и волатильности различных сортов.
Другой риск заключается в том, что существует риск потери части позиции, которая остается после первого остановки. Если убыток превышает прибыль от первого остановки, часть или вся прибыль будет компенсирована. Это требует строгого выполнения движущегося остановки для блокирования прибыли.
Эта стратегия может быть оптимизирована в следующих аспектах:
Тестируйте различные комбинации параметров, чтобы найти оптимальные параметры. Например, можно тестировать 15 точек, 25 точек стоп-стоп расстояния.
Попробуйте другие комбинации показателей, такие как KDJ, MACD и другие, чтобы определиться с вхождением.
Оптимизация коэффициента позиции при первом уравнении стоп-пойнта: 50% или 30% или 70%?
Тестирование настройки скорости отслеживания движущихся стоп-убытков, чтобы максимально сократить пространство для убытков при гарантированной прибыли.
Эта стратегия в целом очень устойчива, благодаря двойным стоп-стопам и движущимся стопам можно значительно повысить уровень прибыли и снизить риски хвоста. Также есть большой простор для оптимизации, а также можно получить лучшие результаты путем корректировки параметров и комбинации показателей. В целом эта стратегия подходит для инвесторов, которые стремятся к высокой стабильной прибыли.
/*backtest
start: 2024-01-11 00:00:00
end: 2024-01-18 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)
// Strategy
Buy = input(true)
Sell = input(true)
// Date Range
start_year = input(title='Start year' ,defval=2020)
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
buy =
crossover(ema,wma) and
nz(strategy.position_size) == 0 and Buy
sell =
crossunder(ema,wma) and
nz(strategy.position_size) == 0 and Sell
// Pips
pip = input(20)*10*syminfo.mintick
// Trading parameters //
var bool LS = na
var bool SS = na
var float EP = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na
if buy or sell and strategy.position_size == 0
EP := close
SL1 := EP - pip * (sell?-1:1)
SL2 := EP - pip * (sell?-1:1)
TP1 := EP + pip * (sell?-1:1)
TP2 := EP + pip * 2 * (sell?-1:1)
// current trade direction
LS := buy or strategy.position_size > 0
SS := sell or strategy.position_size < 0
// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS
if LS and high > TP1
if open <= TP1
SL2:=min(EP,TSL)
if SS and low < TP1
if open >= TP1
SL2:=max(EP,TSS)
// Closing conditions
close_long = LS and open < SL2
close_short = SS and open > SL2
// Buy
strategy.entry("buy" , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)
// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=1)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)
// Plots
a=plot(strategy.position_size > 0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size < 0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
c=plot(strategy.position_size > 0 ? TP1 : na, color=#00ced1, style=plot.style_linebr)
d=plot(strategy.position_size < 0 ? TP1 : na, color=#00ced1, style=plot.style_linebr)
e=plot(strategy.position_size > 0 ? TP2 : na, color=#00ced1, style=plot.style_linebr)
f=plot(strategy.position_size < 0 ? TP2 : na, color=#00ced1, style=plot.style_linebr)
g=plot(strategy.position_size >= 0 ? na : EP, color=#ffffff, style=plot.style_linebr)
h=plot(strategy.position_size <= 0 ? na : EP, color=#ffffff, style=plot.style_linebr)
plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)