Strategi ini diadaptasi dari strategi perdagangan berjangka minyak mentah gratis Kevin Davey. Ini menggunakan indikator ADX untuk menentukan tren di pasar minyak mentah dan, dikombinasikan dengan prinsip price breakout, menerapkan strategi perdagangan otomatis yang sederhana dan praktis untuk minyak mentah.
Strategi ini terutama mengandalkan indikator ADX untuk menentukan tren, dan menghasilkan sinyal perdagangan berdasarkan bursa harga siklus tetap dalam kondisi tren.
Secara keseluruhan ini adalah strategi perdagangan minyak mentah yang sangat praktis. Ini menggunakan indikator ADX untuk menentukan tren dengan sangat wajar. Prinsip price breakout sederhana dan efektif dengan hasil backtest yang baik. Pada saat yang sama, sebagai strategi bebas publik Kevin Davey, strategi ini memiliki keandalan yang sangat kuat dalam pertempuran aktual. Meskipun masih ada ruang untuk perbaikan dalam strategi, ini adalah pilihan yang sangat cocok untuk pemula dan pedagang modal kecil untuk memulai dan berlatih.
/*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()))