この戦略は,ケヴィン・デイヴィのフリー・フューチャー・トレード・ストラテジーから改訂されたもので,ADX指標を使用して原油市場のトレンドを決定し,価格ブレイク原則と組み合わせて,原油のシンプルで実用的な自動取引戦略を実装する.
この戦略は主にADX指標をベースに傾向を決定し,傾向条件下で固定サイクル価格ブレイクに基づいて取引信号を生成する. 全体の戦略論理は非常にシンプルで明確である.
総じてこれは非常に実用的な原油取引戦略である. ADX指標を使用してトレンドを非常に合理的に決定する. 価格ブレイクアウト原則は,バックテスト結果が良好でシンプルで有効である. 同時に,ケビン・デイヴィの公開無料戦略として,実際の戦闘で非常に強力な信頼性があります. 戦略にはまだ改善の余地があるものの,初心者や小資本トレーダーが開始し練習するのに非常に適した選択です.
/*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()))