Diese Strategie kombiniert den MACD-Momentumsindikator und den DMI-Trendindikator, um bei Erfüllung der Bedingungen lang zu gehen.
Wenn beide Bedingungen gleichzeitig erfüllt sind, gehen Sie lang.
Es gibt zwei Standards für Positionsausgänge:
Diese Strategie synthetisiert mehrere Indikatoren, um Markttrends und -bedingungen zu beurteilen, und interveniert in Situationen mit einer relativ hohen Wahrscheinlichkeit der Gunst. Die Gewinnnahmebedingungen wurden auch optimal konzipiert, um einen bestimmten Gewinn zu gewährleisten, während die Flexibilität der Verriegelung von Gewinnen berücksichtigt wird. Durch Parameteranpassung und weiteres Risikomanagement kann diese Strategie zu einem stabilen quantitativen Handelssystem werden.
/*backtest start: 2024-01-29 00:00:00 end: 2024-02-28 00:00:00 period: 2h 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/ //@version=4 strategy(shorttitle='(MACD + DMI Scalping with Volatility Stop',title='MACD + DMI Scalping with Volatility Stop by (Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) // Works better on 3h, 1h, 2h, 4h //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // DMI and MACD inputs and calculations [pos_dm, neg_dm, avg_dm] = dmi(14, 14) [macd, macd_signal, macd_histogram] = macd(close, 12, 26, 9) Take_profit= ((input (3))/100) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(2.0, "vStop Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) closeLong = close > longTakeProfit or crossunder(close, vStop) //Entry strategy.entry(id="long", long = true, when = crossover(macd, macd_signal) and pos_dm > neg_dm and window()) //Exit strategy.close("long", when = closeLong and window())