定時注文戦略の主な考えは,ユーザがカスタマイズした時間点での買入と売却の操作である.この戦略は,ユーザが正確な時間点を設定し,その時点で現在の所持ポジションを最初に売却し,現在の価格より1%低い価格で制限価格で購入することを可能にする.これにより,毎日の特定の時間に定期的な再配置が可能である.
この策略は,まず,input関数でユーザのカスタマイズされた時間と分を取得し,それからtimestamp関数を使用して注文実行時間を生成します.現在の時間は指定された時間点の後であれば,売り買い操作を誘発します.
具体的には,戦略はまず,現在の時刻がユーザが指定した開始日と終了日の範囲にあるかどうかを判断する.もし満たされれば,指定された注文実行時間点に達した時点で,先行価格で現在の所持ポジションを売却し,その後,現在の価格の99%で制限価格で購入する.このようにして,特定の時間点において現在の価格より1%低い価格で再調整を行うことが実現する.
この戦略の最大の利点は,定期的に特定の時間点でポジションを再調整することがあり,人工操作を必要とせず,人為的なコストを減らすことです.また,現在の価格よりわずかに低い価格で購入するたびに,一定の超低買い優位を得ることができます.
具体的には以下の通りです.
作業を完全に自動化し,労働コストを削減します.
定期的に特定の時間点でポジションを調整できます.
取引先は,取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先の取引先である.
カスタマイズ可能な時間帯,柔軟な調整.
調整周期の開始と終了日をカスタマイズして,最適化に追及できます.
この戦略にはいくつかのリスクがあります.
定期調停のタイミングを間違えたら,良い買い取りのタイミングを逃したり,不適切なタイミングで売ったりするかもしれない.
購入価格が販売価格よりわずか1%以下である場合,各調停周期で十分な超低購入価格差が得られない可能性があります.
市場価格で買ったり売ったりすると, 滑りやすい影響があるかもしれません.
策略が特定の時間点のみで動作する場合は,その時間点の間には市場を管理することはできません.
定期的な取引により,取引費用が増加します.
対応方法:
適切な調停のタイミングを選択し,他の技術指標と組み合わせて判断する.
購入価格差のパラメータは,必要に応じて追加することができます.
できるだけ深度が良い,波動が少ない取引品種を選択してください.
リスク管理は,他の戦略と連携して,非調停期間に行われます.
調停頻度を適切に制御し,調停優位と取引費用をバランスさせる.
この戦略は以下の方向から最適化できます.
取引品種の日内周期特性を組み合わせて最適のタイミングを選択する.
他の技術指標の判断を追加し,不利な時にポイントを移転するのを避ける.例えば,移動平均などのトレンド判断指標を組み合わせる.
超低買入パラメータを最適化して,優位性と取引コストをバランスさせる.
トラッキング・ストップ・ストップを採用し,収納間隔でポジションを管理する.
機械学習アルゴリズムと組み合わせて,過去データで訓練し,自動で調停のタイミングを最適化します.
株式分割,株利等に合わせて調整ポイントを設定する機能が追加されました.
全体的に見ると,定時注文戦略は,定期的なポジション調整によって取引プロセスを自動化し,人工操作コストを削減することができる.戦略の最適化スペースは大きい.調停のタイミングの選択,購入パラメータの設定,損失の停止,およびアルゴリズムの最適化などの面から向上することができる.また,特定の取引リスクに注意し,適切なリスク管理措置をとる必要がある.全体的に見ると,この戦略は,高効率の自動調停ポジションを追求する量化トレーダーに適している.
/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
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/
// © ytrevor
//@version=4
strategy("Order At Specified Time", overlay=true)
// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time
inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input
// -- These inputs are for back testing. Feel free to change the start and end dates via input -- //
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)
betweenDates = true
// -- Order execution -- //
if betweenDates
buyPrice = close*0.99 //Buy at 1% lower than selling price
strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price