一目均衡表に基づくトレンド反転取引戦略


作成日: 2023-09-20 15:44:13 最終変更日: 2023-09-20 15:44:13
コピー: 0 クリック数: 649
1
フォロー
1617
フォロワー

概要

この戦略は,一目平衡表指標とMACD指標を融合し,トレンド反転が確認された後に入場し,トレンド反転型の取引戦略に属する.

戦略原則

  1. 一見均衡表の転向線を計算し,トレンドの方向を判断する指標として使う.価格は転向線の上の多頭市場,下の空頭市場である.

  2. MACD指数は,多頭市場がデッドフォークを形成するときに売り信号を生成し,空頭市場が金フォークを形成するときに買い信号を生成する.

  3. 一見均衡表のトレンド判断とMACDの反転信号を組み合わせて,トレンドの反転ポイントで逆転取引を行う.

  4. 特定の時間帯のリスクを回避するために,夜に取引を終了したり,週末に取引をしないなど,取引時間制御を設定できます.

  5. 利益を固定し,リスクをコントロールするために適切なストップ・ロズ・アンド・ストップ・ストップ戦略を採用する.

優位分析

  1. 一見均衡表の指標は,直観的にトレンドとサポートプレッシャー値を表示する.

  2. MACDはトレンドの逆転に敏感である.

  3. 傾向判断と反転信号を組み合わせて,偽信号をフィルターすることができます.

  4. 取引の時間帯をカスタマイズし,重要なタイミングのリスクを回避します.

  5. ストップ・ストップ・ストップ戦略を設定することで,資金のリスクを効果的に管理できます.

リスク分析

  1. 一見均衡表とMACD指標は誤判信号が発生する可能性がある.

  2. 逆転が予測できないので,逆転の危険性があります.

  3. 取引時間の制御により,一部の取引機会が逃れている可能性があります.

  4. 止損止めは正しく設定されず,早めに止まる可能性があります.

  5. パラメータ最適化では,過度に最適化され,効果が悪くなることがあります.

最適化の方向

  1. 均衡表とMACDのパラメータをテストして,最適なパラメータの組み合わせを見つける.

  2. 取引信号の確認のために他の指標を追加します.

  3. リスクと利益のバランスをとるストップ・ストップ戦略を最適化する

  4. 取引時間規制の必要性を評価し,適切な緩和を行います.

  5. トレンドフィルターを追加して,逆転取引の損失を回避します.

  6. 逆転の強さや潜在的回調の高度を判断する方法を研究する.

要約する

この戦略は,一見均衡表のトレンド判断とMACDの反転取引信号を統合し,トレンド反転が確認された後に取引決定を行う.パラメータと戦略をさらに最適化することで,信号誤判のリスクを軽減し,安定した効率的なトレンド反転取引システムを構築することができる.

ストラテジーソースコード
/*backtest
start: 2022-09-13 00:00:00
end: 2023-09-19 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/
// © Revazi

//@version=5
strategy("The Impeccable by zyberal", overlay = true)

// Inputs {
// Strategy variables
IchimokuTenkanPeriod = input(9)
IchimokuKijunPeriod = input(190)
IchimokuSenkouPeriod = input(52)
MACDMainFast = input(3)
MACDMainSlow = input(10)
MACDMainSmooth = input(9)
ExitAfterBars = input(2)
ProfitTarget = input(135)
StopLoss = input(70)

// Trading Options
DontTradeOnWeekends = input(true)
ExitAtEndOfDay = input(true)
DayExitTimeHour   = input(23)
DayExitTimeMinute = input(04)

ExitOnFriday = input(true)
FridayExitTimeHour   = input(20)
FridayExitTimeMinute = input(40)

// }



// TRADING OPTIONS LOGIC {
OpenOrdersAllowed = true

// Dont trade on weekends {
if DontTradeOnWeekends
    if dayofweek == dayofweek.saturday or
       dayofweek == dayofweek.sunday
        OpenOrdersAllowed := false
// }

// Exit on close (end of day) {
if ExitAtEndOfDay
    if timeframe.isintraday and
       time >= timestamp(year(timenow), month(timenow), dayofmonth(timenow), DayExitTimeHour, DayExitTimeMinute)
        OpenOrdersAllowed := false
// }

// Exit on Friday {
if ExitOnFriday
    if timeframe.isintraday and
       time >= timestamp(year(timenow), month(timenow), dayofmonth(timenow), FridayExitTimeHour, FridayExitTimeMinute)
        OpenOrdersAllowed := false
// }


// Rule: Trading signals {
openW3 = request.security(syminfo.tickerid, "W", open)[3]

middleDonchian(Length) => math.avg(ta.highest(Length), ta.lowest(Length))
Tenkan = middleDonchian(IchimokuTenkanPeriod)[2]

[macdLine, signalLine, _] = ta.macd(close, MACDMainFast, MACDMainSlow, MACDMainSmooth)

LongEntrySignal = openW3 > Tenkan and ta.crossunder(macdLine, signalLine)[3] //macdLine[3] < signalLine[3]
ShortEntrySignal = openW3 < Tenkan and ta.crossover(macdLine, signalLine)[3] //macdLine[3] > signalLine[3]
// }



// Calculate conditions {
IsFlat() => strategy.position_size == 0
IsLong() => strategy.position_size > 0
IsShort() => strategy.position_size < 0

longCondition  = OpenOrdersAllowed and not IsLong() and LongEntrySignal
shortCondition = OpenOrdersAllowed and not IsShort() and ShortEntrySignal

// }

// Open positions based on conditions {
strategy.order(id = "buy", direction = strategy.long, qty = 1, when = longCondition)
strategy.order(id = "sell", direction = strategy.short, qty = 1, when = shortCondition)
// }