K-라인을 기반으로 한 롱 브레이크아웃 전략


생성 날짜: 2024-01-05 12:37:46 마지막으로 수정됨: 2024-01-05 12:37:46
복사: 0 클릭수: 638
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

K-라인을 기반으로 한 롱 브레이크아웃 전략

개요

이 전략은 간단한 K선 형태 판단 규칙을 설정하여, 테슬라 4시간 선에 대한 긴 포지션 돌파 거래를 구현한다. 전략은 단순, 논리 명확, 이해하기 쉬운 등의 장점을 가지고 있다.

전략 원칙

전략의 핵심 판단 논리는 다음과 같은 4개의 K선 형태 규칙에 기초한다:

  1. 현재 K선 최저가격은 오픈 가격보다 낮습니다.
  2. 현재 K선 최저값은 이전 K선 최저값보다 낮습니다.
  3. 현재 K 라인 종료 가격은 오픈 가격보다 높습니다.
  4. 현재 K 라인 종료 가격은 이전 K 라인 개시 가격과 종료 가격보다 높습니다.

위의 4가지 규칙이 동시에 충족될 때, 다방향의 포지션 개설 작업을 수행한다.

또한, 전략은 정지 지점과 정지 지점을 설정하고, 가격이 정지 지점이나 정지 조건을 유발할 때, 평점 작업을 수행한다.

우위 분석

이 전략에는 다음과 같은 장점이 있습니다.

  1. K선 판단 규칙은 매우 간단하고 직설적이며, 이해하기 쉽고, 실천하기 쉽다.
  2. 가격에 대한 판단에 전적으로 기반하고, 너무 복잡한 기술 지표가 사용되지 않고, 효과를 직접 측정한다.
  3. 작은 코드량으로 구현되고, 실행 효율이 높으며, 최적화 및 개선이 용이하다.
  4. 매개 변수 조정, 자유로이 설정 스톱 손실 중지 조건, 위험 제어.

위험 분석

주의해야 할 주요 위험은 다음과 같습니다.

  1. 고정된 수치를 사용하여 포지션을 개시하고 포지션 관리를 고려하지 않고 과잉 거래의 위험이 있습니다.
  2. 필터를 설정하지 않은 경우, 너무 많은 무효 거래가 발생할 수 있습니다.
  3. 이 자료는 전략의 효과에 대한 판단을 왜곡시킬 수 있습니다.

위험은 다음과 같은 방법으로 줄일 수 있습니다.

  1. 포지션 관리 모듈에 가입하여 자금 규모에 따라 거래 수를 동적으로 조정하십시오.
  2. 트레이드 필터링 조건을 추가하여 흔들리는 디스크에서 무질서하게 포지션을 열지 않도록하십시오.
  3. 더 많은 역사적 자료를 수집하고, 재검토 기간을 늘리고, 결과의 신뢰성을 높여라.

최적화 방향

이 전략의 최적화 방향은 다음과 같습니다.

  1. 포지션 관리 모듈을 추가하고, 사용 비율에 따라 거래 규모를 결정한다.
  2. 손해 방지 추적 메커니즘을 설계하여 탄력적인 출전을 구현한다.
  3. 트랜잭션 필터 모듈을 추가하여 무효 트랜잭션을 방지하십시오.
  4. 기계 학습 방법을 사용하여 매개 변수를 자동으로 최적화하십시오.
  5. 다양한 종류의 중매 거래를 지원합니다.

요약하다

이 전략은 간단한 K선 형태 판단 규칙을 통해 다중 돌파 거래를 구현한다. 개선할 여지가 있지만, 단순성과 직관성을 고려하면 이 전략은 초보자도 이해할 수 있고 사용할 수 있는 장거리 전략이다. 계속적인 최적화를 통해 전략 효과를 더욱 우수하게 만들 수 있다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TheQuantScience

//@version=5
strategy("SimpleBarPattern_LongOnly", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.03)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date",
     defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month",
     defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year",
     defval=2017, minval=1800, maxval=2100)

endDate = input.int(title="End Date",
     defval=8, minval=1, maxval=31)
endMonth = input.int(title="End Month",
     defval=3, minval=1, maxval=12)
endYear = input.int(title="End Year",
     defval=2022, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// Falls inside the date range
inDateRange = true

// Setting Conditions 
ConditionA = low < open 
ConditionB = low < low[1]
ConditionC = close > open
ConditionD = close > open[1] and close > close[1]

FirstCondition = ConditionA and ConditionB 
SecondCondition = ConditionC and ConditionD
IsLong = FirstCondition and SecondCondition

TakeProfit_long = input(4.00)
StopLoss_long = input(4.00)
Profit = TakeProfit_long*close/100/syminfo.mintick
Loss = StopLoss_long*close/100/syminfo.mintick

EntryCondition = IsLong and inDateRange

// Trade Entry&Exit Condition 
if EntryCondition and strategy.opentrades == 0
    strategy.entry(id = 'Open_Long', direction = strategy.long)
    strategy.exit(id = "Close_Long", from_entry = 'Open_Long', profit = Profit, loss = Loss)