你好,交易员们,
该指标与我之前的指标“CCI MTF Ob+Os”使用相同的概念。
这是一个简单的“相对强弱指数”(RSI)指标,具有多时间段(MTF)超买和超卖水平。
它可以在多达5个时间段内检测超买和超卖水平,这有助于交易员更容易地发现潜在的反转点。
可以选择1-5个时间段来检测超买和超卖。
湖绿色背景是“超卖”,寻找“多头”。 橙色背景为“超买”,寻找“空头”。
玩得开心:)
策略回测
/*backtest start: 2022-01-01 00:00:00 end: 2022-06-01 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}] args: [["v_input_int_1",9],["v_input_int_2",70],["v_input_int_3",30],["ContractType","hc2210",360008]] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © thakon33 // __ __ __ ____ ____ // / /_/ / ___ _/ /_____ ___ |_ /|_ / // / __/ _ \/ _ `/ '_/ _ \/ _ \_/_ <_/_ < // \__/_//_/\_,_/_/\_\\___/_//_/____/____/ //@version=5 indicator("RSI MTF Ob+Os") //------------------------------------------------------------------------------ // Input var g_rsi = "[ RSI SETTING ]" rsiSrc = input (title="数据源", defval=close, group=g_rsi) rsiLength = input.int(title="周期", defval=14, minval=1, group=g_rsi) rsiOverbought = input.int(title="超买", defval=60, minval=50, maxval=99, step=1, group=g_rsi) rsiOversold = input.int(title="超卖", defval=40, minval=1, maxval=50, step=1, group=g_rsi) var g_tf = "[ SELECT TIMEFRAME ]" rsiTf1 = input.timeframe(title="时间框架 1", defval="15", group=g_tf, inline="tf1") rsiTf2 = input.timeframe(title="时间框架 2", defval="30", group=g_tf, inline="tf2") rsiTf3 = input.timeframe(title="时间框架 3", defval="60", group=g_tf, inline="tf3") rsiTf4 = input.timeframe(title="时间框架 4", defval="120", group=g_tf, inline="tf4") rsiTf5 = input.timeframe(title="时间框架 5", defval="240", group=g_tf, inline="tf5") rsiTf1_E = input.bool(title="是否使用 时间框架1", defval=true, group=g_tf, inline="tf1") rsiTf2_E = input.bool(title="是否使用 时间框架2", defval=true, group=g_tf, inline="tf2") rsiTf3_E = input.bool(title="是否使用 时间框架3", defval=true, group=g_tf, inline="tf3") rsiTf4_E = input.bool(title="是否使用 时间框架4", defval=true, group=g_tf, inline="tf4") rsiTf5_E = input.bool(title="是否使用 时间框架5", defval=true, group=g_tf, inline="tf5") //------------------------------------------------------------------------------ // Calculate RSI Fsec(Sym, Tf, Exp) => request.security(Sym, Tf, Exp[barstate.isrealtime ? 1 : 0], barmerge.gaps_off, barmerge.lookahead_off) [barstate.isrealtime ? 0 : 1] rsi1 = Fsec(syminfo.tickerid, rsiTf1, ta.rsi(rsiSrc, rsiLength)) rsi2 = Fsec(syminfo.tickerid, rsiTf2, ta.rsi(rsiSrc, rsiLength)) rsi3 = Fsec(syminfo.tickerid, rsiTf3, ta.rsi(rsiSrc, rsiLength)) rsi4 = Fsec(syminfo.tickerid, rsiTf4, ta.rsi(rsiSrc, rsiLength)) rsi5 = Fsec(syminfo.tickerid, rsiTf5, ta.rsi(rsiSrc, rsiLength)) //------------------------------------------------------------------------------ // RSI Overbought and Oversold detect rsi1_Ob = not rsiTf1_E or rsi1 >= rsiOverbought rsi2_Ob = not rsiTf2_E or rsi2 >= rsiOverbought rsi3_Ob = not rsiTf3_E or rsi3 >= rsiOverbought rsi4_Ob = not rsiTf4_E or rsi4 >= rsiOverbought rsi5_Ob = not rsiTf5_E or rsi5 >= rsiOverbought rsi1_Os = not rsiTf1_E or rsi1 <= rsiOversold rsi2_Os = not rsiTf2_E or rsi2 <= rsiOversold rsi3_Os = not rsiTf3_E or rsi3 <= rsiOversold rsi4_Os = not rsiTf4_E or rsi4 <= rsiOversold rsi5_Os = not rsiTf5_E or rsi5 <= rsiOversold rsiOb = rsi1_Ob and rsi2_Ob and rsi3_Ob and rsi4_Ob and rsi5_Ob rsiOs = rsi1_Os and rsi2_Os and rsi3_Os and rsi4_Os and rsi5_Os //------------------------------------------------------------------------------ // Drawing on chart plot (rsiTf1_E ? rsi1 : na, title="TF 1", color=color.rgb(255, 205, 22, 20), linewidth=1) plot (rsiTf2_E ? rsi2 : na, title="TF 2", color=color.rgb(255, 22, 239, 20), linewidth=1) plot (rsiTf3_E ? rsi3 : na, title="TF 3", color=color.rgb(38, 22, 255, 0), linewidth=1) plot (rsiTf4_E ? rsi4 : na, title="TF 4", color=color.rgb(123, 253, 22, 20), linewidth=1) plot (rsiTf5_E ? rsi5 : na, title="TF 5", color=color.rgb(0, 255, 255, 50), linewidth=1) strategy.entry("BUY", strategy.long, when=rsiOb) strategy.entry("SELL", strategy.short, when=rsiOs) //============================================================================== //==============================================================================template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6