オーシャンセオリーグリッド取引戦略
概要
この戦略は,海洋理論の格子取引方法を適用し,設定された価格範囲内で均等に分布した格子線,価格と格子線の関係に応じて買いと売却の操作を行う.この戦略は,格子価格区間を自動計算し,均等に分布した格子線などの特性を有し,リスクを効果的に制御することができる.
戦略原則
この戦略は,まず,ユーザが選択したまたはデフォルトで設定した価格格子の上下限,すなわち格子の最高価格と最低価格を計算する.計算方法は2つある.一つは,反測周期内の最高価格と最低価格を見つけること,二つは,一定の周期の平均値を計算すること.そして,ユーザが設定した格子数に基づいて均等に分布した格子線である.
取引シグナルの生成は,価格と格子線との関係に依存する.価格が格子線の下にあるとき,その格子線で固定数量でポジションを多く開く.価格が格子線上にあるとき,その格子線で固定数量で平仓する.このように,価格の波動とともに,ポジションも格子内で波動し,利益を上げることができる.
具体的には,格子線価格配列と,各格子線に掛札があるかどうかを示す bool配列を格子線で維持する. 価格が特定の格子線より低く,その格子線に掛札がないときは,その格子線で多額の取引を行う. 価格が特定の格子線より高く,その格子線の下側には掛札があるときは,その格子線の下側で平仓する.
戦略的優位性
-
格子間隔を自動計算し,手動設定の困難を回避する.異なる計算方法を選択できる.
-
格子線を均等に分布し,格子密度が過度な取引を引き起こすのを避ける。格子線の数を調整できる。
-
格子取引法により,リスクは効果的に管理され,格子内の価格変動は常に利益を得ることができます.
-
価格の方向性に関する予測は,震動状況に適用されます.
-
取引の種類に応じて手数料とポジション数をカスタマイズできます.
-
格子線を視覚化して,取引の状況を簡単に把握できます.
戦略リスク
-
格子区間を突破するリスク.格子上の下限を突破すると損失が拡大する.
-
格子間隔が緩すぎるとリスクがある.格子が広くすぎると利益は得られないが,狭すぎると手数料が増加する.バランスが必要である.
-
長期にわたって保有するリスク 長期にわたって保有するリスクは,利潤を得ることが困難ですが,手数料の損失を増加させます.
-
パラメータ設定不適切なリスク. 回測周期や平均線周期などのパラメータ設定不適切なことは,格子間隔計算に影響を与える.
-
市場における体系的リスク.この戦略は,長期にわたる一方的な行動よりも,震動的な行動に適している.
戦略の最適化
-
格子パラメータの設定を最適化する.市場特色,取引コストなどの要素を総合的に考慮し,格子数の最適化,再測定周期などのパラメータ.
-
格子区間を動的に調整する.市場が大きく変化したときに,格子区間を動的に調整するメカニズムを導入することができる.
-
ストップメカニズムに参加する.合理的なストップラインを設定し,過大な損失を避ける.ストップラインは動的に調整することもできる.
-
他の指標のフィルター取引と組み合わせる. ブリンライン,トレンド指標など,不適切な取引を避ける.
-
資金利用効率の最適化. 熱冷分析に加入し,波動が少ない時に取引を減らす.
要約する
この戦略は,グリッド取引原理を利用して,リスクが制御可能な揺動的な状況取引を実現する.この戦略は,自動計算グリッド,均等な分布グリッドなどの利点があり,パラメータを調整することで異なる市場環境に適応することができる.この戦略は,リスクが制御可能であり,操作が容易である.しかし,戦略には一定の制限があり,市場の変化に適応するために継続的に最適化する必要がある.全体的に,この戦略は,グリッド取引に比較的標準化され,パラメータ可能となる実現方法を提供する.
/*backtest
start: 2023-09-12 00:00:00
end: 2023-10-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("(IK) Grid Script", overlay=true, pyramiding=14, close_entries_rule="ANY", default_qty_type=strategy.cash, initial_capital=100.0, currency="USD", commission_type=strategy.commission.percent, commission_value=0.1)
i_autoBounds = input(group="Grid Bounds", title="Use Auto Bounds?", defval=true, type=input.bool) // calculate upper and lower bound of the grid automatically? This will theorhetically be less profitable, but will certainly require less attention
i_boundSrc = input(group="Grid Bounds", title="(Auto) Bound Source", defval="Hi & Low", options=["Hi & Low", "Average"]) // should bounds of the auto grid be calculated from recent High & Low, or from a Simple Moving Average- 1
