この戦略の主な考え方は,トレンドをフォローして月曜日の日内逆転から利益を得ることです.
基本的な論理は
月曜日かどうか確認します. そうだとしたら次のステップに進みます.
上昇傾向の逆転パターンが存在するかどうかを特定する - 閉じる[1] <閉じる[2]および閉じる[2] <閉じる[3];
逆転パターンが確認された場合,トレンドをフォローするために3番目のバーの閉じる時にロングに行く.
今日高値が破られたり,ストップ・ロスが切られたりすると退場します.
6時間後 接近位置
戦略は月曜の逆転を活用し 利潤の相対的な低点で 長期化するための逆転パターンを特定し リスクを制御するためにストップ損失を設定します
最大の利点は以下の通りです
特定の期間の月曜回転による利益
明らかに反転したキャンドルスタイクパターンからの入力信号
リスクをコントロールするために ストップ・ロストと利益を引き継ぐ
トレンドフォローアプローチは利益を最大化します
シンプルでわかりやすい論理
いくつかのリスクがあります:
負債の負債の負債の負債の負債の負債
ストップ・ロスを引き起こすエントリー後,価格は引き下げられる.
市場が突然変化すると,大きなストップ損失が発生する可能性があります.
長期にわたって保有しても損失が生じます
ストップ・ロスを最適化し 待機時間を短縮し 単一のロスの大きさを制御します
戦略は以下によって改善できます.
機械学習を使用して逆転をより正確に識別する
トレイリングストップや部分ストップ損失などのストップ損失戦略の最適化
傾向の強さを判断するためのより多くの要因を組み込むこと
保持時間を動的に調整する.
最適パラメータを見つけるためのアルゴリズムを使用する.
双方向取引のポジション切り替えを追加する
勝率と収益性を高めることができます
結論として,この戦略は,月曜日の逆転を資本化し,明確なエントリー/エグジットルールを適用し,単純なトレンドフォロー戦略を実装する.固定ストップ損失/取利益よりもより良い結果を達成することができる.市場の不確実性を解決するためにさらなる最適化が必要である.この戦略は日中取引の基準を提供します.
/*backtest start: 2023-10-06 00:00:00 end: 2023-11-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ET Forex TurnaroundMonday", overlay=true) FirstYear = input(2018, minval=2000, maxval=2023, step=1) FirstMonth = 1 //input(1, minval=1, maxval=12, step=1) FirstDay = 1 //input(1, minval=1, maxval=31, step=1) deltaDay = input(0) StartHour = input(0) f_barssince(_cond, _count) => _barssince=bar_index-valuewhen(_cond, bar_index, _count) HoldTime = input(6, step=1) MM = input(1) startHour = input(-7, step=1) endHour = input(34, step=1) exitHour = input(30, step=1) startdateCond = (year > FirstYear or (year == FirstYear and (month > FirstMonth or (month == FirstMonth and dayofmonth >= FirstDay)))) iHour = hour if iHour > 19 iHour := iHour-20 else iHour := iHour+4 timeCondition = true //(iHour>=startHour and iHour<=endHour and iHour<=exitHour) since_flat_condition = strategy.position_size == 0 entryPrice=strategy.position_avg_price EntryLongCondition = dayofweek == (dayofweek.monday+deltaDay) and close[0] < close[1] and close[1]<close[2] and startdateCond //and timeCondition and iHour > StartHour ExitTimeCondition = false//(f_barssince(since_flat_condition, 0)>=HoldTime) ExitLongCondition = strategy.position_size > 0 and (close[0] > high[1])// or close[0]< entryPrice-abs(close[1]-close[2])*0.2)//(ExitTimeCondition) //iHour >= exitHour or strategy.initial_capital =50000 // MM Block lots = if MM < 2 strategy.initial_capital else strategy.equity lots := lots/close entryPrice:=strategy.position_avg_price strategy.close("ETLong",when=(ExitLongCondition==true)) strategy.entry("ETLong", strategy.long, qty=lots, comment="OpenLong",when=(EntryLongCondition==true))