インテリジェントな定量的低ポイント反転戦略


作成日: 2023-12-08 10:45:49 最終変更日: 2023-12-08 10:45:49
コピー: 0 クリック数: 682
1
フォロー
1621
フォロワー

インテリジェントな定量的低ポイント反転戦略

概要

この戦略は,暗号通貨に対するインテリジェント低点反転取引戦略である.これは,マルチタイムフレーム技術と自己適応RSI指標を使用して,市場が短期的に低い可能性のある低点を判断し,低点の近くで反転入りをし,余剰利益を得る.

戦略原則

まず,この戦略は,変化量と取引量の計算を利用して自律的なRSI指標を計算し,市場の短期的な低点を判断する.そして,複数の時間枠技術と組み合わせて,より大きなレベルで低点信号を決定する.自律的なRSI指標の線が0レベルより下を通るとき,購入信号を生成する.

具体的には,自適應RSI指標の計算方法は,まず各K線の変化量を計算し,次にこの根K線の取引量を計算し,その変化量を根K線の量化力を得る.量化力に対してRSIを計算し,N周期の平均値を取り,自適應RSI指標を得る.この指標は,市場の低点を明確に判断できる.

この基礎に,この戦略は,多時間枠技術を導入し,より高いレベルの枠で判断信号を出し,短期市場の騒音に干渉されないようにする. 高水準の平均線が低点から反転したとき,この戦略の買い時として判断する.

優位分析

この戦略の最大の利点は,RSI指数基準を自律的に使用して市場の短期低点を判断することであり,これは低点反転取引に有効な信号を提供します.さらに,多時間枠技術の加入は,短期市場の騒音に邪魔されないように信号の質を向上させます.

従来のRSI指標と比較して,自適應RSI指標は量的な強度の計算を加え,急速に変化する暗号通貨市場に対してより敏感になり,市場低点をより早く,より正確に判断することができる.これは低点逆転取引の先駆けとなる.

さらに,この戦略はトレンドフォローと反転取引の両方の利点を持っています. 傾向が不明な市場では,反転取引を利用して利益を得ることができます. 明確な牛市では,トレンドの運行も追跡できます.

リスク分析

この戦略の主なリスクは,低点判断の正確性が100%保証できないことである. 市場には短期間にしばしば巨大な不合理な波動がある. 低点が継続すれば,大きな止損リスクに直面する.

さらに,複数のタイムフレームの間に離散が発生する可能性があります. 高タイムフレームの信号が遅れている場合,取引の損失を引き起こす可能性があります.

リスクを制御するために,この戦略は,比較的保守的な止損機構を採用し,順次ストップを設定し,徐々に収益を最適化します.さらに,RSIのパラメータを適当に調整して,低点判断の正確性を最適化することもできます.

最適化の方向

この戦略は以下の点で最適化できます.

  1. RSI指標のパラメータを自律的に最適化して,市場の低点の判断精度を向上させる.異なる周期パラメータを試すことができます.

  2. 他の指標を追加してconfirmationを行うことで,誤信号が発生しないようにする.例えば,合成交差量指標などである.

  3. 利回り比率を保証する前提で,適切な利回り幅を緩和し,より多くのトレンド利得を稼ぐ.

  4. 時間の枠を最適化して,より大きなレベルで信号の信頼性を確保する.より高度な平均線を毎日,毎週などでテストすることができる.

  5. この戦略を様々な暗号通貨の種類でテストし,最適な種類を選択します.

要約する

このインテリジェント低点反転戦略は,RSI指標と多時間枠技術に自律的に適応することによって,市場の短期的な低点を判断します.この反転取引の特性は,不確実な状況で余剰利益を得ることを可能にします.同時に,それは明確なトレンドの動きを追跡することもできます.この戦略は,継続的な最適化によって,より信頼できる取引信号を得ることを期待し,長期的に安定した利益を得ることができます.

ストラテジーソースコード
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Low Scanner strategy crypto", overlay = false, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
leng=1
p1=close[1]
min=input(10)
len55 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
tf3 = input("60", type=input.resolution)
ti = change( time(tf3) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
min1 =input(1)
len100 = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   min1 / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange
plot(zx,color=col,linewidth=1)
//

tf10 = input("60", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(24, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)


a = security(syminfo.tickerid, tf10, hma(close, length))
b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


//plot(linear_reg, color=color.blue, title="LR", linewidth=3)

buy=crossover(linear_reg, b) 
sell=crossunder(linear_reg, b) 
//
l = crossover(zx,0) or buy
        
if l 
    strategy.entry("buy", strategy.long)

per(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)
stoploss=input(title=" stop loss", defval=10, minval=0.01)
los = per(stoploss)
q1=input(title=" qty_percent1", defval=25, minval=1)
q2=input(title=" qty_percent2", defval=25, minval=1)
q3=input(title=" qty_percent3", defval=25, minval=1)
tp1=input(title=" Take profit1", defval=1, minval=0.01)
tp2=input(title=" Take profit2", defval=2, minval=0.01)
tp3=input(title=" Take profit3", defval=3, minval=0.01)
tp4=input(title=" Take profit4", defval=5, minval=0.01)
strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los)
strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los)
strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los)
strategy.exit("x4", profit = per(tp4), loss = los)