
이 전략은 다양한 유형의 이동 평균을 동적으로 선택하여 여러 시간 주기에 결합하여 거래 신호를 생성합니다.
이 전략은 SMA, EMA, TEMA, WMA, HMA의 다섯 가지 이동 평균 지표를 선택하고 평균 선의 주기 길이를 설정합니다. 전략은 선택된 역학에 따라 다른 유형의 평균 선을 그리습니다.
구체적으로, 전략은 먼저 입력 변수에 따라 재검사 주기를 정의한다. 그리고는 다섯 가지 평균선 지표를 계산한다:
선택에 따라, 해당 평균선을 그리십시오. 종점 가격이 평균선보다 높을 때, 더 많이; 종점 가격이 평균선보다 낮을 때, 공백하십시오.
이 전략은 다양한 유형의 평균선을 조합하여 가격 데이터를 평형화하고 시장 소음을 필터링하여 신뢰할 수있는 거래 신호를 생성합니다. 평균선 주기의 길이를 사용자 정의 할 수 있도록 허용하여 다양한 주기의 추세에 맞게 거래 할 수 있습니다.
이 위험은 다음과 같은 것들을 최적화하여 줄일 수 있습니다.
이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.
예를 들어, 거래량이 커질 때만 거래 신호를 생성할 수 있는 양력 지표가 추가되어 가짜 돌파구를 필터링 할 수 있습니다.
통로를 설정할 수 있고, 가격이 통로를 뚫었을 때만 입점할 수 있다. 정지선을 설정하고, 가격이 정지선을 건드린 후 평준화한다. 이것은 불필요한 손실을 줄일 수 있다.
시장상황의 동성에 따라 평균선주기를 조정할 수 있으며, 추세가 더 뚜렷할 때 긴 주기 평균선을 사용하거나, 정리할 때 짧은 주기 평균선을 사용한다.
철수 시 포지션 크기를 조정할 수 있으며 철수 시 포지션을 줄이고 수익을 올릴 때 포지션을 적당히 늘릴 수 있다.
이 전략은 복합적으로 여러 가지 평균선 지표를 적용하여 여러 시간 주기와 결합하여 비교적 안정적인 트렌드 추적 효과를 형성한다. 전략 최적화 공간은 넓고, 입구 필터, 출구 방식, 매개 변수 최적화 등의 측면에서 개선할 수 있어 전략은 실판에서 더 나은 효과를 얻을 수 있다.
/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)
qty = input(100000000, "Buy quantity")
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)
testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])
len1 = input(7, minval=1, title="Period")
s=sma(close,len1)
e=ema(close,len1)
xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3
f_hma(_src, _length)=>
_return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
h = f_hma(close, len1)
w = wma(close, len1)
ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na
buy= close>ma
sell= close<ma
alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')
ordersize=floor(strategy.equity/close)
if testPeriod()
strategy.entry("long",strategy.long,ordersize,when=buy)
strategy.close("long", when = sell )