
단평균점 수평폭투자 (Single Mean Point Crossover) 는 Chande의 동력 지표에 기반한 양적 거래 전략이다. 이 전략은 가격의 동력 변화를 계산하여 시장이 수평선 정리 단계에 있는지 판단한다. Chande의 동력 지표선이 설정된 구매선이나 판매선을 돌파했을 때, 그에 따른 구매 또는 판매 작업을 수행한다.
이 전략은 우선 가격의 동적 변화를 계산합니다.momm그리고 양변으로 나누면m1그리고 마이너스 역량m2다음으로 일정 주기 내의 양과 음의 동력의 합을 계산한다.sm1그리고sm2마지막으로, Chande의 동력 지표가 나옵니다.chandeMO이 지표는 0을 중심축으로 하며, 지표가 0보다 크면 상승력이 하강력보다 크며, 0보다 작으면 반대로 나타낸다.
Chande 동력 지표가 낮은 지점에서 구매 라인을 돌파 할 때, 가격이 하락 기간에서 벗어나 상향 단계로 들어갑니다. 이 때 전략이 구매 작업을 수행합니다. 지표가 높은 지점에서 판매 라인을 돌파 할 때 판매 작업을 수행합니다.
동적 구매 라인 및 판매 라인을 설정할 수 있으며, 또는 다른 지표 필터 신호와 결합할 수 있습니다. 또한 위험을 제어하기 위해 중지 손실을 설정해야합니다.
단일 평균 점 가로 가로 돌파 전략은 Chande 동력 지표를 통해 가격이 하락에서 평준화되고 상승하는 전환점을 판단하여 낮은 가격에서 높은 가격으로 판매 할 수 있습니다. 이 전략은 간단하고 실용적이며 추세 전환을 효과적으로 포착 할 수 있습니다. 그러나 변수 설정 및 스톱스레드 제어와 같은 측면은 잘못된 신호 및 제어 위험을 줄이기 위해 더 많은 최적화가 필요합니다.
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2)
length = input(9, minval=1)
src = input(close, "Price", type = input.source)
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
buyline= input(-80)
sellline= input(80)
hline(buyline, color=color.gray)
hline(sellline, color=color.gray)
if testPeriod()
if crossover(chandeMO, buyline)
strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd")
// strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss
if crossunder(chandeMO, sellline)
strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd")
// strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss
// remember to alert as {{strategy.order.alert_message}}