資源の読み込みに... 荷物...

戦略をフォローするブレイクアウト傾向

作者: リン・ハーンチャオチャン, 日付: 2023年8月12日 17:16:34
タグ:

img

概要

この戦略は,ブレイクアウト高値と低値を設定することで暗号通貨の価格傾向を追跡する.価格が最高値を超えると長値になり,価格が最低値を下回ると短値になり,トレンドを把握する.

戦略原則

この戦略は主に,明らかに上昇傾向か下落傾向があるかどうかを判断するために,重度の移動平均方法を使用します.特に,特定の期間中の最高値と最低値を記録します.実際の取引価格が記録された最高価格を超えると,上昇傾向が発生したと判断され,それは長くなります.実際の取引価格が記録された最低価格よりも低いとき,低下傾向が発生したと判断され,それは短くなります.

ロングとショートの開口価格は,入力パラメータENTRYで,閉じる価格は,パラメータEXITで設定されます.バックテストのタイムフレームもパラメータで設定できます.これはパラメータを調整することによって最良のコンボを見つけることができます.

戦略の主な論理は

  1. 特定の期間の最高価格と最低価格を記録する (調整可能)
  2. 実際の取引価格が最高価格より高いかどうかを判断する
    1. 値が高くなった場合, ENTRYパラメータによって設定された価格レベルに基づいて,長いチャンスがあり,長いポジションを開きます.
    2. 実際の取引価格が最低価格より低い場合,ショートチャンスがあり,EXITパラメータによって設定された価格レベルに基づいてショートポジションを開きます.
  3. ロングポジションを開いた後,価格が EXITパラメータによって設定されたレベルを下回ると閉じる.
  4. 価格が ENTRYパラメータによって設定されたレベルを超えると,ショートポジションを開いた後に閉じる.

このロジック・ループを通じて 価格の上下トレンドを把握し トレンドフォローを実現できます

利点

この戦略の最大の利点は,パラメータを調整することで,トレンド方向の手動判断を必要とせずに価格動向を自動的に把握できるということです.パラメータが適切に設定されている限り,暗号通貨の価格変動を自動的に追跡できます.

さらに,この戦略は定量取引に非常に適しており,自動化オーダー配達も容易に達成できます.手動操作なしで,感情取引のリスクを軽減し,取引効率を大幅に向上させます.

最後に,この戦略はパラメータを調整することで収益を最大化することもできます.異なるENTRYとEXITパラメータをテストすることで,収益を最大化するための最適なパラメータを見つけることができます.

リスク

この戦略の最大のリスクは,不適切なパラメータ設定が過剰な取引頻度,取引手数料の増加,スリッパージ損失につながることである.ENTRYが低すぎ,EXITが高すぎると,誤った取引信号が容易に生成される.

さらに,不適切なパラメータ調整は,価格動向を時間内に把握できず,取引機会を逃すこともあります.これは最適なパラメータを見つけるために多くのバックテストを必要とします.

最後に,この戦略は,短期間の市場騒音に敏感すぎるため,間違った取引信号を生む可能性があります.これは,取引時間サイクルパラメータを適切に設定することによって回避する必要があります.

オプティマイゼーションの方向性

この戦略では,以下の側面をさらに最適化することができる.

  1. ストップ・ロスのロジックを追加します.これは,損失が一定パーセントを超えると,より大きな損失を避けるために損失を停止することができます.

  2. 移動平均,KDJなどの技術指標フィルターを追加して,短期的なノイズによる取引の過剰を避けるため,全体的なトレンドを判断します.

  3. パラメータ設定ロジックを最適化する.適応性変更メカニズムは,静的設定ではなく,市場状況に基づいて調整できるように,ENTRYとEXITパラメータを設定することができます.

  4. 機械学習を使用して最適なパラメータを訓練します.大規模な歴史的データトレーニングを通じて現在の市場環境のための最適なENTRYとEXIT設定を取得します.

結論

この戦略の最大の利点は,価格動向を把握することで,自動化取引を達成し,取引に対する人間の感情の影響を軽減し,リスクを低減し,効率を向上させることができるということです.同時に,パラメータを調整することで最適な利益ポイントを見つけることができます.

この戦略の主なリスクは,パラメータの設定が不適切であり,市場の騒音に対する過敏性である.ストップ損失,指標フィルター,適応パラメータ最適化などにより改善する必要があります.

総じて,これは定量的かつ自動化された取引に適した戦略に従うシンプルで効果的な傾向です.継続的な最適化によって,戦略の安定性はさらに向上することができます.


/*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/
// © JstMtlQC

//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)


/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")

/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

/////////////// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false 

/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)

/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)

/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)

/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// SHORT 

entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)

/////////////// LONG 

exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// LONG 

if (entrylong)
    strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
    strategy.close("LongEntry", when=window())

/////////////// SHORT 

if (entryshort)
    strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
    strategy.close("short", when=window())



もっと