
この戦略は,一目平衡表,Macd指標,Chaikin金流指標,Tsi振動指標など,複数の技術指標を総合的に使用し,市場傾向の方向を正確に判断し,ショートライン取引を行うことができます.
策略は,一目均衡表の天界線,基準線,先行線などの指標を使用して,日中の価格トレンドを判断する.同時に,Macdの快慢平均線交差信号と,金流指標と震動指標を組み合わせて,資金の流入と流出を判断する.複数の指標の総合判断の後,買付決定を行う.
地平線上での基准線を貫通し,先行線は0軸の上にあり,閉盘価格が一目均衡表の雲端上にあるときは看板信号である.逆に,当日地平線下での基准線を貫通し,先行線が0軸の下にあるときは,閉盘価格が雲端下にあるときは,看板信号である.戦略は同時に,Macdの直角図が正値であるかどうか,そしてChaikin金流指数と震動指数が正向であるかどうかを検出する.指数が同方向の看板であるならば,買い上げを行う.指数が同方向の看板であるならば,空売りを行う.
指数が前と逆のシグナルを発したときに,平らになる前に逆転取引を行う.
複数の指標を組み合わせて判断する.
ショートライン操作,リアルタイムで市場の変動を追跡する.
取引は自動化され,人間による介入を必要としません.
複数の指標が同調して看板下落する判断は,誤判リスクを生じやすい.誤判率を下げるため,部分的な判断条件を適切に緩和することができる.
高周波ショートライン取引は手数料が高く,トレンドを捉えにくい.適切な持仓周期を延長し,コストを補うために余剰収益を追求する.
無損失設定は大きな損失を引き起こす可能性がある.ATRと組み合わせて適切な停止ポイントまたは移動停止を設定できます.
パラメータの組み合わせを最適化する.平均線パラメータを異なる周期と品種に合わせる.
ストップメカニズムの追加.ATR指数と組み合わせて移動ストップラインを動的に設定する.
ポジション管理の強化. 取引量の割合の動的調整.
機械学習技術と組み合わせた指標と信号の最適化.
この戦略は,複数の技術指標を総合的に使って,トレンドのリアルタイム波動を判断し,高周波ショートライン取引を行う.ある程度のリスクがあるが,最適化によって改善できる.この戦略は,さらなる深入の研究と実用検証に値し,ストップとポジション管理を増やすことによって取引リスクを低減する.
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0)
//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)
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=17)
slow_length = input(title="Slow Length", type=input.integer, defval=28)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)
// 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(8, 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=8)
short = input(title="Short Length", type=input.integer, defval=8)
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)