ガンドルフ定量取引戦略は,中間価格線に基づいた平均逆転戦略である.最適なエントリーポイントを見つけるために,重度の平均価格,中間価格線,ボディミッド価格を計算することによって現在のトレンド方向を決定する.トレンド逆転が検出されると,すぐに損失を削減し退出する.この戦略はトレンドフォローとトレンド逆転戦略のアイデアを組み合わせている.
ガンダルフ戦略の核心論理は,現在のトレンドの方向性と強さを判断するために,重度の平均価格,中間価格線,身体の中間価格との間の大きさの関係を比較することです.
具体的には,以下の価格を計算します.
ポジションに入ると,最初のトレンドの特徴に合致するかどうかを判断するために,重度の平均価格,中間価格ライン,最後の2つのバーの体中価格の大きさ関係を比較します.
例えば,重度の平均価格が中間価格線を下回り,体の中間価格も重度の平均価格を下回っている場合,それは価格が下がっていることを示し,ショートカットする機会を提示します.
損失を停止する際には,これらの価格間の大きさ関係を比較し続けて,トレンド逆転の兆候があるかどうかを判断します. 重度の平均価格がボディの中間価格よりも高く,中間価格線が重度の平均価格以下であれば,トレンド逆転を示し,直ちに損失を削減する必要があります.
価格の大きさ関係を比較することで,ガンダルフ戦略はトレンドの判断と追跡を実現する.最適なエントリータイミングを見つけ,損失を止めるためにトレンド逆転を迅速に検出することができます.
ガンダルフ戦略には次の利点がある:
傾向の方向性を決定するために中間価格線を使用することで,市場の騒音を効果的にフィルターし,主要な傾向をロックすることができます.
複数の価格比較を組み合わせたエントリー条件は,傾向の開始をより信頼的に決定することができます.
ストップ・ロスの条件は,トレンド逆転を判断するために価格比較も使用し,迅速なストップ・ロストとリスク管理を可能にします.
条件付き入国命令を 採用すれば 理想的な価格で入国できます
前もって設定された最大利益取得時間と保持期間上限は,利益を固定し,単一の取引リスクを制御することができます.
コード構造は 明確でシンプルで 分かりやすく 変更も容易です
パーマータは個人リスクの優先順位に基づいて調整できます 最適化が簡単です
トレンドの商品に適用され トレンドの利益を得ることができます
概要すると,ガンダルフ戦略は,トレンドを決定するために中間線を利用し,利益とストップ損失の条件を設定し,トレンドを追跡しながらリスクを効果的に制御することができ,信頼性の高いトレンドフォロー戦略になります.
ガンダルフ戦略には リスクもあります
傾向が不明で,あるいは反転傾向が頻繁である場合,より小さな損失を生む.
トレンド逆転ポイントを効果的に決定できず,損失が増える可能性があります.
市場に閉じ込められる傾向があります
パラメータ設定に依存し 異なる製品に合わせて 調整する必要があります
逆の傾向から利益を得られない
条件付きの注文の失敗率は高く 入場まで長い時間待たされるかもしれません
リスク管理対策
小規模なポジションのサイズ,部分的なエントリー,単一の損失を制御します.
ストップ・ロストラインを設定し,迅速ストップ・ロストを設定します.
現在の製品に合うようにパラメータを最適化する.傾向判断を支援するために他の指標を使用する.
マルティンゲールと低コストのベースを考慮してください
明らかに傾向のある商品を取引すれば 利益の信頼性が高まります
入国確率を高めるために 入国基準を適正に緩和する.
ガンダルフ戦略は,次の側面でも改善できる:
トレンド逆転のタイミングを決定するのに役立つトレンド判断指標を構築します.例えばMACD,ボリンジャー帯などを追加します.
パラメータを自動最適化し,より多くの製品に適応するために離散的な最適化機能を追加します.
機械学習アルゴリズムを増やし ニューラルネットワークやSVMモデルを 歴史的なデータで訓練して 傾向を判断します
パラボリック・プロフィート・テイクなどです.
スプレッド・トレーディングや 統計戦略のための関連商品を組み合わせる.
市場体制を判断するために Hidden Markov Modelに基づく状態予測を追加します.
多戦略管理のための移動平均戦略を組み合わせることなど 組み合わせた戦略を構築します
最適なポートフォリオ重量を見つけるために取引戦略の組み合わせの最適化を探求する.
概要すると ガンダルフ戦略は 傾向判断,自動最適化,リスク管理など 多岐にわたる次元で 拡張・最適化され 戦略が より堅牢で信頼性のあるものになります
ガンダルフ定量戦略は,トレンドを決定するための価格比較に基づいたシンプルで効果的な戦略である.トレンドフォローと迅速ストップロスのアイデアを組み合わせ,リスクを効果的に制御することができる.戦略論理は明確で理解しやすい,パラメータは個人のリスク好みに基づいて調整することができます.しかし,いくつかの利益変動と保有リスクもあります.適切な最適化と管理が必要です.全体として,ガンダルフ戦略は,安定した利益を追求するのに適した,信頼性があり,理解し,最適化しやすいトレンドフォロー戦略です.
/*backtest start: 2023-10-22 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // The GandalfProjectResearchSystem strategy, as discussed in // “System Development Using Artificial Intelligence” // by Domenico D’Errico and Giovanni Trombetta strategy("Gandalf Project Research System", overlay=true) // Inputs Quantity = input(0, title="Quantity (0 to auto calc)") Single_Trade_Money = input(10000, minval=1, title="Money to spend on single trade") MaxProfitCloses = input(6, minval=1, title="Max Profit Close") MaxBars = input(8, minval=1, title="Max Total Bars") Enter_Gap = input(-0.08, title="Distance from low price to place entry limit") AltExit = input(true, title="Use Alt Exit") // Calculate Order Quantity Ncon = Single_Trade_Money / close // Misc Variables src = close BarsSinceEntry = 0 MaxProfitCount = 0 MedBodyPrice = (open + close) / 2.0 Weighted = (high + low + close + close) / 4.0 Median = (high + low) / 2.0 // Enter Conditions Cond00 = strategy.position_size == 0 Cond01 = ((Weighted[1] < Median[1] and Median[2] <= Weighted[1] and MedBodyPrice[2] <= Weighted[3]) or (Weighted[1] < Median[3] and MedBodyPrice[0] < Median[2] and MedBodyPrice[1] < MedBodyPrice[2])) Entry01 = Cond00 and Cond01 // Update Exit Variables BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1 MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1]) // Exit Conditions eCond01 = BarsSinceEntry - 1 >= MaxBars eCond02 = MaxProfitCount >= MaxProfitCloses eCond03 = ((Weighted[1] < MedBodyPrice[1] and Median[2] == MedBodyPrice[3] and MedBodyPrice[1] <= MedBodyPrice[4]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1]) or (Weighted[2] < MedBodyPrice[0] and Median[4] <= Weighted[3] and MedBodyPrice[1] <= Weighted[1])) eCond04 = AltExit ? true : close - strategy.position_avg_price < 0 Exit01 = not Cond00 and (eCond01 or eCond02 or (eCond03 and eCond04)) // Entries strategy.entry(id="L1", long=true, limit=low + Enter_Gap, qty=(Quantity > 0 ? Quantity : Ncon), when=Entry01) // Exits strategy.close("L1", Exit01)