デュアルポジション・ブレークスルー戦略は,ロングとショートポジションを同時に設定することで,トレンド追跡と利益を得ることを実現する.この戦略は,ロングとショートポジションを同時に開設し,どちらの方向にもブレークスルーがあるときに利益を得ます.
この戦略の基本的な論理は
ポジションサイズを10%に設定するには パーセント変数を使用します
bar_index を使って,現在のバーが偶数か偶数か判断する.
オープンポジション,取利益,ストップ損失価格などの情報を含むwebhookメッセージを送信するために alert_message を使用します.
戦略.エントリーでショートポジションを開きます.
ショートを開いた後,Webフックメッセージを送信するためにアラートを使用し,閉店ポジション,利益とストップ損失価格などの情報を送信します.アラートを通じて前のロングポジションを閉じる.
この戦略は,両側にポジションを確立することによって,ロングサイドとショートサイドの両方で利益を得ることができます. どちらの方向にも突破が起こると利益を得ることができます. トレンド突破が起こると,正反対側が停止され,トレンドが続くことを認識しながら,確立したポジションを持つ側から利益を得ます.
この戦略の利点は次のとおりです.
市場が上下を問わず ポジションを開いて利益を得る機会があります 市場が上下を問わず
両側にポジションを確立することで,取引のために資本を完全に利用することができます. ポジションを1つの方向にしか持っていない場合,空き資本はありません.
双重ポジションを確立した後に 突破が起きたときに タイミングでトレンドを追うことができます
遅延ストップロスを採用し,適切なタイミングでストップアウトし,リスクをコントロールします
ウェブフックと交換APIで自動取引を実現します
この戦略にはいくつかのリスクもあります:
市場が範囲に限定されている場合,両ポジションが罠にかかる可能性があります.リスクを制御するために合理的なストップロスを設定する必要があります.
取引コストは高く 双方向開放により取引コストが上がります
商品の変動は高すぎたり低くなりもしない.
市場を注意深く観察し タイミングでポジションを調整する必要があります
ポジションのサイズを正確に設定する必要があります サイズが大きすぎるとリスクが高く 小すぎると利益が限られています
戦略は以下の側面から最適化できます.
異なる製品特性に基づいてポジションサイズを調整します.非常に揮発性のある製品ではサイズを小さくします.
ストップ・ロスのアルゴリズムを最適化して,不必要なストップ・ロスのトリガーを削減し,同時に効果的なストップ・ロスを確保する.
トレンドインデカーターを組み込み,全体的なトレンド方向,低取引頻度,コストを決定する.
ストップ・ロスの後に再開するポジションに再エントリー条件を追加します.
適正な価格で市場に参入するために,市場オーダーの代わりに制限オーダーを使用します.
ポジションサイズと口座サイズを動的に一致させるための資本管理を最適化します.
ダブルポジションブレークスルー戦略は,ダブル・ロング・ショート・ポジションを確立した後にブレークスルーが発生したときにトレンドをフォローすることで利益を得ます.資本をフル活用し,ブレークスルー機会を間に合うように把握できます.しかし,ダブル・ポジションが閉じ込められるリスクを防ぐ必要があります.合理的なストップ・ロストとポジション管理は重要です.継続的な最適化により,この戦略は非常に実践的なブレークスルーシステムになることができます.
/*backtest start: 2023-10-16 00:00:00 end: 2023-10-23 00:00:00 period: 30m basePeriod: 15m 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/ // © Crypto-Arsenal //@version=5 // strategy("Buy One Sell One", overlay = false, default_qty_type=strategy.percent_of_equity, default_qty_value=10) percent = str.tostring(10) cls = str.tostring(close) tp = str.tostring(strategy.position_avg_price * (1 + 0.1)) sl = str.tostring(strategy.position_avg_price * (1 - 0.1)) if(bar_index % 2 == 0) // DEMO FOR SENDING MESSAGE WITH alert_message() // NEED TO ADD {{{strategy.order.alert_message}} to Message field at Create Alert box // Add "limit" to open a LIMIT order instead of default MARKET alert_message = '{"action":"openLong","percent":"' + percent + '","profit":"' + tp + '","loss":"' + sl + '","connectorName":"YOUR_CONNECTOR_NAME","connectorToken":"YOUR_CONNECTOR_TOKEN","log":"Open Long at price:' + cls + '"}' strategy.entry('Enter Long', strategy.long, alert_message = alert_message) else // DEMO FOR SENDING MESSAGE WITH alert() strategy.entry('Enter Short', strategy.short) // Add "limit" to open a LIMIT order instead of default MARKET alert_message = '{"action":"closeLong","percent":"' + percent + '","profit":"' + sl + '","loss":"' + tp + '","connectorName":"YOUR_CONNECTOR_NAME","connectorToken":"YOUR_CONNECTOR_TOKEN","log":"Close long at price:' + cls + '"}' alert(alert_message, alert.freq_once_per_bar)