Strategi ini diadaptasi dari strategi perdagangan niaga hadapan minyak mentah percuma Kevin Davey. Ia menggunakan penunjuk ADX untuk menentukan trend di pasaran minyak mentah dan, digabungkan dengan prinsip harga, melaksanakan strategi perdagangan automatik yang mudah dan praktikal untuk minyak mentah.
Strategi ini terutamanya bergantung pada penunjuk ADX untuk menentukan trend, dan menghasilkan isyarat perdagangan berdasarkan penembusan harga kitaran tetap di bawah keadaan trend.
Secara keseluruhan, ini adalah strategi perdagangan minyak mentah yang sangat praktikal. Ia menggunakan penunjuk ADX untuk menentukan trend dengan sangat munasabah. Prinsip harga pecah adalah mudah dan berkesan dengan hasil backtest yang baik. Pada masa yang sama, sebagai strategi percuma awam Kevin Davey, ia mempunyai kebolehpercayaan yang sangat kuat dalam pertempuran sebenar. Walaupun masih ada ruang untuk peningkatan dalam strategi, ia adalah pilihan yang sangat sesuai untuk pemula dan peniaga modal kecil untuk memulakan 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()))