この戦略は,各グリッド層間の開始価格とパーセントを設定することで固定グリッド取引アプローチを採用します.その後,低購入高販売グリッド取引戦略を実行するために,パーセントに基づいて10の固定購入販売価格を計算します.
この戦略では,まずスタート価格とグリッド距離の割合を設定し,スタート価格とパーセントに基づいて10層の購入価格と販売価格を計算します.
購入価格公式:
b1=sprice-(sprice*p1) について
b2=sprice- ((sprice*p2))
b3=スパイス-(スパイス*p3)
…
p1~p10 は,グリッドパーセントに基づいて層ごとに計算される割合である.
販売価格公式:
s1=b1+(sprice*p1)
s2=b2+(sprice*p1)
s3=b3+(スパイス*p1)
…
購入条件は,閉じる価格が購入価格より低いときに起動します.
if (close
strategy.entry (戦略.エントリー,戦略.長期,いつ= (閉じる
同じように,閉じる価格が販売価格より高くなる場合,販売条件が起動します.
if (close>s1)
strategy.exit("b1", when=(close>s1)) と表示される
これは低価格で高価格で販売するネットワーク取引戦略を実装している.
固定電網戦略には以下の利点があります
市場のタイミングを考慮せずに低価格で高価格で売れるので 取引の難易度は低下します
適切なグリッド距離を設定することで リスクを効果的に制御し 追いかけるのを避けることができます
市場が上下に関わらず 収益性がある
ネットワークパラメータを異なる市場状況に合わせて調整する柔軟性
格子層を追加して位置サイズを拡大します
ストップロスの導入は 極端な市場イベントで 大きな損失を回避します
この戦略にはいくつかのリスクもあります:
取引手数料は 範囲限定市場での利益を消費します
不適切なスタート価格とグリッド設定は損失につながる.
価格格差は極端な状況で損失を引き起こす可能性があります
機械取引にはオーダー挿入リスクがある.
集中した出来事により損失が増える
解決策:
ネットワークパラメータを最適化して 利益 >手数料を確保する
最適のスタート価格とグリッド距離を見つけるためのバックテスト
ストップ・ロスをリスク制御に追加します
オーダー価格を緩めて 挿入を避ける
最大損失を制限するようにリスクコントロールを設定します
戦略は以下の方法で強化できます.
格子距離を動的に調整します
動的に開始価格を設定する価格範囲を計算する.
MLモデルを追加して価格を予測しグリッドを調整します
ストップ・ロスをストップ・ロスのポイントに基づいて最適化します
利益レベルに基づいてポジションのサイズを組み込む.
ポジション管理を最適化して 資本活用を最大化します
TWAP を使って実行を改善し,影響コストを削減する.
この戦略は,スタート価格とグリッドパーセントに基づいて購入・販売価格を設定することで,固定グリッド取引を実施し,自動低購入・高販売を達成する. 利潤ロックと損失管理のためのパラメータ,ダイナミック調整,ストップ損失を最適化することでリスクを管理することが重要です. 先進的なMLとマネーマネジメント技術を組み込むことで,戦略の収益性と勝利率をさらに向上させることができます.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h 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/ // © Lionkind //@version=5 strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1) // Fix 35k price as starting point and 1% as a distance sprice=input(40500,"Starting price") gridpercent=input(1,"Percent") // calculate the % of the 10 layers p1=((gridpercent*1)/100) p2=((gridpercent*2)/100) p3=((gridpercent*3)/100) p4=((gridpercent*4)/100) p5=((gridpercent*5)/100) p6=((gridpercent*6)/100) p7=((gridpercent*7)/100) p8=((gridpercent*8)/100) p9=((gridpercent*9)/100) p10=((gridpercent*10)/100) //set buy prices b1=sprice-(sprice*p1) b2=sprice-(sprice*p2) b3=sprice-(sprice*p3) b4=sprice-(sprice*p4) b5=sprice-(sprice*p5) b6=sprice-(sprice*p6) b7=sprice-(sprice*p7) b8=sprice-(sprice*p8) b9=sprice-(sprice*p9) b10=sprice-(sprice*p10) //set sell prices s1=b1+(sprice*p1) s2=b2+(sprice*p1) s3=b3+(sprice*p1) s4=b4+(sprice*p1) s5=b5+(sprice*p1) s6=b6+(sprice*p1) s7=b7+(sprice*p1) s8=b8+(sprice*p1) s9=b9+(sprice*p1) s10=b10+(sprice*p1) //Long conditions lc1=close<b1 lc2=close<b2 lc3=close<b3 lc4=close<b4 lc5=close<b5 lc6=close<b6 lc7=close<b7 lc8=close<b8 lc9=close<b9 lc10=close<b10 //exit conditions ec1=close>s1 ec2=close>s2 ec3=close>s3 ec4=close>s4 ec5=close>s5 ec6=close>s6 ec7=close>s7 ec8=close>s8 ec9=close>s9 ec10=close>s10 //long orders if (lc1) strategy.entry("b1", strategy.long, when=(lc1)) if (lc2) strategy.entry("b2", strategy.long, when=(lc2)) if (lc3) strategy.entry("b3", strategy.long, when=(lc3)) if (lc4) strategy.entry("b4", strategy.long, when=(lc4)) if (lc5) strategy.entry("b5", strategy.long, when=(lc5)) if (lc6) strategy.entry("b6", strategy.long, when=(lc6)) if (lc7) strategy.entry("b7", strategy.long, when=(lc7)) if (lc8) strategy.entry("b8", strategy.long, when=(lc8)) if (lc9) strategy.entry("b9", strategy.long, when=(lc9)) if (lc10) strategy.entry("b10", strategy.long, when=(lc10)) //exit orders if (ec1) strategy.exit("b1", when=(ec1), limit=1) if (ec2) strategy.exit("b2", when=(ec2), limit=1) if (ec3) strategy.exit("b3", when=(ec3), limit=1) if (ec4) strategy.exit("b4", when=(ec4), limit=1) if (ec5) strategy.exit("b5", when=(ec5), limit=1) if (ec6) strategy.exit("b6", when=(ec6), limit=1) if (ec7) strategy.exit("b7", when=(ec7), limit=1) if (ec8) strategy.exit("b8", when=(ec8), limit=1) if (ec9) strategy.exit("b9", when=(ec9), limit=1) if (ec10) strategy.exit("b10", when=(ec10), limit=1) plot(b1,color=color.green) plot(s1, color=color.red) plot(b2, color=color.purple)