トレンドフォローグリッド戦略


作成日: 2023-12-08 12:05:17 最終変更日: 2023-12-08 12:05:17
コピー: 0 クリック数: 1241
1
フォロー
1621
フォロワー

トレンドフォローグリッド戦略

概要

この策略は,空白をしないだけで多行をすること,大トレンドの上昇期間のトレンド追跡網策である.デフォルトの格子サイズはATRの1倍,下行追跡は1,2,3の格子を設立し,第5格のストップを追記する.空置時に価格が上格子に突破した場合,全格子が向上して追跡価格を移動する.

戦略原則

  1. EMA平均線を用いて大トレンドの方向を判断し,EMA12がEMA144より大きい場合は大トレンドの上昇と判断する.
  2. 市場が上昇する時だけ ポジションを開けましょう
  3. 格子サイズはATRの1倍で,倍数を調整できます.
  4. 価格を下向きに追跡する1階,2階,3階の格子を作って,それぞれ多額のポジションを開く.
  5. グラフ5 ストップポイントを設定する
  6. ポジション開設後,ストップポイントとストップポイントを設定します.
  7. 価格上昇が止まりの平衡を突破すると
  8. 価格が下がると,ストップ・ロスト・ピッチ・ポジションが起こります.
  9. ポジションがすべて平らになった後,価格が最後のグリッドを再び突破した場合,グリッドの位置と数を再計算し,上に追跡します.

この戦略は,EMAによって大トレンドの方向を判断し,その後,グリッド戦略と組み合わせて追跡し,大トレンドの上昇傾向でより大きな利益を得ることができます.グリッドは,複数の価格ポイントを設定し,ポーズを分けて構築し,単一のポジションのリスクを減らすことができます.ストップ・ストップ・損失設定は,利益がロックされ,最大損失を制御することができます.ポジションがすべて平仓になったとき,グリッド高点を再計算し,再びポジションを開くことができ,利益を最大化します.

優位分析

  1. EMAでトレンドの方向を判断し,逆行を避ける
  2. ネットワーク戦略により,倉庫を分けて建設し,単一の倉庫のリスクを低減します.
  3. ストップ・ストップ・ロスの設定は,最大損失を制御し,利潤をロックします.
  4. ポジションを平らにした後,グリッドを再計算し,追いつき続け,利益の余地を増やす

この戦略の主要な優点は,トレンド取引とグリッド取引を組み合わせることで,トレンドの方向の正確性を確保するとともに,グリッド戦略のリスク分散を実現するということです.さらに,ポジションの平仓後にグリッドを再計算すると,無限の追が可能になり,市場状況が大きな波が発生したときに巨額の利益を得ることができます.

リスク分析

  1. 大勢の判断は誤って,間違った方向へ進んでいく
  2. ネットワークの損失が大きかった.
  3. ストップポイントが早すぎたため,全ポジションが平らになった.
  4. 逆転後,ベストエントリーポイントに戻れない.

主なリスクは,大トレンドの判断誤りであり,これにより逆勢でポジションを構築し,大きな損失が発生する.また,市場状況が激しく揺れ,複数の格子が同時に閉じ込められた場合,損失は増加する.また,価格が急速に下落すると,ストップ損失が引き起こされ,ポジションが完全に平らになり,後の利益を得る機会が失われる.価格の反発後に,最初のベスト格子位置に戻るのは難しい.

EMAパラメータを最適化することで,大トレンド判断の正確性を向上させることができる.格子間隔と最初の順序の数を調整することで,全体的な損失を制御することもできる.ストップポイントの位置の設定は,市場変動の頻度を考慮する必要がある.さらに,一部のポジションが利益を得た後に停止することを考慮することもできる.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. EMAパラメータを最適化し,大トレンド判断の正確性を向上させる
  2. 格子数と格子間隔を調整し,利得リスク比を最適化
  3. 部分ポジションストップ,移動ストップなどのストップストップロジックの改善
  4. 再入学条件の制限を高め,反発過程で早期再入学を避ける
  5. K線形,指標の感度など,他の指標と組み合わせて入場を判断します.
  6. 異常な状況の判断を高め,異常な状況で大きな損失を回避する

これらの最適化により,戦略は大行情でより大きな利益を得ることができ,同時にリスクを制御し,通常の振動的な動きで損失を減らすことができます.

要約する

この戦略は,トレンド取引とグリッド取引の有機的な組み合わせである。この戦略は,EMAを活用して,大方向を判断し,グリッド戦略を活用して,順次ポジションを建設し,追従する。リスクがコントロールされ,止損停止とグリッドの再計算の追跡機構がある。全体的に,この戦略は,市場の大動向の中で良い利益を得ることができ,リスクも制御している。パラメータをさらに最適化し,判断の正確性を向上させれば,収益はより高くなる。この戦略は,詳細なテストと最適化の後に,本格的に投入される。

ストラテジーソースコード
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © zxcvbnm3260

//@version=5
strategy("grid strategy long", overlay=true)


// 版本更新记录:
// v1.0 2021/11/09 只做多、不做空,选择大趋势向上的时间段。网格大小默认为1倍ATR,往下1、2、3个网格吃单,第5个网格止损。空仓时到达往上一个网格则网格整体抬升。(Only go long, not short, choose a time period when the general trend is up. The default grid size is 1x ATR, the next one, two, and three grids will take orders, and the fifth grid will stop loss. When the empty position reaches the upper grid, the grid as a whole rises.)


X_ATR = input.float(title='网格大小是多少倍ATR?', defval = 1)


// 1.基础变量
ema169 = ta.ema(close, 169)
ema144 = ta.ema(close, 144)
ema12 = ta.ema(close, 12)

ema576 = ta.ema(close, 576)
ema676 = ta.ema(close, 676)

plot(ema169, color=color.new(color.orange, 0), linewidth=2)
// plot(ema144, color=color.orange)
plot(ema12,  color=color.blue)
// plot(ema676, color=color.orange, linewidth=1)

mtr = math.max(high - low, math.abs(close[1] - high), math.abs(close[1] - low))
atr = ta.ema(mtr, 30)

is_0930 = hour(time, 'GMT-4') == 9  and minute(time, 'GMT-4') == 30
is_1500 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 00
is_1530 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 30

is_yangxian = close>open
is_yinxian = close<open

// 2.基本趋势标记

big_trend  = ema12 >= ema169 ? 1 : 0
big_trend2 = ema12 <= ema169 ? 1 : 0

// 背景的变色处理:
bgcolor(big_trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90) )

// 3.网格点位初始化

grid_size = atr * X_ATR // 网格大小
        
price_entry1 = open - grid_size*1
price_entry2 = open - grid_size*2
price_entry3 = open - grid_size*3
price_stop_loss = open - grid_size*5

price_exit1 = price_entry1 + grid_size*1
price_exit2 = price_entry2 + grid_size*1
price_exit3 = price_entry3 + grid_size*1

qty1 = int(1000/price_entry1)
qty2 = int(1000/price_entry2)
qty3 = int(1000/price_entry3)


// 标出各种点位
slm_lines_time(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    time2 = time + 1000*3600*24*5
    line.new(time, price_stop_loss, time2, price_stop_loss, color=color.red, xloc = xloc.bar_time, width=2)  // 止损位
    line.new(time, price_entry1, time2, price_entry1, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry2, time2, price_entry2, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry3, time2, price_entry3, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_exit1,  time2, price_exit1,  color=color.green, xloc = xloc.bar_time, width=2)  // 

slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    line.new(bar_index, price_stop_loss, bar_index[5], price_stop_loss, color=color.red, xloc = xloc.bar_index, width=2)  // 止损位
    line.new(bar_index, price_entry1, bar_index[5], price_entry1, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry2, bar_index[5], price_entry2, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry3, bar_index[5], price_entry3, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_exit1,  bar_index[5], price_exit1,  color=color.green, xloc = xloc.bar_index, width=2)  // 


// 4.网格点位更新和下单

is_entry0 = big_trend==1 and year>=2020

var is_entry = false

// 未进场时:
if is_entry0 and not is_entry
    is_entry := true
    
    grid_size := atr * X_ATR // 网格大小
    
    price_entry1 := close - grid_size*1
    price_entry2 := close - grid_size*2
    price_entry3 := close - grid_size*3
    price_stop_loss := close - grid_size*5
    
    price_exit1 := price_entry1 + grid_size*1
    price_exit2 := price_entry2 + grid_size*1
    price_exit3 := price_entry3 + grid_size*1
    
    qty1 := int(1000/price_entry1)
    qty2 := int(1000/price_entry2)
    qty3 := int(1000/price_entry3)
    
    // slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)
    
    strategy.entry("open1", strategy.long, qty1, limit = price_entry1)
    strategy.entry("open2", strategy.long, qty2, limit = price_entry2)
    strategy.entry("open3", strategy.long, qty3, limit = price_entry3)
    
    strategy.exit("close1", qty = qty1, limit = price_exit1, stop = price_stop_loss)
    strategy.exit("close2", qty = qty2, limit = price_exit2, stop = price_stop_loss)
    strategy.exit("close3", qty = qty3, limit = price_exit3, stop = price_stop_loss)

// 已进场的各类情况

// 1.止损
if is_entry and close <= price_stop_loss
    strategy.close_all()
    is_entry := false

// 2.网格抬升
if is_entry and close >= price_exit1
    is_entry := false