저자:차오장, 날짜: 2024-01-23 11:18:57
태그:

img

전반적인 설명

전략 논리

특히, 전략은 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)

더 많은