이 전략은 여러 시간 프레임에 걸쳐 다른 유형의 이동 평균을 동적으로 선택하여 거래 신호를 생성합니다.
이 전략은 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 )