モメント トラッキング 戦略

作者: リン・ハーンチャオチャン開催日:2023年11月23日 13:47:02
タグ:

img

概要

この戦略は,キャンドルスティックの体サイズとトレンドモメンタムインジケーターEMAを使用して,市場のトレンドを決定し,低値で購入し高値で販売するための自動取引を実装する.その基本的なアイデアは,上昇傾向での上昇を追求し,ダウントレンドでのダウンにロングポジションを追加することです.

戦略の論理

  1. ろうそくの大きさに基づいて ろうそくを粉々,小さなろうそく,大きなろうそくに分類します
  2. EMAが上昇しているとき,大きな赤いキャンドルが表示されれば,それは市場の調整を示します.この時点で,ロングポジションを閉じる.
  3. 市場が安定していることを意味します. この時点で,ロングポジションに追加します.
  4. ダイナミックにポジションを調整し,キャンドルスティックの変化とEMA傾向をリアルタイムで監視する.

利点分析

  1. 市場構造を単純な指標で判断することで 戦略のアイデアは単純で理解しやすいのです
  2. 戦略にはパラメータが少なく,過度に適合しやすいので,高い安定性があります.
  3. 低価格で購入して高価格で販売する論理を実装し,市場が大きく変動する際には目立つ利益をもたらす.
  4. 傾向と逆転を考慮し,市場の状況の変化に迅速に対応できる.

リスク と 最適化

  1. ATRは,ストップ・ロスのリスクにつながる可能性がある資産価格の絶対幅を考慮しない.
  2. 暗号通貨の基本発行を考慮せず,より多くの取引対でテストすることができます.
  3. ろうそくパターンを判断するのに役立つ機械学習アルゴリズムが導入できます
  4. 取引量の指標は品種をスクリーニングするために使用できます.
  5. 異なるタイムフレームパラメータの調整がテストできます.

結論

この戦略の全体的な考え方はシンプルで,理解しやすいもので,モメンタムとトラッキングが主な特徴である.シンプルなEMABOLL指標を通じて主要市場の方向性を決定し,ローカル調整を判断するためにキャンドルスタックボディを使用して,低価格で購入し,高価格で販売することで効率的な取引を実現する.この戦略は高い安定性を持ち,暗号通貨で例外的にうまく機能し,さらなるテストと最適化に価値があります.


/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//Author @divonn1994

strategy(title='Trend Follower Strategy v2 [divonn1994]', shorttitle='TrendFollowStrategyV2', overlay=false, pyramiding=0, default_qty_value=100, default_qty_type=strategy.percent_of_equity, precision=7, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent, initial_capital=100)

//Important Constants for Classifying Candle Size----------------------------------------------------------------------------------------------------------------------------------------------

timesBigger = 2
crumbSize = 1400
crumbSize2 = 2100
bigCandleSize = 3800

//Key Alerts and Classifications of Candle Size and EMAs---------------------------------------------------------------------------------------------------------------------------------------

emaAlert = ta.ema(close, 8) > ta.ema(open, 8) ? 1 : 0 
CandleSize = close * 1 - open * 1
previousCandleSize = close[1] * 1 - open[1] * 1
greenCandle = close > open ? 1 : 0
previousGreenCandle = close[1] > open[1] ? 1 : 0

crumb = (greenCandle==1 and CandleSize<=crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize) ? 1 : 0
bigCrumb = (greenCandle==1 and CandleSize<=crumbSize2 and CandleSize>crumbSize) or (greenCandle==0 and -CandleSize<=crumbSize2 and -CandleSize>crumbSize) ? 1 : 0
previousCandleIsSmallCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize) ? 1 : 0
previousCandleIsBigCrumb = (previousGreenCandle==1 and previousCandleSize<=crumbSize2 and previousCandleSize>crumbSize) or (previousGreenCandle==0 and -previousCandleSize<=crumbSize2 and -previousCandleSize>crumbSize) ? 1 : 0

bigCandle = (greenCandle==1 and previousCandleIsBigCrumb==1 and CandleSize>=math.abs(timesBigger*previousCandleSize)) or (greenCandle==1 and previousCandleIsSmallCrumb==1 and CandleSize>=bigCandleSize) or (greenCandle==1 and previousCandleIsSmallCrumb==0 and previousCandleIsBigCrumb==0 and CandleSize>=math.abs(timesBigger*previousCandleSize)) ? 1 : 0

//Engine (Secret Sauce)------------------------------------------------------------------------------------------------------------------------------------------------------------------------

buy = (crumb==0 and bigCrumb==0 and greenCandle==0) or (greenCandle==1 and bigCandle==1) or (emaAlert==0) ? 0 : 1

//Strategy-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

if ta.crossover(buy, 0.5)
    strategy.entry('long', strategy.long, comment='long')
if ta.crossunder(buy, 0.5)
    strategy.close('long')

//Plot Strategy Behavior-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

plot(buy, color=color.new(color.silver, 0))
plot(0.5, color=color.new(color.fuchsia, 0))

もっと