이 전략은 주식 2년 새로운 최고 가격과 이동 평균의 독특한 계산을 기반으로 합니다. 주식 가격이 2년 최고치를 달성한 후 13일 기하급수적 이동 평균으로 후퇴할 때 구매 신호를 생성합니다.
이 전략의 핵심 논리는 다음과 같은 독특한 계산에 기초합니다.
지난 2년 동안 주가가 새로운 최고치를 기록했을 때, 그것은 단기 최고치를 형성합니다. 이것은 중요한 가격 수준입니다.
가격이 이 새로운 최고치에서 물러나서 13일 지수 이동 평균으로 돌아갔을 때, 그것은 좋은 구매 기회를 제시합니다. 이것은 가격 통합 패턴을 이용합니다.
또한, 구매 신호가 발사될 때, 주가는 2년 최고치의 10% 범위 내에서, 너무 멀리 떨어져 있지 않아야 합니다. 또한 적절한 타이밍을 보장하기 위해 13일 라인 아래와 21일 라인 위에 있어야 합니다.
오픈 포지션의 경우, 가격이 21일 MA 라인 아래 5%를 넘거나 2년 최고치에서 20% 감소하면, 포지션은 수익을 확보하기 위해 중단됩니다.
이것은 장기적인 탈출 전략입니다. 다음과 같은 장점이 있습니다.
2년 동안 고가라는 특이한 점은 잠재적인 트렌드 역전 기회를 효과적으로 파악할 수 있습니다.
13일 EMA 라인은 진입 필터로 작용하여 윙사브를 피하고 더 강한 추진력을 결정합니다.
독특한 계산은 주관적 간섭을 피하는 가격 행동에 기반한 신호를 생성합니다.
합리적인 스톱 로스는 대부분의 수익을 확보할 수 있습니다.
또한 다음과 같은 몇 가지 위험이 있습니다.
시장은 깊은 마감을 경험할 수 있고, 제 시간에 멈출 수 없습니다.
밤새 큰 격차는 완벽한 스톱 손실을 막을 수 있습니다. 따라서 스톱 손실 비율은 적응을 위해 확대되어야합니다.
13일 라인은 통합을 잘 필터링하지 않을 수도 있고 과도한 잘못된 신호를 생성할 수도 있습니다. 21일 라인으로 확장하는 것을 고려할 수 있습니다.
새로운 높은 가격은 트렌드 변화를 결정하는 데 잘 작동하지 않을 수 있습니다. 다른 지표는 효과를 높이기 위해 결합 될 수 있습니다.
더 많은 최적화를 할 수 있습니다.
불필요한 포지션을 피하면서 전반적인 시장 상황을 판단하는 다른 도구를 포함합니다.
휘프사거 범위를 피하기 위해 운동량 표시기를 추가합니다.
이동 평균 매개 변수를 최적화하여 가격 패턴을 더 잘 파악합니다.
더 많은 유연성을 위해 기계 학습을 활용하여 2년 높은 매개 변수를 동적으로 최적화합니다.
요약하자면, 이것은 독특한 장기적 브레이크 아웃 전략이며, 핵심은 2년 높은 가격 수준과 13일 EMA 라인이 엔트리 필터로 작용하는 것입니다. 그것은 특정 장점을 가지고 있지만 또한 추가 연구와 탐구 가치가있는 개선의 여지가 있습니다.
/*backtest start: 2023-12-26 00:00:00 end: 2024-01-25 00:00:00 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/ // © Part Timer //This script accepts from and to date parameter for backtesting. //This script generates white arrow for each buying signal //@version=4 strategy("AMRS_LongOnly_PartTimer", overlay = true) //i_endTime = input(defval = timestamp("02 Jun 2021 15:30 +0000"), title = "End Time", type=input.time) StartYear=input(defval = 2000, title ="Start Year", type=input.integer) StartMonth=input(defval = 01, title ="Start Month", type=input.integer) StartDate=input(defval = 01, title ="Start Date", type=input.integer) endYear=input(defval = 2021, title ="End Year", type=input.integer) endMonth=input(defval = 06, title ="End Month", type=input.integer) endDate=input(defval = 03, title ="End Date", type=input.integer) ema11=ema(close,11) ema13=ema(close,13) ema21=ema(close,21) afterStartDate = true //g=bar_index==1 //ath()=> //a=0.0 //a:=g ? high : high>a[1] ? high:a[1] //a = security(syminfo.tickerid, 'M', ath(),lookahead=barmerge.lookahead_on) newHigh = (high > highest(high,504)[1]) //plot down arrows whenever it's a new high plotshape(newHigh, style=shape.triangleup, location=location.abovebar, color=color.green, size=size.tiny) b=highest(high,504)[1] VarChk=((b-ema13)/b)*100 TrigLow = (low <= ema13) and (low >= ema21) and (VarChk <= 10) plotshape(TrigLow, style=shape.triangleup, location=location.belowbar, color=color.white, size=size.tiny) ExitPrice=(ema21 - (ema21*0.05)) DrawPrice=(b - (b*0.20)) stopprice=0.0 if (close <= ExitPrice) stopprice := ExitPrice if (close <= DrawPrice) stopprice := DrawPrice if (TrigLow and afterStartDate) strategy.entry("Long", strategy.long) strategy.exit("exit","Long", stop=stopprice) //beforeEndDate = (time < i_endTime) beforeEndDate = (time >= timestamp(syminfo.timezone,endYear, endMonth, endDate, 0, 0)) if (beforeEndDate) strategy.close_all()