均線交差策略は比較的一般的な取引策略である.この策略は均線の金叉死叉原理を用い,イチモク雲図表指標とSMA平滑移動均線を組み合わせて,より完全な取引システムを形成する.この策略は,自動的にストック開平ポジション操作を行うことができる.
この戦略は主に,イチモク指数における転換線と基準線の比較,およびSMAの短期および長期移動平均線の交差状況によって株の買い買いを判断する.
具体的には,Ichimoku指標の転換線conversionLine,基線baseLine,リードライン1leadLine1およびリードライン2leadLine2をコードで定義している.また,長期SMA移動平均線ma1および短期SMA移動平均線ma2を定義している.
購入を判断する際には,ターニングラインがベースラインより低く,短期平均線が長期平均線より低いという条件を同時に満たす必要があります.すなわち,平均線金叉が発生します.
売却を判断する際には,ターニングラインが基準線より高く,短期平均線が長期平均線より高いという条件を同時に満たさなければならない.すなわち平均線デッドフォークが発生する.
さらに,コードは,前日よりも閉盘価格が高い判断や,均線の数値を差分して1つの数値で割り,均線の斜率を判断するなどの補助条件を定義している.これは均線交差の強度や方向を判断できる.
この戦略は,複数の技術指標の優位性を集約し,市場動向をよりよく判断できるようにし,以下の利点があります.
イチモク雲図は,それ自体がトレンドの判断を含んでいるが,SMA平均線と組み合わせると,比較的強力なトレンドの判断が得られる.
SMA平均線は,価格の傾向と強さを判断し,速平均線が交差し,遅平均線は,買い買い点を判断する.
閉店価格の判断を高めると,無意味な平仓を繰り返し開くのを防ぐことができます.
平均線斜率の計算は,平均線交差の強さの判断を増やし,偽交差をフィルターすることができる.
全体的に見ると,この戦略はトレンド判断に正確で,不必要な取引を減らすことができるし,ある程度の最適化余地がある.
この戦略にはいくつかのリスクがあります.
イチモク線とSMA平均線は,価格の変化を反映できないため,遅滞する可能性があります.
複数の条件を組み合わせて判断することで,戦略の複雑さも増し,失敗の可能性も増しています.
戦略は技術的な指標のみで,重要なニュース面の影響を判断することはできません.
ストップ・ロスの条件が設定されていない戦略で,損失拡大の危険性がある.
戦略は,状況の整合などの特殊な状況の処理を考慮していません.
パラメータの設定を間違えた場合, 策略の効果に影響する.
この戦略は,以下の点で最適化できます.
損失が拡大したときに自動的に停止する条件を設定します.
重要なニュースの判断を高め,重要なニュースの影響を回避する.
取引区間を拡大したり,パラメータを調整したりなど,特殊な状況に対する判断を増やす.
パラメータの組み合わせをテスト最適化し,最適のパラメータを探します.
機械学習アルゴリズムを追加し,AIをパラメータ最適化および市場判断に活用する.
偽突破を避けるために,量を増やすことが判断の指標となります.
顧客数の変化などの基本的な指標を組み合わせて
全体として,この均線交差戦略は,イチモク指数とSMA移動均線の優位性を統合して,比較して完全な株式取引戦略を形成している.この戦略は,トレンド判断能力が強く,トレンドの機会を効果的に捉えることができる.しかし,遅滞,複雑さ,停止の欠如などのいくつかの問題もあります.これは,この戦略に,大きな最適化スペースを与え,重要なニュース面を判断し,パラメータを最適化する手段を設定することによって,この戦略を継続的に改善し,安定した,信頼できる量化取引戦略にすることができる.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// strategy("Ichimoku+SMAsmoothed", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
//
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")
SMA1=input(title="SMA LONG",defval=21)
SMA2=input(title="SMA SHORT",defval=19)
p=ohlc4[1]
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
//plot(conversionLine, color=#0496ff, title="Conversion Line")
//plot(baseLine, color=#991515, title="Base Line")
//plot(close, offset = -displacement, color=#459915, title="Lagging Span")
//p1 = plot(leadLine1, offset = displacement, color=green,
// title="Lead 1")
//p2 = plot(leadLine2, offset = displacement, color=red,
// title="Lead 2")
//fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
ma1=sma(p, SMA1)
ma2=sma(p, SMA2)
p_a = ma1*2
p_b = ma1
p_c = p_a - p_b
p_d = p_c/24
p_e = ma2*2
p_f = ma2
p_g = p_e - p_f
p_h = p_g/24
closelong = ohlc4<ohlc4[SMA1] and ohlc4<ohlc4[1]// and leadLine1<leadLine2 and p_h<p_d
if (closelong)
strategy.close("Long")
closeshort = ohlc4>ohlc4[SMA1] and ohlc4>ohlc4[1]// and leadLine1>leadLine2 and p_h>p_d
if (closeshort)
strategy.close("Short")
longCondition = ohlc4>ohlc4[1] and leadLine1>leadLine2 and p_h>p_d
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = ohlc4<ohlc4[1] and leadLine1<leadLine2 and p_h<p_d
if (shortCondition)
strategy.entry("Short",strategy.short)