ATRの時間に基づく戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-29 16:13:57
タグ:

img

概要

この戦略の主なアイデアは,自動ストップ損失と利益を得るために時間とATR指標を組み合わせることです.この戦略は,購入または販売のための固定時間点でポジションを開き,合理的なストップ損失と利益を得るためにATR指標を使用します. これにより効率的な自動取引が可能になり,手動操作の頻度を削減し,ATR指標を通じてリスクを効果的に制御します.

戦略原則

この戦略は, tradeTime 戦略パラメータで指定された時間点で開設ポジションを起動するために,if 条件と組み合わせた時間と分間の変数を使用します.例えば,それを0700に設定すると,北京時間午前7時に開設ポジションを起動します.

ポジションを開いた後,戦略は,過去5分間のATR指標値を計算するためにta.atr() 関数を用いて,ストップ・ロストと取上げのベースとしてこれを使用します.例えば,購入後,取上げ価格 = 購入価格 + ATR値;販売後,取上げ価格 = 販売価格 - ATR値.

これは,時間点に基づいて自動開設,ATR指標に基づいてストップ損失と利益を引き出すことができます. これにより,手動操作の頻度を削減し,リスクを効果的に制御します.

利点分析

この戦略には以下の利点があります.

  1. 高度な自動化. 指定された時間に監視なしでポジションを開くことができ,手動操作の頻度を大幅に削減します.

  2. ATR指標に基づくストップ・ロストとテイク・プロフィートは,単一の損失を効果的に制御できます.ATR指標は,合理的なストップ・ロスト距離を設定するために,市場の変動を動的に把握できます.

  3. 高いスケーラビリティ.意思決定を支援するために,より多くの指標または機械学習アルゴリズムを組み合わせることは簡単です.例えば,動平均を組み合わせてトレンドを決定します.

  4. 商品間仲介を簡単に実装する. 簡単に分散取引戦略を実行するために,単に異なる製品のための同じ取引時間を設定します.

  5. 自動取引システムに簡単に統合できます. 計画されたタスク管理と組み合わせると,戦略プログラムは24時間監視なしで実行され,完全な自動化を実現できます.

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 市場イベントリスク 大規模なブラック・スワン・イベントは,極端な価格変動を引き起こし,ストップと大きな損失を引き起こす可能性があります.

  2. 流動性リスク.一部の製品は流動性が低く,利益の引き上げの限界点では完全に閉鎖できない.

  3. ATRパラメータの最適化リスク.ATRパラメータは繰り返しテストと最適化が必要で,不適切な設定は戦略のパフォーマンスに影響します.

  4. 時間点最適化リスク 固定営業時間は市場の機会を逃す可能性があります より多くの指標に基づいて調整する必要があります

戦略の最適化

この戦略は,次の次元でさらに最適化できます.

  1. 市場状況を判断するためにより多くの指標を組み合わせ,不利な環境での開店を避ける. 例えばMACD,RSIなど.

  2. 機械学習アルゴリズムを使用して最適な時間点を予測する.より多くの歴史的データを収集し,LSTMモデルなどを使用する.

  3. ハートビートのようなプラットフォームを使って 商品間仲介に拡大します 業界関連性に基づいて 機会を見つけます

  4. ATR パラメータを最適化し,バックテストによりストップ・ロスト/テイク・プロフィート設定を最適化します.

  5. サーバーで戦略を実行し タイムタスクを統合し 完全に自動化された24x7取引を達成し 監視なしに安定した利益を得ます

結論

この戦略は,効率的な自動ストップ損失と利益を取引取引を達成するために,タイミングとATRを統合している.パラメータ最適化によって,安定したアルファを得ることができる.また,推奨される量子戦略として大きなスケーラビリティと統合能力を持っています.


/*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)")


もっと