レンコ・イン・ヤング 量子取引戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-27 17:11:30
タグ:

概要

レンコ・イイン・ヤング量子取引戦略は,日中の価格・ボリューム関係に基づく短期的取引戦略である.これは1日以内にイン・ヤングの方向情報を利用し,ボリューム確認信号を組み合わせ,低リスクの短期取引を実施する.

戦略の論理

この戦略は,各取引日のオープン,閉鎖,高値,低値を計算し,ATRインジケーターとともにレンコブロックを生成する.インヤングブロックが逆転すると取引信号が生成される.

具体的には,戦略はまずレンコブロックのオープン価格 o2とクローズ価格 c2を計算します. o2c2の場合,陰線を示します.陽線が陰線に転移すると,販売信号が生成されます.陰線が陽線に転移すると,購入信号が生成されます.

偽ブレイクをフィルタリングするために,戦略は最後のヤングラインとヤングラインの期間数を数える.ヤングラインがより多くの期間を持っている場合,信号はより信頼性がある.さらに,ストップ損失と利益の論理は,購入と販売後に設定されます.

利点

  1. レンコブロックは市場の騒音をフィルターし 取引信号をより明確にする

  2. 価格と量の関係を組み合わせることで,誤ったブレイクのリスクが回避されます.

  3. DAPMモデルは,日中取引にシンプルで有効です.

  4. 調整可能なATRパラメータが取引頻度を調整する.

  5. ストップ・ロスはリスク管理を改善します

リスク

  1. まだ不透明な 偽脱出の危険性がある

  2. レンコパラメータの設定が正しくない場合 トレンドを見逃したり 取引頻度を増やしたりします

  3. ストップ損失が狭すぎると 小規模な引き下げによって停止される可能性があります

最適化

  1. 信号をフィルターするために他の技術指標を組み合わせることを検討する.

  2. ストップ・ロスの機能を追加してみてください

  3. 異なる資産のパラメータを最適化します

  4. 複数のタイムフレームで取引する際には,異なるタイムフレームを組み合わせることを検討してください.

結論

結論として,これは非常に実用的な短期取引戦略です. 効率的にフィルタリングし,重要なターニングポイントを捕捉するために価格・ボリューム関係を使用します. 適切なパラメータチューニング,リスク管理,ストップロスの戦略は,その安定性と収益性を大幅に向上させることができます. 継続的な最適化とテストにより,この戦略は日中トレーダーにとって強力なツールになることができます.


/*backtest
start: 2022-09-26 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License https://creativecommons.org/licenses/by-sa/4.0/
// © dman103
strategy(title="Renko Strategy V2", shorttitle="Renko Strategy V2", overlay=true,precision=3, commission_value=0.025, default_qty_type=strategy.cash, default_qty_value=10000, initial_capital=10000)
// Version 2.0 of my previous renko strategy using Renko calculations, this time without Tilson T3 and without using security with Renko to remove repaints!
// Seems to work nicely on cryptocurrencies on higher time frames.

//== Description ==
// Strategy gets Renko values and uses renko close and open to trigger signals.
// Base on these results the strategy triggers a long and short orders, where green is uptrending and red is downtrending.
// This Renko version is based on ATR, you can Set ATR (in settings) to adjust it.

// == Notes ==
// Supports alerts.
// Supports backtesting time ranges.
// Shorts are disabled by default (can be enabled in settings).
// Link to previous Renko strategy V1: https://www.tradingview.com/script/KeWBWLGT-Renko-Strategy-T3-V1/
//
// Stay tuned for version V3 in the future as i have an in progress prototype, Follow to get updated: https://www.tradingview.com/u/dman103/#published-scripts

// === INPUT BACKTEST RANGE ===
useDate = input(true,     title='---------------- Trade Range ----------------', type=input.bool)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2017, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2099, title = "To Year", minval = 2010)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create 

settings = input(true,     title='---------------- Settings ----------------', type=input.bool)

allow_short = input(false,title="Allow Short")
atr_len = input(10,"ATR Length")

atr = atr(atr_len)
// Thanks to renko snippet calculations from @RafaelZioni  https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/
Renko1() =>
    p1 = 0.0
    p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1])
    p1
Renko2() =>
    p2 = 0.0
    Br_1 = Renko1()
    p2 := Renko1() != Renko1()[1] ? Br_1[1] : nz(p2[1])
    p2

Renko3() =>
    p3 = 0.0
    p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1])
    p3

Renko4() =>
    open_v = 0.0
    Br_2 = Renko3()
    open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1])
    open_v

o2 = Renko4()
c2 = Renko1()
l2 =low
h2 = high

//=== Plotting ===

crossPlot= 0.0
if (o2 < c2)
    crossPlot :=o2
else 
    crossPlot := o2

// Used to make sure that even if o2 and c2 are equal, the result (short or long) will be based on previous trend.
bars_since_up=barssince(o2 < c2)
bars_since_down=barssince(o2 > c2)
go_long= (bars_since_up<bars_since_down) and  o2<c2
go_short = (bars_since_up>bars_since_down) and o2>c2
plotColor = go_long and  o2<c2 ? color.green : go_short and o2>c2?  color.red : color.white 
plot(crossPlot, color = plotColor, style = plot.style_circles, linewidth = 2,join=true)
changeCond = plotColor != plotColor[1]

//=== Buy/Sell ===
closeStatus =  strategy.openprofit > 0 ? "win" : "lose"
long_entry = plotColor == color.green and window()  and changeCond
long_exit_entry = plotColor == color.red //or (allow_alternative_sl and close < low_result  )
short_entry = plotColor == color.red  and window() and changeCond
short_exit_entry = plotColor == color.green   // or (allow_alternative_sl and close > high_result )

strategy.entry("long", true, when = long_entry)
strategy.close("long",when=long_exit_entry,comment=closeStatus)

if (allow_short)
    strategy.entry("short",false, when = short_entry)
strategy.close("short",when=short_exit_entry,comment=closeStatus)
//=== Alerts ===
alertcondition(go_long and changeCond , title='Renko Buy Signal', message='Renko Revered to Buy Signal')
alertcondition(go_short and changeCond , title='Renko Sell Signal', message='Renko Revered to Sell Signal')

もっと