
쌍평평선 골드 크로스 알고리즘은 빠른 선과 느린 선의 교차 상황을 계산하여 매매 시기를 판단한다. 빠른 선은 8일 지수 이동 평균을 사용하고 느린 선은 최근 8일 최저 가격의 지수 이동 평균을 사용합니다. 빠른 선이 아래에서 느린 선을 통과하면 구매 신호를 생성하고 빠른 선이 위에서 느린 선을 통과하면 판매 신호를 생성한다.
이 전략의 핵심 원칙은: 빠른 선은 최근 가격 변화의 경향을 나타내고, 느린 선은 최근 낮은 가격 수준을 나타낸다. 빠른 선에서 느린 선을 통과하면 가격이 상승하기 시작하여 최근 낮은 가격을 초과하여 구매 신호를 발생시킨다. 빠른 선 아래에서 느린 선을 통과하면 가격이 하락하기 시작하여 최근 낮은 가격보다 낮아 판매 신호를 발생시킨다.
구체적으로, 전략은 8일 지수 이동 평균을 빠른 선으로 계산하고, 최근 8일 최저 가격의 지수 이동 평균을 느린 선으로 계산한다. 그리고 가격과 빠른 선의 차이를 계산하고, 차이의 변화 경향을 판단한다. 차이는 긍정적으로 변하기 시작하면 가격이 상승하기 시작한다는 것을 나타냅니다. 차이는 부정적으로 변하기 시작하면 가격이 하락하기 시작한다는 것을 나타냅니다. 차이는 0을 통과하면 구매 신호를 생성하고, 차이는 0을 통과하면 판매 신호를 생성합니다.
쌍평평선 골드 크로스 알고리즘의 가장 큰 장점은 전략이 간단하고 이해하기 쉽고 구현된다는 것입니다. 빠른 속도로 평평선을 교차하여 매매 시기를 판단하는 것은 기술 분석에서 비교적 성숙하고 일반적으로 사용되는 방법입니다. 이 전략은 이 성숙한 방법을 사용하면서도 더 신뢰할 수 있는 거래 신호를 생성하기 위해 빠른 선과 느린 선의 교차 조합을 사용하여 개선되었습니다. 이 조합 방법은 잘못된 신호를 방지하고 신호 품질을 향상시키는 데 어느 정도 효과가 있습니다.
또한, 이 전략은 손실 메커니즘을 추가한다. 가격이 20% 이상 상승하면, 해당 포지션의 손실 지점은 입시 가격의 1.2배로 설정된다. 이것은 대부분의 이익을 잠금하고 손실을 방지할 수 있다. 동시에 전략의 수익률을 보장한다.
쌍평선 골드 크로스 알고리즘에도 약간의 위험이 있습니다. 이 전략은 가격과 이동 평균의 관계를 기반으로만 거래 시기를 결정합니다. 가격이 비정상적인 변동이 발생하고 이동 평균이 적시에 반응하지 않으면 잘못된 거래 신호가 발생할 수 있습니다. 이 때 가격 상황을 수동으로 검사하여 신호를 맹목적으로 따르는 손실을 방지해야합니다.
또한, 입시 가격의 1.2배로 설정된 스톱드 메커니즘은 너무 보수적이어서 전체 시장을 유지할 수 없습니다. 가격이 계속 상승하면 스톱드를 설정하면 너무 일찍 중단되어 더 큰 수익을 얻지 못할 수 있습니다. 이에 대해 다른 파라미터를 테스트하여 더 적합한 스톱드 위치를 찾아야합니다.
이 전략에는 추가적으로 최적화 할 여지가 있습니다. 첫째, 다른 파라미터를 테스트하여 이동 평균의 주기적 파라미터를 최적화하여 신호 품질에 가장 적합한 파라미터 조합을 찾을 수 있습니다. 둘째, 변동률 지표 등을 추가하여 가격 변동 기간에 잘못된 신호를 생성하는 것을 피할 수 있습니다. 셋째, 기계 학습 방법을 사용하여 자동으로 중지 위치를 최적화 할 수 있습니다. 넷째, 같은 종류의 자산 간의 정보를 추가하여 포트폴리오 거래 시스템을 구축하여 신호의 신뢰성을 높일 수 있습니다.
쌍평선 골드 크로스 알고리즘은 전체적으로 매우 실용적인 정량 거래 전략이다. 그것은 평선 크로스의 성숙한 기술 분석 방법을 사용하여 거래 신호를 생성하고, 동시에 파라미터와 규칙의 개선 최적화를 수행한다. 이 전략 신호는 간단하고 명확하며, 이해하기 쉽습니다.
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "Estratégia de Cruzamento das Linhas")
// Configuração da Média Móvel
emaPeriod = 8
ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)
// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA
//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0
gain = strategy.position_avg_price*(1+0.2)
// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) and diffZero
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)
// Executa as operações de compra/venda
if buy_signal
strategy.entry("Buy", strategy.long)
if sell_signal
strategy.exit("Buy", limit = gain)
// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)
plot(diffLow, title="Diferença", color=color.red, linewidth=2)