
この戦略の主な考えは,時間とATR指標を組み合わせて,自動化されたストップ・ロスを実現することです.戦略は,固定された時間点でポジションを開き,購入または販売し,ATR指標と組み合わせて合理的なストップ・ロスの価格を計算します.このようにして,効率的な自動化された取引を実現し,人工操作の頻度を低下させ,同時にATR指標を介してリスクを効果的に制御することができます.
この戦略は,hourとminuteの変数と組み合わせたif条件の判断を利用して,戦略パラメータtradeTimeで指定された時間点でポジション開設操作をトリガーします.例えば,0700に設定すると,北京時間午前7時に全会でポジション開設をトリガーします.
ポジションを開設した後,戦略はta.atr () 関数を使用してlast 5 min内のATR指標値を計算し,これをストップ・ストップの基礎として使用する.例えば,購入後にストップ・価格=購入価格+ATR値;販売後にストップ・価格=販売価格-ATR値.
これにより,タイムポイントベースの自動開設とATR指数に基づくストップ・ストップを実現する.これにより,人工操作の頻度が低下し,リスクが効果的に管理される.
この戦略は以下の利点があります.
自動化程度が高い。指定時間点で無人で自動で注文を担当し,人工操作の頻度が大幅に削減できる。
ATR指数に基づくストップ・ロスのは,単一の損失を効果的に制御する.ATR指数は,市場の変動の程度を動的に捉え,合理的なストップ・ロスの距離を設定する.
拡張性強. 意思決定を支援するために,より多くの指標や機械学習アルゴリズムを簡単に組み込むことができます. 例えば,平均線指標判断傾向を組み合わせます.
多品種アベリゲーションが容易なアベリゲーション 異なる品種に同じ取引時間を設定するだけで,契約を開くアベリゲーション戦略が容易に行うことができます.
自動化取引システムに簡単に統合できる.定時タスク管理と組み合わせて,24時間無人監視で戦略プログラムを実行し,完全な自動化取引を実現できる.
この戦略にはいくつかのリスクがあります.
市場突発のリスク. 大規模なブラック天候は,極端な価格変動を引き起こし,大きな損失を生じさせるため,停止を誘発する可能性があります.
標識の流動性リスク。一部の品種は流動性が悪くて,限値停止点で完全取引ができない,平仓停止ができない。
ATRパラメータの最適化リスク。ATRパラメータは繰り返しテストして最適化する必要があるので,大きすぎても小さすぎても,戦略の効果に影響する。
タイミングの最適化リスク. 固定開設時間は,市場チャンスを逃す可能性があり,より多くの指標の調整タイミングを組み合わせる必要がある.
この戦略は,以下の側面からさらに最適化できます.
市場状況を判断する指標を組み合わせて,不利な市場環境でポジションを開くのを避ける.例えば,MACD,RSIなど.
機械学習アルゴリズムを使用して最適な開場時間を予測する.より多くの歴史的データを収集し,LSTMなどのモデルトレーニングを行うことができる.
Heartbeatなどのプラットフォームを活用して,複数の品種を対象にアベरेजを展開する.
ATRパラメータとストップ・ストップ・損失の設定を最適化します.より多くの反復回測によって最適なパラメータを見つけることができます.
戦略をサーバーで実行し,タイムタスクを統合し,7x24時間完全に自動化して動作します.
この戦略はタイムポイントとATR指標を統合し,効率的な自動化ストップ・ストップ取引を実現する.パラメータ最適化により,安定したアルファを得ることができる.同時に,非常に強力な拡張性と統合能力を有し,推奨される量化戦略の1つである.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Time-based Strategy with ATR Take Profit Sell", overlay=true)
// Initialize take profit levels
var float takeProfitLevel = na
var float takeProfitLevelForSell = na
var float buyprice = na
var float sellprice = na
// Input for the time when the trade should be executed
tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings")
// Calculate ATR for the last 5 minutes
atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings")
atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength))
// Define conditions for buy and sell
buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0
sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0
// Execute Buy and Sell orders
// if (buyCondition)
// strategy.entry("Buy", strategy.long)
// buyprice := close
// takeProfitLevel := buyprice + atrValue
// strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel)
if (sellCondition)
strategy.entry("Sell", strategy.short)
sellprice := close
takeProfitLevelForSell := sellprice -atrValue
strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell)
// Plot horizontal lines for take profit levels
plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)")
plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")