이 전략은 MACD 지표의 매개 변수를 최적화하고 이동 평균, 가격 액션 및 특정 거래 시간을 결합하여 높은 승률 외환 거래 전략을 달성합니다.
가격 트렌드를 판단하기 위해 3 K 라인을 사용하십시오. 마지막 3 K 라인의 종료 가격이 시작 가격보다 높으면 상승 추세로 판단됩니다. 마지막 3 K 라인의 종료 가격이 시작 가격보다 낮으면 하락 추세로 판단됩니다.
빠른 라인, 느린 라인 및 MACD 차이를 계산합니다. 빠른 라인 매개 변수는 12, 느린 라인 매개 변수는 26, 신호 라인 매개 변수는 9입니다.
거래 시간은 매일 09:00-09:15로 설정됩니다. 이 기간 내에 다음 조건이 충족되면 시장에 입력하십시오.
이윤은 0.3피프로 설정하고, 스톱 로스는 100피프로 설정됩니다.
21:00~21:15까지 모든 위치를 닫습니다.
여러 시간 프레임 지표의 조합을 사용하여 트렌드 방향을 포괄적으로 판단하고 의사 결정의 정확성을 향상시킵니다.
거래 시간을 최적화하여 높은 시장 변동성을 피하고 불필요한 스톱 로스 위험을 줄이십시오.
이윤을 최대화하고 손실 증폭을 피하기 위해 수익을 취하고 손실을 중지하기 위해 합리적인 비율을 설정하십시오.
전체적으로 이 전략은 매우 높은 승률을 가지고 있으며 자주 단기 거래에 적합합니다.
거래 시간은 상대적으로 고정되어 있고, 시장에 적시에 들어갈 수 없다면 거래 기회를 놓칠 수 있습니다.
MACD 지표는 오해의 소지가 있습니다. 명확한 상승 추세 또는 하락 추세를 결정할 수 없는 경우 조심스럽게 거래하십시오.
이윤을 취하고 손해를 멈추는 것은 불합리하게 설정되어 손익 손실 불균형을 초래할 수 있습니다. 매개 변수는 다른 제품에 따라 조정해야합니다.
전체적인 위험은 작지만 과잉으로 큰 지점이 높은
추세를 결정하기 위해 다른 지표와 결합하여 MACD의 잘못된 신호를 피하십시오. 예를 들어 볼링거 밴드, RSI 등을 결합하십시오.
백테스트 데이터에서 최적의 매개 변수를 계산하여 수익/손실 중단 비율을 최적화합니다.
전략에 적용되는 거래 품종을 확장하고 다른 제품에 대한 매개 변수 조정 효과를 평가하십시오.
기계 학습 알고리즘을 도입하여 다양한 시장 조건에 따라 최적의 매개 변수를 역동적으로 선택합니다.
전체적으로 이 전략은 초보 트레이더에게 잘 적합하다. 논리는 명확하고, 최적화 공간은 크며, 위험은 통제 가능하다. 오픈 시간을 사용자 정의하고 합리적인 이익 손실 비율을 설정함으로써 높은 수익을 얻을 수 있다. 더 이상의 최적화를 통해 매개 변수를 동적으로 조정하고 더 복잡한 시장 환경에 적응할 수 있다.
/*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/ // © exlux99 //@version=4 strategy("Very high win rate strategy", overlay=true) // fast_length =12 slow_length= 26 src = close signal_length = 9 sma_source = false sma_signal = false // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //ma len=10 srca = input(close, title="Source") out = hma(srca, len) fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true timeinrange(res, sess) => time(res, sess) != 0 // = input('0900-0915', type=input.session, title="My Defined Hours") myspecifictradingtimes = '0900-0915' exittime = '2100-2115' optionmacd=true entrytime = time(timeframe.period, myspecifictradingtimes) != 0 exit = time(timeframe.period, exittime) != 0 if(time_cond and optionmacd ) if(close > open and close[1] > open[1] and close[2] > open[2] and entrytime and crossover(hist,0)) strategy.entry("long",1) if(close< open and close[1] < open[1] and close[2] < open[2] and entrytime and crossunder(hist,0)) strategy.entry("short",0) tp = input(0.0003, title="tp") //tp = 0.0003 sl = input(1.0 , title="sl") //sl = 1.0 strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong") strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")