
クラウド戦略は,クラウドグラフ,MACD,キャピタルフロー指数 (CMF) と実力度指数 (TSI) の複数の技術指標を統合した量化取引戦略である.この戦略は,市場における中長線取引の機会を探求することを目的としている.
彩雲戦略の核心思想は,一雲図の多空信号,MACDの多空指標,CMFの資金流動指標とTSIの強度指数を組み合わせて市場の傾向と超買超売領域を判断することである.一雲図は,トレンドの方向と重要なサポート抵抗を明確に判断できる.MACDは,市場の買買力の対比と超買超売の現象を反映する.CMFは,資金の流入と流出を判断する.TSIは,市場の実際の買買力の売り上げを示している.
具体的には,この戦略は以下の指標に基づいて判断されます.
上記の5つの条件が同時に成立すると多信号が発生し,雲図が10kan線下を通過すると雲支柱線などの条件が逆転すると空信号が発生する.
この戦略は,複数の指標の多空状態を総合的に判断し,単一の指標判断がもたらす騒音を回避する.同時に,一つの雲図を使用して,重要なサポートとレジスタンス領域を判断し,遅延影線の実体方向と組み合わせて,実際の資金流動の方向を判断する.したがって,トレンドの接近後の段階に入ることができ,重要なポイントの前に退出することができ,それによってより大きな利益を得ることができる.
彩雲戦略の最大の利点は,市場における過剰買いと過剰販売の現象を判断するために,複数の指標を総合的に使用することにある.具体的利点は以下の通りである.
複数の指標を統合して,信号の正確性を高めます.│ 単一の指標は誤信号を発生させる可能性が高く,この戦略は,一雲図,MACD,CMF,TSIなどの指標を統合することで,ノイズを効果的にフィルターし,信号の信頼性を向上させる。
一つの雲図が,重要なサポート・レジスタンス領域を判断する┃ 雲図は,重要なサポートとレジスタンス位置を明確に示し,戦略は,これらの位置に買取ポイントを配置して,トレンドの接近後の段階で市場に入ることができる。
資金の流れを判断する影線を延期する◎ 遅延影線は,実体からの逸脱を明らかにし,実際の資金の流入と流出を判断し,取引による虚偽の移動の誤解を回避します.
MACDは超買いと超売れを示している.≪MACDは,市場における超買超売の現象を,より迅速に表示し,一雲図の位置判断と組み合わせて,買い買いの点を正確に捉えることができる。
CMFは資金流動を示しています.│CMFIndicatorは,取引量の変化によって,大資金の流れを反映し,小資金の流出を誤導することを避けます。
TSIは強な買い物を示している.≪TSIは価格変動の幅の要因を排除し,実際の買い売り力の強さや弱さを正確に示すことができ,底の反発と頂点の下落のタイミングを判断します≫
クラウド戦略には多くの利点があるものの,注意すべきリスクもあります. 主なリスクと最適化方向は以下の通りです.
指標パラメータの最適化既存のパラメータは,最適のパラメータ組合せではないかもしれない.より体系的な最適化方法によって,よりよいパラメータを探して,より安定した収益を得ることができる.
ストップ・ローズ・ストラテジーの欠如│現在,止損メカニズムが設定されていないため,市場が急激に逆転すると,損失を効果的に制御することはできません.│合理的な移動止損または挂止損を設定できます.
取引頻度が高い┃ 複数の指標を組み合わせて判断し易く取引頻度が過高になる状況が発生する。 ┃ 適切なパラメータを調整し,合理的に取引頻度を制御することができる。
影響は大きく変化します│複数の指標を組み合わせて判断すると,効果角力が形成されやすい.特定の状況下では,戦略効果は大きな波動を持つ可能性がある。モデルポートフォリオの方法を導入し,異なる指標の重量配置を設定することができる。
リスク分散指数│ │ │ │ │ │ │ │ │ │ │ │
彩雲戦略は,複数の指標を統合した定量化取引戦略である.それは,一雲図,MACD,CMF,TSIなどの指標の互補の優位性を充分に活用し,買い売りのタイミングを判断する上で独特の優位性を有する.同時に,戦略には,さらに最適化可能な側面がある.
/*backtest
start: 2023-10-22 00:00:00
end: 2023-11-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Ichimoku with MACD/ CMF/ TSI ", overlay=true)
//Inputs
ts_bars = input(10, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(30, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")
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)
// Plot Ichimoku Kinko Hyo
plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=color.green, title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=color.red, title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? color.green : color.red, title="Cloud color")
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
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=hl2)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low
//CMF
lengthA = input(10, minval=1, title="CMF Length")
ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume
mf = sum(ad, lengthA) / sum(volume, lengthA)
//TSI
long = input(title="Long Length", type=input.integer, defval=20)
short = input(title="Short Length", type=input.integer, defval=20)
price = close
double_smooth(src, long, short) =>
fist_smooth = ema(src, long)
ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0 and mf < -0.1 and tsi_value < 0
strategy.entry("Long", strategy.long, when=bullish and long_entry)
strategy.entry("Short", strategy.short, when=bearish and short_entry)
strategy.close("Long", when=bearish and not short_entry)
strategy.close("Short", when=bullish and not long_entry)