Diese Strategie wurde von Kevin Davey's kostenloser Rohöl-Futures-Handelsstrategie übernommen. Sie verwendet den ADX-Indikator, um den Trend auf dem Rohölmarkt zu bestimmen, und implementiert in Kombination mit dem Preis-Breakout-Prinzip eine einfache und praktische automatisierte Handelsstrategie für Rohöl.
Die Strategie stützt sich hauptsächlich auf den ADX-Indikator, um den Trend zu bestimmen, und erzeugt Handelssignale, die auf Festzyklus-Preisschwankungen unter Trendbedingungen basieren.
Das ist eine sehr praktische Rohöl-Handelsstrategie. Es verwendet den ADX-Indikator, um den Trend sehr vernünftig zu bestimmen. Das Preis-Breakout-Prinzip ist einfach und effektiv mit guten Backtest-Ergebnissen. Gleichzeitig hat es als Kevin Davey's öffentliche freie Strategie eine sehr starke Zuverlässigkeit im tatsächlichen Kampf. Obwohl es noch Raum für Verbesserungen in der Strategie gibt, ist es eine sehr geeignete Wahl für Anfänger und kleine Kapitalhändler, um zu beginnen und zu üben.
/*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"}] */ // Strategy idea coded from EasyLanguage to Pinescript //@version=5 strategy("Kevin Davey Crude free crude oil strategy", shorttitle="CO Fut", format=format.price, precision=2, overlay = true, calc_on_every_tick = true) adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) plot(sig, color=color.red, title="ADX") buy = sig > 10 and (close - close[65]) > 0 and (close - close[65])[1] < 0 sell = sig > 10 and (close - close[65]) < 0 and (close - close[65])[1] > 0 plotshape(buy, style = shape.arrowup, location = location.belowbar,size = size.huge) plotshape(sell, style = shape.arrowdown, location = location.abovebar,size = size.huge) if buy strategy.entry("long", strategy.long) if sell strategy.entry("short", strategy.short) if strategy.position_size != 0 strategy.exit("long", profit = 450, loss = 300) strategy.exit("short", profit = 450, loss = 300) // GetTickValue() returns the currency value of the instrument's // smallest possible price movement. GetTickValue() => syminfo.mintick * syminfo.pointvalue // On the last historical bar, make a label to display the // instrument's tick value if barstate.islastconfirmedhistory label.new(x=bar_index + 1, y=close, style=label.style_label_left, color=color.black, textcolor=color.white, size=size.large, text=syminfo.ticker + " has a tick value of:\n" + syminfo.currency + " " + str.tostring(GetTickValue()))