
양평선 교차 전략은 매우 고전적이고 일반적으로 사용되는 기술적 분석 전략이다. 이 전략은 빠른 이동 평균과 느린 이동 평균의 교차를 구매 및 판매 신호로 사용합니다. 빠른 이동 평균이 하향에서 느린 이동 평균을 돌파 할 때 구매 신호를 생성하고 빠른 이동 평균이 상향에서 느린 이동 평균을 돌파 할 때 판매 신호를 생성합니다.
이 전략의 코드는 주로 다음과 같은 부분들로 구성됩니다.
급속도 평균의 길이와 유형을 정의합니다. 급속도 평균의 길이는 5주기이고, 느린 평균의 길이는 21주기이며, 모두 간단한 이동 평균을 사용합니다.
빠른 선과 느린 선을 계산한다: sma 함수를 통해 5주기 및 21주기 간단한 이동 평균을 계산한다.
그림: 빠른 선과 느린 선의 흐름을 그리는 그림.
구매 및 판매 조건의 정의: 빠른 선에서 느린 선을 통과할 때 구매, 빠른 선 아래 느린 선을 통과할 때 판매.
거래 실행: 전략의 long 및 short 함수가 조건이 충족되면 자동으로 구매 및 판매 작업을 수행한다.
이 전략의 핵심은 서로 다른 길이의 주기의 평행선 조합을 사용하여 빠르고 느린 평행선을 형성하고 그 교차를 거래 신호로 사용한다. 빠른 선은 가격 변화를 더 빨리 포착할 수 있고 느린 선은 장기적인 추세를 더 잘 반영한다. 빠른 선에서 느린 선을 통과하면, 아래에서 위쪽으로 반전하는 것을 나타내는 구매 신호이며, 빠른 선 아래에서 느린 선을 통과하면, 위에서 아래로 반전하는 것을 나타내는 판매 신호이다. 이 전략의 원리는 간단하고 명확하며 쉽게 구현된다.
양평선 교차 전략은 다음과 같은 장점이 있다:
원리는 간단하고, 배우기 쉽고, 초보자에게 적합하다.
순조로 운영, 가격 추세를 따라, 회수 작다.
거래 빈도가 적고, 너무 자주 거래하지 않습니다.
사용자 정의 가능한 매개 변수, 시장 변화에 대한 유연성.
최적화를 통해 자신에게 맞는 파라미터 조합을 쉽게 찾을 수 있다.
스톱포인트를 설정하여 위험을 조절할 수 있습니다.
다양한 시장에서 사용할 수 있고, 적용성이 뛰어나다.
다른 지표 조합과 함께 사용할 수 있습니다.
이 두개의 평행선 교차 전략에는 몇 가지 위험도 있습니다.
시장 추세가 강할 때, 평균선은 추세에 따라 지연되며, 지연 현상이 발생할 수 있으며, 최적의 진입 시기를 놓칠 수 있다. 평균선 주기를 적절히 단축하여 민감성을 높일 수 있다.
위기상황에서는 가짜 신호가 더 많이 나타날 수 있다. 필터링 조건을 적절히 높여서 잘못된 거래를 방지할 수 있다.
거래 횟수가 많을 수도 있고, 수익에 영향을 미칠 수도 있다. 평균선 간격을 적절히 완화하여 교차를 줄일 수 있다.
트렌드 유형을 판단할 수 없는 경우, 역전 거래의 위험이 있다. 트렌드 지표 판단을 보조할 수 있다.
매개 변수 최적화에는 일정한 역사 데이터의 지원이 필요하며, 새로운 품종에는 과합이 존재할 수 있다. 여러 가지 조합으로 매개 변수 튼튼성을 테스트한다.
단일 지표는 외부 환경의 영향을 받기 쉽고, 성능이 불안정할 수 있다. 다른 지표와 결합하여 검증할 수 있다.
양평선 교차 전략은 다음과 같은 측면에서 최적화될 수 있다:
다양한 길이의 속속평균선을 테스트하여 특정 거래 품종에 적합한 최적의 매개 변수를 찾습니다.
거래량, ATR 정지 등과 같은 필터 조건을 추가하여 우수한 기회를 줄일 수 있습니다.
동량 지표와 같은 확인 거래 신호를 결합하여 가짜 돌파구를 피하십시오.
손실을 막는 전략을 최적화하여 손실의 일부를 너무 일찍 또는 너무 늦게 퇴출하지 않도록하십시오.
트렌드 및 파동 지표와 결합하여 트렌드 추적 및 역동 거래.
적응형 평균선을 적용하여 고정된 주기보다는 시장에 따라 평균선 변수를 조정한다.
다중 시간대 조합이 적용되며, 시장 시간 특성에 따라 다른 파라미터 조합을 채택한다.
실시간 최적화, 기계 학습 등의 기술을 활용하여 지속적인 최적화 매개 변수
쌍평선 교차 전략은 원칙이 간단하고, 이해하기 쉽고, 실행되는 특징으로, 기술 분석에서 가장 핵심적이고 일반적으로 사용되는 거래 전략 중 하나입니다. 이 전략은 가격 추세에 부응하고, 회수 가능하며, 위험도 허용됩니다. 그러나 최적화 할 수있는 공간도 넓습니다.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// strategy("Stochastic Strategy of BiznesFilosof", shorttitle="SS of BiznesFilosof", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.15, pyramiding=0)
//Period
startY = input(title="Start Year", defval = 2011)
startM = input(title="Start Month", defval = 1, minval = 1, maxval = 12)
startD = input(title="Start Day", defval = 1, minval = 1, maxval = 31)
finishY = input(title="Finish Year", defval = 2050)
finishM = input(title="Finish Month", defval = 12, minval = 1, maxval = 12)
finishD = input(title="Finish Day", defval = 31, minval = 1, maxval = 31)
//finish = input(2019, 02, 28, 00, 00)
timestart = timestamp(startY, startM, startD, 00, 00)
timefinish = timestamp(finishY, finishM, finishD, 23, 59)
window = true // Lenghth strategy
length1 = input(21, minval=1), smoothK1 = input(3, minval=1), smoothD1 = input(3, minval=1)
//length2 = input(5, minval=1), smoothK2 = input(1, minval=1), smoothD2 = input(1, minval=1)
inh0 = input(title="Bottom Line", defval = 14, minval=0), inh1 = input(title="Upper Line", defval = 86, minval=0)
k1 = sma(stoch(close, high, low, length1), smoothK1)
d1 = sma(k1, smoothD1)
plot(k1, color=blue)
plot(d1, color=red)
//k2 = sma(stoch(close, high, low, length2), smoothK2)
//d2 = sma(k2, smoothD2)
//plot(k2, color=orange)
h1 = hline(inh1)
h0 = hline(inh0)
fill(h0, h1, color = aqua, transp=90)
//open
strategy.entry("LongEntryID", strategy.long, comment="LONG", when = crossover(k1, d1) and crossover(k1, inh0) and window)
strategy.entry("ShortEntryID", strategy.short, comment="SHORT", when = crossunder(k1, d1) and crossunder(k1, inh1) and window)
if crossunder(k1, d1) and crossunder(k1, inh1) and strategy.position_size > 0
strategy.close_all()
if crossover(k1, d1) and crossover(k1, inh0) and strategy.position_size < 0
strategy.close_all()