이 전략은 트렌드를 추적하기 위해 여러 시간 프레임에 걸쳐 지표의 동의를 활용합니다. 일일, 10 일, 15 일 및 30 일 시간 프레임이 동시다발적으로 동적 스톱 손실과 함께 상승 또는 하락 신호를 제공 할 때 길거나 짧습니다.
이 전략은 네 가지 시간 프레임 - 일일, 10 일, 15 일 및 30 일 - 을 사용하여 트렌드 방향을 판단합니다. 네 가지 시간 프레임에서 종료 가격이 개시 가격보다 높을 때 상승 신호를 나타냅니다. 네 가지 시간 프레임에서 종료 가격이 개시 가격보다 낮을 때 하락 신호를 나타냅니다.
시그널이 상승하면 길게, 시그널이 하락하면 짧게, KC 채널은 동적 스톱 로스를 위해 사용됩니다.
특히, 전략은 트렌드 방향을 결정하기 위해 다른 시간 프레임에서 개시 가격과 종료 가격을 비교합니다. 종료 가격이 개시 가격보다 높으면 시간 프레임은 상승으로 간주되고 녹색으로 표시됩니다. 종료 가격이 개시 가격보다 낮다면 시간 프레임은 하락으로 간주되고 빨간색으로 표시됩니다.
모든 네 시간 프레임이 상승 신호에 동의 할 때 전략은 긴 포지션을 열 것입니다. 모든 네 시간 프레임이 하락 신호에 동의 할 때 전략은 짧은 포지션을 열 것입니다. 스톱 로스를 치거나 트렌드가 역전되면 종료됩니다.
트렌드를 확인하기 위해 여러 시간 프레임을 사용하면 잘못된 브레이크오프를 효과적으로 필터하고 트렌드 방향을 결정할 수 있습니다.
동적 스톱 로즈는 자본 보호를 극대화할 수 있습니다.
엄격한 진입 기준은 불필요한 거래와 미끄러진 비용을 줄입니다.
여러 시간 프레임을 결합하면 수익 속도와 안정성을 균형 잡습니다.
입학 기준이 너무 엄격해서 기회를 놓칠 수도 있습니다.
잘못된 스톱 로스 설정은 너무 공격적이거나 보수적일 수 있습니다.
부적절한 시간 프레임 선택은 장기 또는 단기 트렌드와 일치하지 않을 수 있습니다.
사건의 갑작스러운 역행은 스톱 로스를 유발하지 않을 수 있습니다.
수익 속도와 안정성을 균형을 맞추기 위해 시간 프레임 선택을 최적화하십시오.
다른 매개 변수 설정을 테스트하여 스톱 손실 수준을 최적화합니다.
역전점을 판단하는 데 도움이 되는 기계 학습 알고리즘을 추가합니다.
급격한 변동으로 인한 손실을 피하기 위해 중요한 이벤트를 모니터링하십시오.
이 전략은 엄격한 입시 기준과 역동적 인 정지를 통해 여러 시간 프레임에 걸쳐 판단을 통합하여 안정적인 수익을 목표로합니다. 놓친 기회와 부적절한 위험 통제의 위험이 있습니다. 다음 단계는 더 높은 안정성을위한 매개 변수를 계속 최적화하는 것입니다.
/*backtest start: 2024-01-19 00:00:00 end: 2024-02-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("[RichG] Easy MTF Strategy v1.1", overlay=false) TF_1_time = input("D", "Timeframe 1") TF_2_time = input("10D", "Timeframe 2") TF_3_time = input("15D", "Timeframe 3") TF_4_time = input("30D", "Timeframe 4") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") lengthBB=input(20, title="BB Length") transaction_size = input(1, "Contract/Share Amount") src = close, len = 20 out = sma(src, len) width = 5 upcolor = green downcolor = red neutralcolor = blue linestyle = line kc() => ma = sma(close, lengthKC) range = tr rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC [lowerKC, upperKC] bb() => source = close basis = sma(source, lengthBB) dev = multKC * stdev(source, lengthBB) upperBB = basis + dev lowerBB = basis - dev [upperBB, lowerBB] TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false TF_1_color = TF_1 ? upcolor:downcolor TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false TF_2_color = TF_2 ? upcolor:downcolor TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false TF_3_color = TF_3 ? upcolor:downcolor TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false TF_4_color = TF_4 ? upcolor:downcolor TF_global = TF_1 and TF_2 and TF_3 and TF_4 TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false TF_global_color = TF_global ? green : TF_global_bear ? red : white TF_trigger_width = TF_global ? 6 : width plot(1, style=linestyle, linewidth=width, color=TF_1_color) plot(5, style=linestyle, linewidth=width, color=TF_2_color) plot(10, style=linestyle, linewidth=width, color=TF_3_color) plot(15, style=linestyle, linewidth=width, color=TF_4_color) plot(25, style=linestyle, linewidth=4, color=TF_global_color) exitCondition_Long = TF_global_bear exitCondition_Short = TF_global longCondition = TF_global if (longCondition) strategy.entry("MTF_Long", strategy.long, qty=transaction_size) shortCondition = TF_global_bear if (shortCondition) strategy.entry("MTF_Short", strategy.short, qty=transaction_size) [kc_lower,kc_upper] = kc() strategy.close("MTF_Long", when=close < kc_upper) strategy.close("MTF_Short", when=close > kc_lower)