사이클 포지션 트렌드 다음 전략 (Cycle Position Trend Following Strategy) 은 200일 간 간단한 이동 평균 (SMA) 을 기반으로 트렌드 방향을 결정하는 양적 거래 전략이다. 트레이더들이 선호도에 따라 선택할 수 있는 두 가지 모드 -
이 전략의 핵심 지표는 200일 SMA입니다. 전략에는 두 가지 모드가 있습니다.
업트렌드 모드를 따르십시오. 클로즈가 200일 SMA 이상이면 긴 지점을 취합니다. 스톱 로스 또는 영업이 발생하면 클로즈 포지션을 취합니다.
다운트렌드 모드를 따르십시오: 클로즈가 200일 SMA 이하일 때 긴 지점을 취합니다.
긴 조건은longCondition
클로즈 가격과 200일 SMA의 관계에 기반한 변수. 클로즈 조건은closeCondition
스톱 로즈, 이윤 취득 및 SMA를 기반으로 하는 변수입니다.
구체적으로,strategy.entry
긴 조건이 충족되면 긴 포지션을 열기 위해 사용됩니다.strategy.exit
클로즈 조건이 트리거되면 포지션을 닫는 데 사용됩니다.
이 전략의 장점은 다음과 같습니다.
단순하고 명확한 논리, 이해하기 쉬운 논리
다른 시장 환경에 맞게 두 가지 선택적인 모드를 제공합니다.
사용자 정의 가능한 스톱 로스 및 리프트 취득은 리스크/리워드 프로파일을 조정할 수 있습니다.
트렌드 방향을 결정하기 위해 잘 알려진 200일 SMA 지표를 사용합니다.
수동 개입 없이 자동 거래 신호를 생성합니다.
이 전략의 위험은 다음과 같습니다.
하나의 지표에 지나치게 의존하고, 잘못된 신호에 취약합니다. MACD, KDJ 같은 다른 지표를 추가하여 확인하는 것이 도움이 될 수 있습니다.
스톱 손실 및 수익 수준을 너무 좁히거나 너무 넓게 사용하면 조기 스톱 아웃 또는 이상적인 출구 지점을 놓칠 수 있습니다. 매개 변수는 적절한 테스트와 최적화가 필요합니다.
시그널에 대한 클로즈 가격 사용은 클로즈 가격 편차를 가지고 있습니다. 촛불체를 사용하거나 신호 확인을 추가하는 것을 고려하십시오.
거래 비용을 고려하지 않습니다. 라이브가 될 때 비용을 예약해야 합니다.
전략을 개선할 수 있는 몇 가지 방법:
신호를 확인하고 잘못된 신호를 피하기 위해 다른 지표를 추가하십시오. 예를 들어 MACD.
역 테스트를 통해 최적의 조합을 찾기 위해 스톱 손실 및 수익 매개 변수를 최적화하십시오.
트렌드 필터를 추가하여 ADX와 같이 잘 정의된 트렌드에만 거래합니다.
촛불 몸체를 고려하거나 확인을 추가하여 입력 방법을 개선하십시오.
신호 신뢰성을 확인하기 위해 거래량을 고려하십시오.
최적의 매개 변수를 찾기 위해 다른 SMA 기간을 테스트합니다.
결론적으로, 전략은 실용적인 가치와 함께 명확하고 이해하기 쉬운 논리를 가지고 있습니다. 그러나 단일 지표에 의존하는 것은 한계가 있습니다. 확인을 위해 더 많은 조건을 추가해야합니다. 또한 더 나은 라이브 성능을 위해 매개 변수 테스트 및 최적화가 필요합니다. 또한 슬리퍼 및 수수료와 같은 거래 비용은 라이브 거래에서 고려해야합니다.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h 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/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)