중간선을 기반으로 한 간달프 양적 거래 전략


생성 날짜: 2023-10-30 10:27:40 마지막으로 수정됨: 2023-10-30 10:33:17
복사: 0 클릭수: 482
1
집중하다
1166
수행원

중간선을 기반으로 한 간달프 양적 거래 전략

개요

간달프 양적 거래 전략 (Gandalf Quantitative Trading Strategy) 은 중도선을 기반으로 한 트렌드 추적 전략이다. 중도값, 중도선 및 실물 중간 가격을 계산하여 현재 트렌드 방향을 판단하여 유리한 진입점을 찾는다. 트렌드 반전이 감지되면 신속한 손실로 탈퇴한다. 이 전략은 트렌드 추적과 트렌드 반전의 전략 아이디어를 결합한다.

전략 원칙

Gandalf 전략의 핵심 논리는 무게중심 평균, 중도선 및 실물 중도 가격의 크기와 관계를 비교하여 현재 트렌드의 방향과 강도를 판단하는 것이다.

특히, 다음의 가격으로 계산합니다.

  • 가중 평균 가격: ((최고 가격 + 최저 가격 + 종전 가격 + 종전 가격) / 4
  • 중간값: (최고 가격 + 최저 가격) / 2
  • 실물 중간 가격: (개점 가격 + 폐점 가격) / 2

입시시에는, K선 앞의 두 개의 가중치 평균값, 중도선 및 실물 중간값의 크기의 관계를 비교하여 트렌드 시작 특성에 맞는지 판단한다.

예를 들어, 중화평균이 중도선보다 낮고, 실물 중간값이 중화평균보다 낮다면, 가격이 떨어지고 있다는 것을 나타냅니다. 이는 코스피를 할인하는 기회입니다.

스톱로드 탈퇴시, 이 가격의 크기와 크기를 비교하여 트렌드 반전의 징후를 판단한다. 중도값이 실물 중간값보다 높고 중도값이 중도값보다 낮다면, 트렌드 반전이 있음을 나타낸다면, 즉시 스톱로드를 해야 한다.

가격의 크기와 크기의 관계를 비교하는 이 방법을 통해 Gandalf 전략은 트렌드를 판단하고 추적할 수 있다. 그것은 더 좋은 입시 시기를 찾을 수 있고, 트렌드 반전을 빠르게 감지하여 손실을 막을 수 있다.

전략적 이점

간달프의 전략은 다음과 같은 장점이 있습니다.

  1. 중도선을 사용하여 트렌드 방향을 판단하여 시장 소음을 효과적으로 필터링하여 주요 트렌드를 잠금 할 수 있습니다.

  2. 입시 조건은 다양한 가격 비교와 결합하여 트렌드 시작을 더 확실하게 판단할 수 있습니다.

  3. 스톱 손실 조건은 또한 가격 비교를 사용하여 트렌드 반전을 판단하여 신속하게 손실을 멈추고 위험을 제어 할 수 있습니다.

  4. 조건부 단독으로, 이상적인 가격 근처에서 입장할 수 있다.

  5. 미리 설정할 수 있는 정지 횟수와 지분 상한, 수익을 잠금하고 단일 거래 위험을 제어할 수 있다.

  6. 코드 구조는 명확하고 간단하며, 이해하기 쉽고 수정하기 쉽습니다.

  7. 개인 리스크 선호도에 맞게 변수를 조정할 수 있으며, 최적화하기 쉽다.

  8. 트렌드 품종에 적용되며, 트렌드 추축 수익을 얻을 수 있다.

전체적으로, Gandalf 전략은 중도선을 사용하여 추세를 판단하고, 스톱 스톱 손실 조건을 설정하여 위험 추적 추세를 효과적으로 제어 할 수 있습니다.

전략적 위험

칸달프의 전략에는 위험도 있지만 주의해야 합니다.

  1. 트렌드 추적 전략으로, 트렌드가 보이지 않거나 반전이 자주 발생하면 더 적은 손실이 발생한다.

  2. 이 경우, 수익률이 증가할 가능성이 높기 때문에 트렌드 전환점을 효과적으로 판단할 수 없습니다.

  3. “이런 일이 벌어진다면, 우리는 더 나은 삶을 살 수 있을 것이다.

  4. 파라미터 설정에 따라, 다른 품종에는 파라미터 조정이 필요합니다.

  5. 하지만, 이 경우, 이 거래소에서 수익을 창출할 수 없는 것은 단독으로 거래하는 것이다.

  6. 조건 단독 실패율이 높고, 입학 대기 시간이 길어질 수 있다.

대응 위험 관리 조치:

  1. 소규모 포지션을 사용해서 단독 손실을 조절하는 방법

  2. 스톱 라인을 설정하고, 빠른 스톱을 사용하거나, 모바일 스톱을 사용하여 스톱 위치를 추적한다.

  3. 최적화 매개 변수, 현재 품종에 적합하도록 조정한다. 다른 지표로 추세를 판단할 수 있다.

  4. 마틴겔 재배치 방식을 적용하여 비용을 절감할 수 있다.

  5. 트레이딩은 명백한 트렌드가 있는 품종이며, 수익은 신뢰도가 높다.

  6. 입학 조건의 적절한 완화, 입학 확률을 고려한다.

전략 최적화 방향

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

  1. 트렌드 판단 지표를 구성하고, 트렌드 반전의 시간을 보조 판단한다. 예를 들어 MACD, 브린 띠 등에 가입하는 판단한다.

  2. 분리 최적화 기능을 추가하여 자동으로 최적화 파라미터를 추가하여 더 많은 품종에 적합합니다.

  3. 기계 학습 알고리즘을 추가하고, 트렌드를 판단하기 위해 신경 네트워크 또는 SVM 모델을 역사 데이터 훈련합니다.

  4. 이동식 스톱, 지수 이동식 스톱 등의 스톱 방법을 추가하십시오.

  5. 관련 상품과 결합하여 가격차별절차 또는 통계절차를 수행한다.

  6. 마르코프 모형에 기반한 상태 예측을 추가하여 현황을 판단한다.

  7. 복합적인 전략을 구축하고, 일차적인 전략과 결합하여 다중 전략 관리를 구현한다.

  8. 거래 전략 포트폴리오 최적화를 탐색하여 포트폴리오의 무게를 찾습니다.

종합적으로, Gandalf 전략은 트렌드 판단, 자동 최적화, 위험 관리와 같은 여러 차원에서 확장 및 최적화 될 수 있으며, 전략이 더 안정적이고 신뢰할 수 있습니다.

요약하다

달프 양적 전략은 가격 비교를 기반으로 추세를 판단하는 간단한 효과적인 전략이다. 그것은 트렌드 추적과 빠른 상쇄의 생각을 결합하여 위험을 효과적으로 제어할 수 있다. 이 전략의 논리는 명확하고 이해하기 쉽고, 개인 위험 선호에 따라 파라미터를 조정할 수 있다. 그러나 그것은 또한 수익의 변동과 포지션의 위험이 있으며, 적절한 최적화 관리가 필요합니다.

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

//@version=3

// The GandalfProjectResearchSystem strategy, as discussed in
// “System Development Using Artificial Intelligence”
// by Domenico D’Errico and Giovanni Trombetta
strategy("Gandalf Project Research System", overlay=true)

// Inputs
Quantity = input(0, title="Quantity (0 to auto calc)")
Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade")
MaxProfitCloses = input(6, minval=1, title="Max Profit Close")
MaxBars = input(8, minval=1, title="Max Total Bars")
Enter_Gap = input(-0.08, title="Distance from low price to place entry limit")
AltExit = input(true, title="Use Alt Exit")

// Calculate Order Quantity
Ncon = Single_Trade_Money / close

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
MedBodyPrice = (open + close) / 2.0
Weighted = (high + low + close + close) / 4.0
Median = (high + low) / 2.0

// Enter Conditions
Cond00 = strategy.position_size == 0
Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2]))
Entry01 = Cond00 and Cond01

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Exit Conditions
eCond01 = BarsSinceEntry - 1 >= MaxBars
eCond02 = MaxProfitCount >= MaxProfitCloses
eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]))
eCond04 = AltExit ? true : close - strategy.position_avg_price < 0
Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04))

// Entries
strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01)
 
// Exits
strategy.close("L1", Exit01)