이 알고리즘은 가격 동작에 따라 금을 거래합니다. 최근 20개의 촛불의 가장 높고 가장 낮은 가격을 계산하여 가격 변동 범위를 결정합니다. 가격이 최신 촛불의 가장 높은 가격을 깨고 가격이 최신 촛불의 가장 낮은 가격을 깨면 짧게됩니다. 긴 또는 짧은 포지션을 열면 수익을 취하고 손실을 중지합니다.
이 알고리즘의 핵심 논리는 브레이크아웃 이론에 기초한다. 가격 변동 범위를 결정하기 위해 가장 최근의 20 개의 촛불의 가장 높고 낮은 가격을 기록한다. 가격이 이 범위를 초과하면 브레이크아웃으로 간주되며 따라서 거래 신호가 발생한다. 구체적으로 알고리즘 흐름은:
보시다시피, 이 알고리즘의 거래 신호는 가격 파업 판단에서 나옵니다. 핵심은 가격 파업의 시기를 파악하는 것입니다.
이 알고리즘은 다음과 같은 장점을 가지고 있습니다.
일반적으로,이 알고리즘의 핵심 아이디어는 명확하고 논리적입니다. 그것은 구현하기 쉽고 입력 시기를 이해하기 쉽습니다. 그것은 또한 단일 거래 손실을 제어 할 수 있습니다. 따라서 강력한 실용성을 가진 양적 거래 전략입니다.
이 알고리즘은 또한 몇 가지 위험을 가지고 있습니다.
이러한 위험을 통제하고 최적화하기 위해 다음과 같은 조치를 취할 수 있습니다.
알고리즘은 다음과 같은 측면에서 최적화 될 수 있습니다.
다른 지표와 결합이동 평균, 볼링거 밴드 등은 브레이크 아웃 신호를 두 번 확인하고 신뢰성을 높이기 위해 도입 될 수 있습니다.
매개 변수 최적화. 다른 매개 변수 조합을 테스트하여 브레이크아웃 기간 길이를 최적화하고 더 신뢰할 수있는 매개 변수 설정을 찾을 수 있습니다.
수익을 취하고 손실을 중지 최적화. 동적으로 변동성 등을 기반으로 수익을 취하고 손실을 중지 거리를 조정합니다.
위치 크기 최적화. 단일 거래 손실 영향을 줄이기 위해 포지션 사이징 알고리즘을 최적화.
기계 학습. 더 나은 매개 변수 조합을 자동으로 찾기 위해 역사적인 데이터의 많은 양의 학습.
위의 최적화는 알고리즘의 안정성, 승률 및 수익성을 더욱 향상시킬 수 있습니다.
금 거래 알고리즘은 가격 액션과 브레이크아웃 이론을 기반으로 거래 신호를 생성합니다. 아이디어는 간단하고 명확하고 구현하기 쉽고 매우 실용적입니다. 한편, 그것은 또한 몇 가지 위험을 가지고 있으며 안정성과 수익성을 향상시키기 위해 추가 최적화가 필요합니다. 전반적으로, 그것은 금 거래와 효율적인 양적 전략에 적합합니다. 다른 지표, 매개 변수 최적화, 수익 / 중지 손실 최적화 등을 결합하여 더 나은 전략 성능을 달성 할 수 있습니다.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("XAUUSD Price Action Strategy", overlay=true) // Define input parameters takeProfit = input(500, "Take Profit") stopLoss = input(200, "Stop Loss") // Calculate price action highs = ta.highest(high, 20) lows = ta.lowest(low, 20) priceRange = highs - lows breakoutLevel = highs[1] // Define conditions for long and short trades longCondition = high > breakoutLevel and close > highs[1] shortCondition = low < breakoutLevel and close < lows[1] // Execute long and short trades with take profit and stop loss if longCondition strategy.entry("Long", strategy.long) strategy.exit("Long Exit", "Long", limit = close + takeProfit, stop = close - stopLoss) if shortCondition strategy.entry("Short", strategy.short) strategy.exit("Short Exit", "Short", limit = close - takeProfit, stop = close + stopLoss) // Plot breakout level plot(breakoutLevel, color=color.blue, title="Breakout Level") // Highlight long and short trade signals on the chart bgcolor(longCondition ? color.green : na, transp=80) bgcolor(shortCondition ? color.red : na, transp=80)