振動ロングとショートRSI通貨交換戦略


作成日: 2023-12-25 13:49:48 最終変更日: 2023-12-25 13:49:48
コピー: 0 クリック数: 607
1
フォロー
1623
フォロワー

振動ロングとショートRSI通貨交換戦略

概要

振動多空RSI交換策略は,暗号通貨に使用される量的な取引策策である.それは,市場技術指標RSIとICHIMOKU指標を組み合わせて,価格の振動時に多空シグナルを識別し,低買い高売りを実現する.それは,中長線周期,例えば3-4時間以上に適用される.

戦略原則

この戦略は以下の指標とルールに基づいています.

ICHIMOKU指標について

  • テンカン線:過去20回K線の最高・最低の価格の中間点
  • Kijunライン:過去50Kラインの最高最低価格のミドルポイント
  • センコーA線:テンカン線とキジュン線の真ん中
  • Senkou B線:過去120回K線における最高最低価格のミドルポイント
  • チコウ線:現在のK線閉店価格の前30K線

RSI指数について

  • 0から100までです.
  • 50以上は多頭信号,50未満は空頭信号

入場ルール
多頭入場:Tenkan線でKijun線 (金交差) を越え,Senkou A&B線を突破し,RSIが50を超えた 空頭入場:テンカン線下を通過キジュン線 (死交差) 価格がセンコウA&B線を下回り,RSIが50を下回る

ルールからの脱退
入球の反対の信号が現れたら即座に外出停止

この戦略は,中長期のトレンド,短期的な資金流動性,過剰買いと過剰販売を考慮し,変動の状況で逆転の機会を捉える.それは,大きな損失を回避するために,損失の停止ルールを設定している.

優位分析

1. 複数の指標を統合して高い確実性を確保する

この戦略は,ICHIMOKUのトレンドとサポートレジスタンス判断,RSIの超買い超売り状況,K線実体方向の資金流動性を同時に考慮し,シグナルの信頼性を保証します.

2. 不安定な状況に適して,頻繁に利益を得る

この戦略は,仮想通貨市場の波動が大きいため,変動の逆転の機会を十分に捉え,頻繁に低価格で買い上げを行うことができる.

3. 追放防止 リスク管理

戦略は,中長期の傾向と短期的な状況を総合的に考慮し,ストップオフのリスクを回避し,ストップオフのリスクを設定します.

リスク分析

1. 動作部分を見逃す

この戦略は反転を主としており,長期にわたる運用状況が起こると,戦略は頻繁に揺れ動いて資金を攻撃する.

2. 単一品種でリスク分散はできない

単一品種のみを取引する戦略は,市場におけるシステミックなリスクを分散させることができません.

3. 極端な状況での損失の停止

極端な状況では,空飛ぶ,量能爆発などの状況で,戦略は止損を誘発し,出場を余儀なくされる可能性があります.

最適化の方向

1. ストップ・ロスの策略を増やして 単発損失を減らす

利潤をロックし,利潤のゼロ化を防ぐために移動停止または残余パーセントの停止を設定できます.

2. 株価指数の関連性と市場リスクの分散

市場におけるシステム的リスクを分散させるため,株価指数関連性の高い品種で取引の機会を模索することができます.

3. 条件のフィルタリングを増やし,無効取引を減らす

価格の変動率,取引量の変化などの条件フィルターを設定し,無効な反転信号を回避し,利益の確率を向上させる.

要約する

震動多空RSI通貨交換戦略はICHIMOKU指標と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)