ガンダルフの中間線に基づく定量取引戦略


作成日: 2023-10-30 10:27:40 最終変更日: 2023-10-30 10:33:17
コピー: 0 クリック数: 534
1
フォロー
1237
フォロワー

ガンダルフの中間線に基づく定量取引戦略

概要

ガンダルフ定量取引戦略は,中位線に基づくトレンド追跡戦略である.それは,重量平均,中位線,実物中間価格を計算することによって,現在のトレンドの方向を判断し,優越したエントリーポイントを探す.トレンド反転が検出されたとき,それは迅速に止損退出する.この戦略は,トレンド追跡とトレンド反転の戦略思想を組み合わせている.

戦略原則

ガンダルフ戦略の核心的な論理は,現在のトレンドの方向と強さを判断するために,重量平均価格,中位線と実体の中位価格の大きさの関係を比較することである.

具体的には,以下の価格で計算されます.

  • 平均価格: ((最高価格 + 最低価格 + 閉店価格 + 閉店価格) / 4
  • 中央値線: (最高価格 + 最低価格) / 2
  • 實体の中間価格: ((開場価格 + 閉場価格) / 2

入場時に,最初の2つのK線の重量平均値,中値線,実物の中間価格の大きさの関係を比較して,トレンド開始の特徴に適合するかどうかを判断する.

例えば,重量平均価格が中値線以下で,実物中間価格も重量平均価格より低ければ,価格が下落していることを示し,これは空調のチャンスである.

ストップアウト時に,この数値の大きさの関係を比較し,トレンドが逆転しているかどうかを判断する.重量平均価格が実体の中央価格より高く,中位線も重量平均価格より低い場合,トレンドが逆転していることを示し,すぐにストップアウトすべきである.

価格の大きさと大きい関係を比較するこの方法によって,Gandalf戦略はトレンドの判断と追跡を可能にします.それは良い入場時間を発見することも,トレンドの逆転を迅速に検出して損失を防ぐこともできます.

戦略的優位性

ガンダルフの戦略には以下の利点があります.

  1. 中位線を用いてトレンドの方向を判断し,市場のノイズを効果的にフィルターして,主要トレンドをロックすることができる.

  2. 入場条件は,価格の比較を組み合わせて,トレンドの開始をより確実に判断できます.

  3. ストップ・ロスの条件は,価格の比較を用い,トレンドの逆転を判断し,迅速にストップ・ロスをして,リスクをコントロールすることができる.

  4. 条件の単一で,理想的な価格の近くで入場できます.

  5. ストップの回数とポジションの上限を事前に設定して,収益をロックし,単一取引のリスクを制御できます.

  6. コード構造は明快でシンプルで,理解し,修正しやすい.

  7. パーソナル・リスク・プレファレンスに合わせてパラメータを調整し,簡単に最適化できます.

  8. トレンド品種に適用され,トレンドの利が得られます.

全体として,Gandalf戦略は,中値線を活用してトレンドを判断し,ストップ・ストップ・ロスの条件を設定し,リスクを追跡するトレンドを効果的に制御できる,信頼できるトレンドを追跡戦略です.

戦略リスク

ギャンダルフの戦略には,注意すべきいくつかのリスクがあります.

  1. トレンドフォロー戦略として,トレンドが目立たない場合や反転が頻繁に起こる場合,より少ない損失が生じます.

  2. 市場が変化しつつあると判断できず,損失が拡大する恐れがある.

  3. 市場を整理する上で,利回りは容易である.

  4. パラメータの設定によって,異なる品種はパラメータを調整する必要があります.

  5. 投資家は,投資の逆転を利得に利用できない.

  6. 条件単一の失敗率が高いので,入学待ち時間が長くなる可能性があります.

対応するリスク管理策:

  1. 小規模なポジションを導入し,単一の損失を制御します.

  2. ストップラインを設定し,急速なストップ. または,モバイルストップを導入し,ストップ位置を追跡する.

  3. 最適化パラメータを,現在の品種に適したものに調整する.他の指標によってトレンドを判断する補助的な.

  4. マチンゲル補給法でコストを削減できる

  5. 取引の種類は明らかに傾向があり,利潤は高信頼度である.

  6. 入学条件を適正に緩和し,入学確率も考慮する.

戦略最適化の方向性

ガンダルフの戦略は,以下の点で最適化できます.

  1. トレンド判断の指標を構成し,トレンドの逆転時期を補助する.例えば,MACD,ブリン帯などの判断に参加する.

  2. 離散最適化機能が追加され,パラメータを自動的に最適化して,より多くの品種に対応する.

  3. 機械学習アルゴリズムを追加し,歴史データからトレンド判断を訓練するニューラルネットワークまたはSVMモデル.

  4. 移動ストップ,指数移動ストップなど,止まる方法を追加します.

  5. 関連商品と組み合わせて,差差引数または統計引数を行う.

  6. 隠されたマルコフモデルに基づく状態予測に加わり,現状を判断する.

  7. 複合的戦略の構築,例えば均線的な戦略の組み合わせ,多戦略管理を実現する.

  8. ポートフォリオの最適化を探求し,その重みを見つけます.

全体として,Gandalf戦略は,トレンド判断,自動最適化,リスク管理など,複数のレベルで拡張および最適化され,戦略をより安定して信頼できます.

要約する

ガンダルフ定量化戦略は,価格比較に基づいてトレンドを判断するシンプルで効果的な戦略である.それは,トレンド追跡と急速なストップの思想を組み合わせて,リスクを効果的に制御することができる.この戦略の論理は明確で分かりやすく,個人のリスク好みに応じてパラメータを調整することができる.しかし,それは,一定の利益変動とポジション保有のリスクも存在し,適切な最適化管理が必要である.全体的に,ガンダルフ戦略は,安定したトレンド利益を追求するのに適した,信頼性の高い,容易に掌握し,最適化するトレンド追跡戦略である.

ストラテジーソースコード
/*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)