イチモクとMACDトレンド逆転取引戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-20 15:44:13
タグ:

概要

この戦略は,イチモクと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)
// }



もっと