この戦略は,二重移動平均をベースとしたストップ損失戦略である. 2つの移動平均を使用し,そのうちの1つはメイン移動平均と1つはストップ損失ラインである. 価格がメイン移動平均以上になると,ロングに行く. 価格がストップ損失ライン以下になると,ロングポジションを閉じる. 価格がメイン移動平均以下になると,ショートに行く. 価格がストップ損失ライン以上になると,ショートポジションを閉じる. ロングとショート価格を動的に調整することによってストップ損失を達成し,利益を得ます.
この戦略は,長さ len の単純な移動平均をメイン移動平均線 ma として計算するために sma 関数を使用します. その後,ユーザー入力した長ストップ損失パーセント elpercent と短ストップ損失パーセント espercent により,長ストップ損失線 el と短ストップ損失線 es を計算します. 具体的な式は:
el = ma + (ma * elpercent / 100) es = ma + (ma * エスペラント / 100)
ここで,elpercentとespercentは,主要な移動平均線から偏ったパーセントを表します.
長ストップ・ロスの線elと短ストップ・ロスの線esです.
戦略の取引論理は次のとおりです
閉じる価格がロングストップ・ロスの線 (el) を上回る場合はロング・ポジションを開く.閉じる価格がショート・ストップ・ロスの線 (es) を下回る場合はロング・ポジションを閉じる.
閉じる価格がショートストップ・ロスの線es以下なら,ショート・ポジションを開く.閉じる価格がロングストップ・ロスの線el以上なら,ショート・ポジションを閉じる.
ストップ・ロストとテイク・プロフィートポイントを設定するためにダブル・ムービング・平均値を使用することで リスクを効果的に制御できます
メイン移動平均の長さ len とオフセットパーセント elpercent と espercent はカスタマイズ可能で,異なる市場に調整され,うまく適応できます.
ストップ・ロスのメカニズムは,時間をかけて損失を削減し,さらなる損失を防ぐことができます.
戦略の論理はシンプルで明快で 分かりやすく実行し 初心者にも適しています
双方向市場を利用するには 長くても短くても良いのです
バックテスト過適度リスク.移動平均戦略はバックテストデータに過適性傾向があります.実際のパフォーマンスは異なる可能性があります.解決策は,複雑なライブ市場で検証し,それに応じてパラメータを調整することです.
ストップロスの距離があまりにも近いリスク.ストップロスがメイン移動平均値にあまりにも近い場合,短期的な価格変動によって引き起こす可能性があります.これを避けるためにストップロスの距離を増加してください.
双方向取引による資本圧力. 長期取引とショート取引の両方には十分な利益率が必要である. 資本圧力を制御するためにポジションサイズを減らす.
パラメータ最適化リスク.最適なパラメータは,異なる市場条件によって大きく異なります.パラメータを最適化するには時間が必要です.パラメータ最適化を支援するために機械学習を使用できます.
市場動向を決定し,意思決定を改善するために,より多くの指標を追加することを検討してください.例えば,量価格指標,変動指標.
市場変化に基づいて移動平均長さとストップ損失パラメータの自動最適化研究
取引手段のフィルタリングを追加し,明らかなトレンドのみを取引する.
固定ストップ・ロスの代わりに リアルタイム価格に基づいてストップを調整することを検討します
バックテストの結果を介して自動的に最適なパラメータセットを見つけるパラメータ最適化のための評価システムを構築する.
この戦略の全体的な論理は明確で理解が容易である.ストップ損失のために二重移動平均を使用し,リスクを効果的に制御することができる.この戦略には,カスタマイズ可能なパラメータと適応性などの利点があるが,注意を必要とするバックテストオーバーフィットやストップ損失距離設定などのリスクもあります.さらなる最適化により,この戦略はライブ取引のために実行可能な効果的なストップ損失戦略になり得ます.それはアルゴリズム取引初心者の出発点として適しており,最終的にはユニークな取引システムを形成するために実践を通じて継続的に改善することができます.
/*backtest start: 2022-11-08 00:00:00 end: 2023-11-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Robot WhiteBox StopMA", shorttitle = "Robot WhiteBox StopMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(false, defval = false, title = "Short") len = input(50) src = input(ohlc4) elpercent = input(5.0, minval = 0, maxval = 100, title = "Shift long, %") espercent = input(-5.0, minval = -100, maxval = 0, title = "Shift short, %") showlines = input(true, defval = true, title = "Show lines") showbg = input(true, defval = true, title = "Show background") //Levels ma = sma(src, len) el = ma + ((ma / 100) * elpercent) es = ma + ((ma / 100) * espercent) //Lines colel = showlines ? color.lime : na colma = showlines ? color.blue : na coles = showlines ? color.red : na plot(el, color = colel, offset = 1) plot(ma, color = colma, offset = 1) plot(es, color = coles, offset = 1) //Background trend = 0 trend := high > el[1] ? 1 : low < es[1] ? -1 : trend[1] colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na bgcolor(colbg, transp = 80) //Trading if ma > 0 strategy.entry("Long", strategy.long, needlong ? na : 0, stop = el) strategy.entry("Short", strategy.short, needshort ? na : 0, stop = es)