마지막 N 촛불 역 논리 전략

저자:차오장, 날짜: 2023-12-26 11:00:29
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 마지막 N 촛불의 색을 기준으로 길이를 결정하는 것입니다. 마지막 N 촛불이 녹색이라면 길이를 이동; 마지막 N 촛불이 빨간색이라면 짧이를 이동합니다. 독특한 부분은 원래 논리를 뒤집을 수있는 역 논리 매개 변수를 추가하는 것입니다. 역 논리 매개 변수가 사실일 때 마지막 N 녹색 촛불이 짧고 마지막 N 빨간 촛불이 길이를 이동합니다.

전략 원칙

이 전략은 주로 다음의 중요한 매개 변수들에 의존합니다.

  1. numCandlesToCheck: 확인해야 하는 촛불의 수를 지정하는 데 사용됩니다
  2. numCandlesToExit: 종료해야 하는 열기 위치 후 촛불의 수를 지정합니다
  3. 역 논리: 역 논리 매개 변수입니다. 사실 경우, 원래 긴 논리와 짧은 논리가 역전됩니다.

핵심 논리는 마지막 numCandlesToCheck 촛불을 for 루프를 통해 가로질러 연속 녹색 및 빨간 촛불을 실시간으로 세는 것입니다. 연속 빨간 촛불이 ≥numCandlesToCheck이라면 true로 lastNCandlesRed을 표시합니다. 연속 녹색 촛불이 ≥numCandlesToCheck이라면 true로 lastNCandlesGreen을 표시합니다.

lastNCandlesGreen가 true라면 long로 가면 inverseLogic가 false라면 short로 가면 안된다. 반대로 lastNCandlesRed가 true라면 short로 가면 inverseLogic가 false라면 long로 가면 안 된다.

길거나 짧은 상관없이, barsSinceEntry 카운터는 열기 위치 후에 0으로 다시 설정됩니다. barsSinceEntry가 numCandlesToExit보다 크거나 같을 때, 현재 위치가 닫힐 것입니다.

이점 분석

이 전략은 역 논리 매개 변수를 통해 결정하기 위해 촛불 색을 사용하는 흥미로운 전략으로 긴 논리와 짧은 논리를 유연하게 조정할 수 있습니다. 주요 장점은 다음과 같습니다.

  1. 이 아이디어는 새로운 것이며 시장의 일반적인 논리에 반대되는 역투자를 형성 할 수 있습니다.
  2. 코드는 명확하고 간결하며 이해하기 쉽고 수정하기 쉽습니다.
  3. 매개 변수를 조정하여 최적의 매개 변수 조합을 찾을 수 있습니다
  4. 시장 조건에 상관없이, 이 전략은 계속 실행하고 신호를 생성 할 수 있습니다

위험 분석

이 전략에는 몇 가지 위험 요소가 있습니다.

  1. 촛불 색상은 시장 상태를 완전히 표현할 수 없습니다. 잘못된 신호를 추적 할 위험이 있습니다.
  2. numCandlesToCheck의 최적 값을 결정할 수 없습니다
  3. numCandlesToExit의 최적 값을 결정할 수 없습니다.
  4. 잘못된 역 논리 매개 변수는 손실을 증폭시킬 수 있습니다.
  5. 단일 스톱 손실을 효과적으로 제어 할 수 없습니다.

이러한 위험을 해결하기 위해 다음의 통제 및 최적화 조치가 채택될 수 있습니다.

  1. 잘못된 신호를 피하기 위해 다른 필터를 증가, 예를 들어 더 높은 시간 프레임에서 트렌드를 결정
  2. 최적의 매개 변수 조합을 찾기 위해 다른 매개 변수 값을 통과
  3. 단일 손실을 제어하기 위해 스톱 손실 메커니즘을 추가
  4. 역 논리 매개 변수의 효과를 확인

최적화 방향

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

  1. 함락되는 것을 피하기 위해 주문록 상태를 높여
  2. numCandlesToCheck 및 numCandlesToExit의 값을 최적화
  3. 잘못된 신호를 필터링하기 위해 더 높은 시간 프레임에 트렌드 표시기를 추가
  4. 스톱 로스를 추가하고 이윤을 취합니다.
  5. 효능을 확인하기 위해 다른 제품에서의 역 테스트
  6. 원본 논리와 역설 논리 사이의 반환을 비교

결론

이 전략의 전반적인 아이디어는 촛불 색상 결정에 기초하여 단순히 거래 신호를 생성하여 명확하고 이해하기 쉽습니다. 매개 변수를 조정하면 다양한 시장 환경과 제품을 대상으로 최적화를위한 풍부한 조합 변형을 형성 할 수 있습니다. 또한 일부 잠재적 인 위험에주의를 기울이고 통제하기 위해 필요한 조치를 취해야합니다. 전략 콘텐츠를 지속적으로 풍부하게 함으로써이 전략은 장기 거래에 최적화를 계속하는 귀중한 전략이 될 수 있습니다.


/*backtest
start: 2022-12-25 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Last Number of  Candles", overlay=true)

// Define the condition for a green candle
isGreenCandle(candle) =>
    close[candle] > open[candle]

// Define the condition for a red candle
isRedCandle(candle) =>
    close[candle] < open[candle]

// Input to specify the number of candles to check
numCandlesToCheck = input(5, title="Number of Candles to Check")
numCandlesToExit = input(2, title="Number of Candles To Exit")  // Corrected the input title

// Initialize variables to count consecutive green and red candles
var int consecutiveGreenCandles = 0
var int consecutiveRedCandles = 0

// Initialize barsSinceEntry outside the loop
var int barsSinceEntry = 0

// Loop through the last "numCandlesToCheck" candles
for i = 0 to numCandlesToCheck - 1
    if isGreenCandle(i)
        consecutiveGreenCandles := consecutiveGreenCandles + 1
        consecutiveRedCandles := 0 // Reset the count for consecutive red candles
    else if isRedCandle(i)
        consecutiveRedCandles := consecutiveRedCandles + 1
        consecutiveGreenCandles := 0 // Reset the count for consecutive green candles

// Check if the last "numCandlesToCheck" candles are green or red
lastNCandlesGreen = consecutiveGreenCandles >= numCandlesToCheck
lastNCandlesRed = consecutiveRedCandles >= numCandlesToCheck

// Calculate the quantity based on the investment value and current asset price
investmentValue = input(10000, title="Investment Value")
var assetPrice = close
var quantity = investmentValue / assetPrice


inverseLogic = input(false, title="inverseLogic")

// Entry condition: Open a buy order if the last "numCandlesToCheck" candles are green
if lastNCandlesGreen
    if inverseLogic
        strategy.entry("Short", strategy.long, qty = quantity)
    else 
        strategy.entry("Buy", strategy.long, qty = quantity)// Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Entry condition: Open a short order if the last "numCandlesToCheck" candles are red
if lastNCandlesRed
    if inverseLogic
        strategy.entry("Buy", strategy.long, qty = quantity)

    else 
        strategy.entry("Short", strategy.short, qty = quantity)
    // Reset barsSinceEntry when entering a trade
    barsSinceEntry := 0

// Increment barsSinceEntry
barsSinceEntry := barsSinceEntry + 1

// Exit condition: Close the position after 2 bars
if barsSinceEntry >= numCandlesToExit
    strategy.close("Buy")
    strategy.close("Short")


더 많은