피보나치 수정에 기반한 양적 거래 전략


생성 날짜: 2023-11-21 15:57:11 마지막으로 수정됨: 2023-11-21 15:57:11
복사: 1 클릭수: 661
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

피보나치 수정에 기반한 양적 거래 전략

개요

이 전략은 피보나치 회귀 원칙에 기초하여 설계되었다. 가격이 상승하거나 하락하고 중요한 피보나치 회귀 위치에 가까워질 때 구매 또는 판매 작업을 수행한다. 이 전략은 피보나치 이론을 사용하여 가격 회귀의 중요한 지점을 판단하고, 트렌드 회귀 전에 적절한 입장을 취하며, 큰 폭을 초과하는 초과 수익을 얻는 것을 목표로 한다.

원칙

전략은 먼저 최근 50일간의 최고 가격과 최저 가격을 계산하여 가격 상승과 하락을 얻습니다. 그리고 피보나치의 세 가지 핵심 수준 0.236, 0.382, 0.618에 따라 가격 회수 위치를 계산합니다. 가격이 상승하고 0.618 수준 (금의 분기점) 에 가까워지면 더 많이; 가격이 떨어지고 0.236 수준에 가까워지면 평소합니다.

이 전략은 피보나치 회귀 이론에 기초한다. 피보나치 시퀀스의 임의의 숫자는 앞의 두 숫자의 비율에 약 같으며, 이 비율은 0.618에 가깝다. 피보나치 회귀 이론은 가격이 하락한 후 0.382 또는 0.618 수준에 가까워지면, 반전이 일어날 가능성이 높다고 생각한다. 이 전략은 이 법칙을 이용하여 동작 시간을 판단한다.

장점

이것은 좀 더 전형적인 교차 거래 전략이다. 그것의 가장 큰 장점은 가격 반전의 핵심점을 미리 판단할 수 있고, 트렌드 전환이 일어나기 전에 적절히 입문하는 것이다. 또한, 피보나치 이론은 기술 분석에서 널리 사용되고 있어 이 전략은 학문적 근거를 갖는다.

위험

이 전략의 주요 위험은 가격이 피포나치 회수 위치를 뚫고 계속 작동하는 데 있으며, 이로 인해 손실이 확대 될 위험이 있습니다. 또한, 경험적 판단에 기반한 거래 전략은 잘못된 판단으로 인한 손실을 완전히 피할 수 없습니다.

위험을 제어하기 위해, 손실이 어느 정도까지 확대되면 손실을 중지하고 탈퇴 할 수 있습니다. 또한 시장 상황에 따라 피보나치 회수 위치를 적절히 조정하여 거래 신호를 더 신뢰할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 동적으로 피보나치 리트레이드를 조정하여 시장의 다른 단계에 따라 다른 파라미터를 설정하여 거래를 더 유연하게 할 수 있습니다.

  2. 다른 지표와 함께 필터링을 수행하여 신호를 더 신뢰할 수 있도록합니다.

  3. 손실을 막는 전략을 최적화하고, 손실을 추적하고, 간격적으로 손실을 막는 등의 방법으로 위험을 더 잘 통제합니다.

  4. 더 긴 데이터 사이클을 테스트하여 전략의 안정성을 확인하고, 수익을 극대화하기 위해 지분 시간을 조정한다.

요약하다

이 전략은 피보나치 이론에 기초하여 가격 반전점을 판단하며, 전형적인 가로질러 거래 전략에 속한다. 특정 기술 분석 기반이 있어, 가격 반전 기회를 조기에 잡을 수 있다. 그러나 일정 확률 손실의 위험도 존재한다. 동적으로 매개 변수를 조정하고, 스톱로스를 설정하고, 필터 조건을 증가시키는 등의 방법으로 지속적으로 최적화하여, 전략을 더 안정적으로 수익성 있게 할 수 있다.

전략 소스 코드
/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("斐波那契回撤交易策略", overlay=true, initial_capital=10000)

// 参数
length = input(50, title="斐波那契周期长度")
fib1 = input(0.236, title="斐波那契水平1")
fib2 = input(0.382, title="斐波那契水平2")
fib3 = input(0.618, title="斐波那契水平3")

// 计算斐波那契水平
highLevel = ta.highest(high, length)
lowLevel = ta.lowest(low, length)
range1 = highLevel - lowLevel
fibLevel1 = highLevel - range1 * fib1
fibLevel2 = highLevel - range1 * fib2
fibLevel3 = highLevel - range1 * fib3

// 条件
longCondition = ta.crossover(close, fibLevel3)
shortCondition = ta.crossunder(close, fibLevel1)

// 下单
strategy.entry("Buy", strategy.long, when=longCondition)
strategy.close("Buy", when=shortCondition)

// 图表标记
plot(fibLevel1, title="Fib 0.236", color=color.red)
plot(fibLevel2, title="Fib 0.382", color=color.orange)
plot(fibLevel3, title="Fib 0.618", color=color.green)