振動する長期・短期RSI暗号交換戦略

作者: リン・ハーンチャオチャン開催日:2023年12月25日 13:49:48
タグ:

img

概要

オシレーティング・ロング・ショート・RSI・クリプト・スイッチング・ストラテジーは,仮想通貨向けに設計された定量的な取引戦略である.技術指標RSIとイチモク指標を組み合わせて,価格振動中に長短信号を識別し,低値で購入し,高値で販売する. 3-4時間以上などの中長期間のタイムフレームに適している.

戦略の論理

戦略は主に以下の指標と規則に基づいています

イチモク指標

  • テンカン線:過去20バーの最高値と最低値の真ん中点
  • キジュン線:過去50バーの最高値と最低値の真ん中点
  • センコウA線:テンカン線とキジュン線の真ん中
  • センコウB線:過去120バーの最高値と最低値の中間点
  • チコウライン 30バー前の閉店価格

RSI インディケーター

  • 0から100までの範囲
  • 50を超えると上昇信号,50を下ると下落信号

入国規則
ロングエントリー:キジュンの上のテンカンクロス (金色クロス) とセンコウA&Bラインの価格ブレイク,RSIが同時に50以上
短いエントリー:キジュンの下のテンカンクロス (死のクロス) と価格の破綻 Senkou A&Bライン,RSIが同時に50以下

退去規則
反対信号で出口

この戦略は,中長期の傾向,短期的資本流動,過買い/過売状況を考慮し,振動時の逆転機会を把握する.また,巨額の損失を避けるためのストップ・ロスのルールを設定する.

利点分析

1. 複数の指標に基づく判断は,高い確実性を保証する

この戦略は,ICHIMOKUのトレンドとサポート/レジスタンス判断,RSIのオーバー買い/オーバーセール条件,およびキャピタルフローを,キャンドルボディの方向に基づいて考慮します.これは信頼できる信号を保証します.

2. 振動 に 適し,頻繁 に 利益 を 得る

仮想通貨市場には大きな変動があります.この戦略は振動中に逆転の機会を完全に把握し,頻繁な低価格購入と高価格販売を達成することができます.

3. 追いかける上昇を防止し,倒れを打つ,制御可能なリスク

この戦略は,中長期の動向と短期的状況を包括的に考慮し,上昇を追いかけて後退するリスクを回避する.一方,ストップ・ロスはリスクを防ぐ.

リスク分析

1. トレンド の ある 機会 を 逃す こと が でき ます

この戦略は主に逆転に焦点を当てており,長期にわたるトレンド期間に頻繁に挫折を引き起こす可能性があります.

2. リスクの多様化ができない単一のシンボル

戦略は単一のシンボルのみを取引し,体系的な市場リスクに対して多様化することはできません.

3. 極端な動き中に起動するストップ損失

ギャップやピークのような極端な市場状況では,ストップロスは出口を強制的に引き起こす可能性があります.

オプティマイゼーションの方向性

1. 低単一の損失のためのストップ損失を追加

移動ストップ損失または百分比ストップ損失は,利益を固定し,完全なリターセを防ぐために使用できます.

2. 市場リスクの多様化のためにインデックスと相関

体系的な市場リスクの多様化のために高度に相関するシンボルの間での取引機会を探します

3. 不当 な 取引 を 減らす ため に 追加 的 な フィルター

価格変動やボリュームの変化などのフィルタが追加されれば 不正な逆転信号を回避し 収益率を上げることができます

結論

オシレーティング・ロング・ショート・RSI・暗号スイッチング・ストラテジー (Oscillating Long-Short RSI Crypto Switching Strategy) は,暗号通貨の逆転点を特定するために,イチモクとRSI指標を組み合わせ,オシレーション中に低価格で購入し,高利益を得るために販売するのに適しています.また,リスクを制御するためのストップ・ロスのルールを設定しています.ストップ・ロスのメカニズムを最適化し,相関を通じてリスクを多様化し,条件付きフィルターを追加することで,ストップ・ロスのメカニズムをさらに強化することができます.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="Ichimoku + RSI Crypto trending strategy", overlay=true, initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=1  )

UseHAcandles    = input(true, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===

// === BASE FUNCTIONS ===

haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh  = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow   = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low


//Inputs
ts_bars = input(20, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(50, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(120, minval=1, title="Senkou-Span B Bars")
cs_offset = input(30, minval=1, title="Chikou-Span Offset")
ss_offset = input(30, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

//Volatility
//vollength = input(defval=1, title="VolLength")
//voltarget = input(defval=0., type=input.float, step=0.1, title="Volatility Target")
//Difference = abs((haClose - haOpen)/((haClose + haOpen)/2) * 100)
//MovingAverage = sma(Difference, vollength)
//highvolatility = MovingAverage > voltarget

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

middle(len) => avg(lowest(len), highest(len))

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

//RSI
change = change(haClose)
gain = change >= 0 ? change : 0.0
loss = change < 0 ? (-1) * change : 0.0
avgGain = rma(gain, 14)
avgLoss = rma(loss, 14)
rs = avgGain / avgLoss
rsi = 100 - (100 / (1 + rs))

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(haClose, cs_offset-1) > 0
cs_cross_bear = mom(haClose, cs_offset-1) < 0
price_above_kumo = haClose > ss_high
price_below_kumo = haClose < ss_low
rsi_bullish = rsi > 50
rsi_bearish = rs < 50
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish //and highvolatility
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish //and highvolatility

strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond)
strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond)

strategy.close("Long", when=bearish and not short_entry and time_cond)
strategy.close("Short", when=bullish and not long_entry and time_cond)




もっと