이 전략은 낮은 가격으로 구매하고 높은 가격으로 판매하는 시장 원칙에 기초하여 설계되었습니다. 특정 기간 동안 가장 높고 가장 낮은 가격을 추적하고, 가격이 가장 낮은 가격을 뚫고 갈 때 긴 포지션을 설정하고, 가격이 가장 높은 가격 이하로 떨어지거나 수익 조건이 충족되면 포지션을 닫습니다. 동시에이 전략은 옵션 트렌드 필터를 추가하여 가격이 상승 추세에있을 때만 구매 할 수 있습니다.
최저 가격 (lowcriteria): ta.lowest 함수를 호출하여 사용자가 설정한 뷰백 기간 동안 최저 가격을 계산하고 (전면 20 바) 최저 가격 라인을 그래프화합니다.
가장 높은 가격 (highcriteria): ta.highest 함수를 호출하여 사용자가 설정한 뷰백 기간 동안 가장 높은 가격을 계산하고 가장 높은 가격 라인을 그래프합니다.
현재 가격이 가장 낮은 가격선을 통과하면, 긴 포지션을 설정하기 위해 구매 신호가 발동됩니다.
옵션에 두 가지 출구 방법이 있습니다.
고정 취업 수익: 가격이 미리 설정된 취업 수익 수준 (예: 입시 가격보다 8% 이상) 에 도달하면 수익을 위해 포지션을 닫습니다.
가장 높은 가격의 분포: 가장 높은 가격 라인 아래로 가격이 떨어지면 트렌드 반전을 판단하여 손실을 줄이기 위해 포지션을 닫습니다.
트렌드 방향을 결정하기 위해 EMA 라인을 추가하십시오. 가격이 EMA 라인 (상승 추세) 이상일 때만 구매를 허용하십시오. 이 필터는 활성화 또는 비활성화 될 수 있습니다.
낮은 가격에 구매하고 높은 가격에 판매하는 고전적인 전략을 채택하고, 시장의 기본 요소에 맞추어
가격 변동 중 빈번한 오픈을 피하기 위해 트렌드 판단을 추가합니다.
높은 수익을 추구하거나 손실을 줄이기 위해 두 가지 출구 옵션을 제공하십시오.
사용자 정의 가능한 매개 변수는 더 많은 시장 환경에 적응합니다.
매개 변수 조정, 필터 디자인 등을 통해 전략 최적화를 위한 방안이 많습니다.
고정된 영업이익 수준은 실제 시장 움직임에 따라 조정되지 않아 조기 영업이익 또는 충분한 영업이익 목표가 발생하지 않습니다.
가장 높은 가격으로 판매하면 이미 막대한 손실을 초래할 수 있고 손실을 효과적으로 통제할 수 없습니다.
EMA의 추세 판단은 특정 기간만 거슬러 올라가며 실제 추세 변화보다 뒤떨어질 수도 있습니다.
백테스트 결과는 미래를 나타낼 수 없습니다. 라이브 공연은 불확실성이 있습니다.
이윤을 취득하는 방법을 추가하십시오. 후속 정지, 부분 출구 등으로 이윤을 취득하는 수준을 동적으로 조정합니다.
출구 신호를 최적화하십시오. 예를 들어 부분 출구, 다른 지표를 추가하십시오.
더 많은 지표나 머신러닝을 적용함으로써 트렌드 판단을 향상시킵니다.
최적의 세트를 찾기 위해 더 광범위한 백테스트를 통해 매개 변수를 최적화합니다.
손실을 더 잘 조절하기 위해 스톱 로스 방법을 추가합니다.
이 전략은 일반적으로 고전적 인 낮은 구매 높은 판매 원칙을 적용하고 특정 조건 하에 잘 수행 할 수 있습니다. 그러나 여전히 매개 변수 조정, 출구 최적화, 스톱 로스 메커니즘 등을 통해 개선 할 여지가 있습니다. 이 기사는 전략의 논리, 장단점 및 최적화 방향에 대한 심도있는 분석을 제공하며 전략 아이디어를 공유하고 투자자들에게 위험을 상기시키고 양적 전략으로 신중하게 거래하는 것을 목표로합니다.
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 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/ // @version=5 // Author = TradeAutomation strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110) // Backtest Date Range Inputs // StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time') EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time') InDateRange = true // Strategy Calculations // lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1] highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1] plot(highcriteria, color=color.green) plot(lowcriteria, color=color.red) // Take Profit // TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?") TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25)))) // Operational Functions // TrendFilterInput = input(true, "Only buy when price is above EMA trend?") ema = ta.ema(close, input(200, "EMA Length")) TrendisLong = (close>ema) plot(ema) // Entry & Exit Functions// if (InDateRange and TrendFilterInput==true) strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong) if (InDateRange and TrendFilterInput==false) strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria)) if (InDateRange and TakeProfitInput==true) strategy.close("Long", when = TakeProfit) if (InDateRange and TakeProfitInput==false) strategy.close("Long", when = ta.crossunder(close, highcriteria)) if (not InDateRange) strategy.close_all()