
基平均線回環策は,イチモク雲図指標の基平均線 ((Kijun Sen) を利用し,価格と基平均線の交差によって多空をすることが,トレンドフォロー戦略の1つである. この戦略は,基平均線の回環を通してトレンドの転換点をキャプチャし,トレンドキャプチャ能力が強く,逆戻り制御が可能である.
基平均線回転策は,イチモク雲図の基平均線 ((Kijun Sen) を意思決定の基準線として使用する.基平均線は,一定の周期における最高価格と最低価格に基づいて計算された平均線である.価格が基平均線上から下から穿越するとき,多行し,価格が基平均線上から下から穿越するとき,空行する.このように,基平均線の回転を利用して価格トレンドの転換点を判断し,トレンドフォローを実現する.
具体的には,戦略は,Base LongとBase Shortの2つの条件によってベース平均線の回転を判断する. ベースロング条件は,開場価格がベース平均線より低く,閉場価格がベース平均線より高く,ベース平均線の上穿越を表す. ベースショート条件は,開場価格がベース平均線より高く,閉場価格がベース平均線より低い,ベース平均線下穿越を表す.
この戦略は,基本平均線の回転を利用して,価格トレンドの転換点を捉え,トレンドフォローを実現します.
基平均線回転策には以下の利点がある.
トレンド転換を捕捉する能力が強い。基平均線は価格トレンドをよく反映し,その輪は価格トレンドの転換を表し,戦略はタイムリーに転換点を捕捉し,トレンドフォローを実現する。
撤回リスクは制御可能である. 戦略は基平均線によって撤回範囲を制限し,単純な移動平均戦略よりも撤回リスクは制御可能である.
実行は簡単です. この戦略は基底平均線の1つの指標のみを必要とし,論理はシンプルでわかりやすく,実行は簡単です.
適用範囲は広い.異なる周期および様々な主流取引品種に適用でき,適用面は広い.
データの需要は小さい.この戦略は価格データのみを必要とし,大量の指標計算を必要とせず,データの需要は小さい.
ベース・アヴェン・ラウンド戦略には以下のリスクがあります.
取引信号が過剰に発生しやすい. ベース平均線が頻繁に回転している場合,取引が頻発し,取引費用が増加し,滑り点の損失を引き起こす.
撤回制御能力は限られている.基平均線は撤回範囲を一定程度制御できるが,価格が激しく波動する時には,撤回は依然として大きいかもしれない.
誤信号が生じやすい。基平均線が近期で頻繁に上下を横切るとき,誤信号が生じ,入場方向がトレンドと合わない。
効果と品種関連性が大きい。異なる品種の基平均線は効果の差が大きいので,品種に応じてパラメータの調整が必要である。
単一の指標のみを考慮する.単一の指標に基づいて設計され,指標の失効の影響を受けやすい.
対応方法:
取引の頻度を下げるためのパラメータを最適化する.
ストップ・ダメージ・ストップ・ストップの戦略を追加し,撤退をさらに制御する.
フィルターで誤った信号を回避する.
種別調整パラメータの設定
複数の指標を組み合わせて意思決定する
基平均線回転策は以下の点で最適化できる.
トレンド判断能力を強化する.MACD,ブリンラインなどの他のトレンド判断指標を導入して,単一の指標に基づいて誤った信号を避ける.
最適化パラメータ設定。 基平均線パラメータを調整することで,利回り速度と勝率をバランスさせることができる。 また,異なるストップ・ロスト・ストップ戦略をテストすることもできる。
取引量特性を導入 取引量に応じて信号をフィルタリングし,不合理な信号を回避する
多種共通パラメータ.機械学習などの方法により,異なる品種共通パラメータの範囲を取得し,人工調度作業を減らす.
入学タイミングを最適化します.判断力に関する他の指標を導入し,入学タイミングを最適化できます.
停止損失戦略の最適化 勝利率を保証する前提で,不要な停止損失を最小限に抑えるため,さらに停止損失戦略の最適化
リスク管理メカニズムを導入する.異なる市場環境に応じてポジションとストップ損失戦略を調整し,リスクを積極的に制御する.
基平均線回転策は,基平均線の回転判断価格トレンドを利用し,トレンドの転換,撤回を制御するなどの優位性を持っています. しかし,誤信号,撤回制御の制限などのリスクもあります. 将来,最適化パラメータの設定,補助判断指標の追加などの面で改善され,戦略をより安定して信頼性のあるものにすることができます. 全体的に,基平均線策は,よりシンプルで実用的で,適切な最適化後に,量化取引の基本策の1つになることができます.
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Master VP","MVP",true)
//INDICATOR---------------------------------------------------------------------
//Average True Range (1. RISK)
atr_period = input(14, "Average True Range Period")
atr = atr(atr_period)
//Ichimoku Cloud - Kijun Sen (2. BASELINE)
ks_period = input(20, "Kijun Sen Period")
kijun_sen = (highest(high, ks_period) + lowest(low,ks_period))/2
base_long = open < kijun_sen and close > kijun_sen
base_short = open > kijun_sen and close < kijun_sen
//TRADE LOGIC-------------------------------------------------------------------
//Long Entry
//if -> WPR crosses below -39 AND MACD line is less than signal line
l_en = base_long
//Long Exit
//if -> WPR crosses above -14
l_ex = close < kijun_sen
//Short Entry
//if -> WPR crosses above -39 AND MACD line is greater than signal line
s_en = base_short
//Short Exit
//if -> WPR crosses under -14
s_ex = close > kijun_sen
strategy.initial_capital = 50000
//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(4,"Risk %")/100 //risk % per trade
equity_protector = input(30,"Equity Protection %")/100 //equity protection %
stop = atr*100000*input(1.5,"Average True Range multiplier") //Stop level
target = input(100, "Target TP in Points") //TP level
//Calculate current DD and determine if stopout is necessary
equity_stopout = false
if(floating<0 and abs(floating/balance)>equity_protector)
equity_stopout := true
//Calculate the size of the next trade
temp01 = balance * risk //Risk in USD
temp02 = temp01/stop //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
size := 1000 //Set min. lot size
//TRADE EXECUTION---------------------------------------------------------------
strategy.close_all(equity_stopout) //Close all trades w/equity protector
is_open = strategy.opentrades > 0
if true
strategy.entry("l_en",true,oca_name="a",when=l_en and not is_open) //Long entry
strategy.entry("s_en",false,oca_name="a",when=s_en and not is_open) //Short entry
strategy.exit("S/L","l_en",loss=stop, profit=target) //Long exit (stop loss)
strategy.close("l_en",when=l_ex) //Long exit (exit condition)
strategy.exit("S/L","s_en",loss=stop, profit=target) //Short exit (stop loss)
strategy.close("s_en",when=s_ex) //Short exit (exit condition)
//PLOTTING----------------------------------------------------------------------
plot(kijun_sen,"Kijun-Sen",color.blue,2)