Эта стратегия представляет собой двойную стратегию импульса временных рамок. Она определяет направление тренда на более высоком временном отрезке с использованием простой скользящей средней (SMA) и определяет точки обратного движения на более низком временном отрезке с использованием поворотных точек (PivotLow и PivotHigh). Она входит в длинный, когда более высокий временной отрез показывает восходящий тренд, а бычий поворотный момент появляется на более низком временном отрезке, и входит в короткий, когда более высокий временной отрез показывает нисходящий тренд, а медвежий поворотный момент появляется на более низком временном отрезке.
Основной принцип этой стратегии заключается в том, что направление тренда более высокой временной рамки будет влиять на движение более низкой временной рамки. Когда более высокая временная рамка показывает восходящий тренд, откат на более низкой временной рамке скорее всего будет покупать возможности; когда более высокая временная рамка показывает нисходящий тренд, отскоки на более низкой временной рамке скорее всего будут короткими возможностями. Эта стратегия использует Простую скользящую среднюю (SMA) для определения направления тренда более высокой временной рамки и ключевых точек (PivotLow и PivotHigh) для выявления точек переворота на более низкой временной рамке.
Эта двойная стратегия импульса времени использует связь между более высокими и более низкими временными рамками, определяя направление тренда на более высоком временном отрезке и захватывая точки перелома на более низком временном отрезке для достижения следующего тренда и перелома торговли.
/*backtest start: 2023-04-19 00:00:00 end: 2024-04-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Riester //@version=5 strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05) n = input.int(20, "Moving Average Period", minval=1) src = input.source(close, "Source") high_tf = input.timeframe("240", "Resolution") pivot_l = input.int(5, "Pivot Let Bars") pivot_r = input.int(2, "Pivot Right Bars") //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // Calculations //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // 1. Define low and high timeframe prices low_src = src high_src = request.security(syminfo.tickerid, high_tf, src) // 2. Use simple moving average to determine trend of higher timeframe (up or down) high_tf_ma = ta.sma(high_src, n) plot(high_tf_ma, color=color.yellow) high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1 // 3. Use pivots to identify reversals on the low timeframe low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r) plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r) low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r) plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r) bool long = low_tf_pl and high_tf_trend == 1 bool short = low_tf_ph and high_tf_trend == -1 //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // Plots //----------------------------------------------------------------------------------------------------------------------------------------------------------------- // this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically. enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}' exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}' if long strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert) if short strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)