移動平均戦略に基づく統合一目均衡表ケルトナー取引システム


作成日: 2023-12-20 13:40:08 最終変更日: 2023-12-20 13:40:08
コピー: 0 クリック数: 745
1
フォロー
1621
フォロワー

移動平均戦略に基づく統合一目均衡表ケルトナー取引システム

概要

この戦略は,均線戦略,イチモク雲図,ケルトナー通路技術指標を統合し,トレンド追跡と突破取引を実現し,高周波アルゴリズム取引に適用する.

戦略原則

  1. ケルトナー通路を使用して,通路の上下線を超えているかどうかを判断し,倉庫を建てるシグナルとして
  2. イチモク雲図は,Keltnerチャネルと連携してトレンドの方向を判断する.
  3. 均線戦略は平仓信号を発信する

優位分析

  1. 複数の技術指標を統合し,総合的な判断を行い,意思決定の正確性を向上させる
  2. Keltnerの通路は,超買いと超売りを判断し,高値と低値を追うためにポジションを建てるのを避ける.
  3. イチモク雲図は大きなトレンドを判断し,逆転取引を避ける
  4. 均等な戦略で過敏な振動をフィルターする

リスク分析

  1. 多指標統合,パラメータ設定が複雑で,慎重にテストする必要がある
  2. クローズグラフ変換線と基準線の交差は必ずしも信頼性の高い取引信号ではない.
  3. Keltner Channelは,異なる株の特徴に合わせてパラメータを調整する必要があります.

最適化の方向

  1. サーバーのパフォーマンスを評価し,平均周期を適切に短縮し,取引頻度を向上させる
  2. 異なる株のパラメータに対する感受性をテストし,自律的パラメータを設定する
  3. 単一損失を減らすために ストップ・ローズ戦略を強化する

要約する

この戦略は,イチモク・クラウド・グラフ,ケルトナー・チャネル,均線戦略の複数の技術指標を統合し,トレンド追跡と高効率のブレイクトレードを実現している.単一の指標と比較して,この戦略の判断はより包括的で正確で,ある種の偽信号を回避している.また,個別の株に対して最適化が必要な複雑なパラメータ設定の問題もある.全体的に,この戦略は,高周波アルゴリズム取引に適用され,効果は顕著である.

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

//@version=3
// Author: Persio Flexa
// Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading 
strategy("Ichimoku Keltner Strategy", overlay=true) 

// -- Keltner ------------------------------------------------------------------
source = close

useTrueRange = input(true)
length = input(18, minval=1) 
mult = input(1.8)

ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult

plot(ma, title="BASE", color=orange,transp=85)
plot(upper, title="UPPER", color=red)
plot(lower, title="LOWER", color=green)

//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
crossUpper = source > upper
crossLower = source  < lower

bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])

sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) 

crossBcond = false
crossBcond := crossUpper ? true 
 : na(crossBcond[1]) ? false : crossBcond[1]

crossScond = false
crossScond := crossLower ? true 
 : na(crossScond[1]) ? false : crossScond[1]

cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

// ---------------------------------------------------------------------


// -- Ichimoku

ATRlength = input(200, minval=1)
ATRMult = input(2.272, minval=1)

ATR = rma(tr(true), ATRlength)

len = input(26, minval=1, title="EMA Length")
src = input(close, title="Source")
out = ema(src, len)

emaup = out+(ATR*ATRMult)
emadw = out-(ATR*ATRMult)

conversionPeriods = input(15, minval=1),
basePeriods = input(35, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)

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

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2")
fill(p1, p2,silver) 

longCond    = crossover(conversionLine, baseLine)
shortCond   = crossunder(conversionLine, baseLine)
// -------------------------------------------------------------------------

if (crossUpper and (conversionLine > baseLine))
    strategy.entry("long", strategy.long, stop=bprice, comment="LONG")

if (crossLower and (conversionLine < baseLine))
    strategy.entry("short", strategy.short, stop=sprice, comment="SHORT")
    
strategy.close("long", when = (shortCond and source < lower))
strategy.close("short", when = (longCond and source > upper))