Đám mây ICHIMOKU của BV - Tất cả tín hiệu

Tác giả:ChaoZhang, Ngày: 2023-09-08 16:18:04
Tags:

Kịch bản này là một chiến lược cho hệ thống Ichimoku Cloud để giao dịch.

  1. Kịch bản cho phép bạn kiểm tra một loạt các tín hiệu giao dịch được cung cấp bởi hệ thống đám mây Ichimoku.

  2. Nếu bạn đang thử nghiệm một cặp tiền tệ bao gồm Yen Nhật Bản (JPY), hãy chắc chắn đánh dấu hộp kiểm JPYPAIR vì điều này điều chỉnh cách kịch bản tính toán dừng lỗ và lấy lợi nhuận.

  3. Bạn có thể thay đổi tỷ lệ cho giá trị lấy lợi nhuận (TP) và dừng lỗ (SL) trong các tham số của kịch bản.

  4. Các kịch bản sử dụng các tính toán Ichimoku Cloud cho đầu vào tín hiệu như Tenkan / Kijun, Giá / Kijun và Giá / Tenkan trong số những người khác. Tùy thuộc vào lựa chọn của bạn, các kịch bản sẽ cung cấp tín hiệu giao dịch tương ứng.

  5. Các đám mây Ichimoku được vẽ bằng hàm donchian, và tín hiệu được tạo ra khi giá vượt qua hoặc dưới đường chuyển đổi, đường cơ sở, kumo cao hoặc kumo thấp dựa trên lựa chọn của bạn từ menu đầu vào.

  6. Kịch bản cũng bao gồm các điều kiện cho các mục giao dịch dài và ngắn.

  7. Nó sử dụng phạm vi trung bình thực sự (ATR) để quản lý tiền, sử dụng nhân cho dừng lỗ và lấy lợi nhuận có thể được điều chỉnh.

  8. Ngoài ra, có một bộ lọc cho thời gian thử nghiệm, cho phép bạn xác định bao nhiêu năm trong quá khứ bạn muốn thử nghiệm chiến lược.

  9. Cuối cùng, chiến lược được thiết lập để tham gia hoặc thoát khỏi giao dịch dựa trên các tín hiệu tiếp tục và giá trị ATR cho lợi nhuận và lỗ.

Kịch bản này có thể là một công cụ hữu ích để kiểm tra lại các chiến lược giao dịch Ichimoku Cloud, nhưng như mọi khi, người ta nên dành thời gian để hiểu logic và điều chỉnh các thông số dựa trên kiến thức và mức độ thoải mái của họ.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-21 00:00:00
period: 1h
basePeriod: 15m
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/
// © vuagnouxb

//@version=4
strategy("BV's ICHIMOKU CLOUD SIGNAL TESTER", overlay=true)


// Signal imputs 
signalChoice = input(title = "SIGNAL - Choose your signal", defval = "Tenkan/Kijun", options = ["Tenkan/Kijun", "Tenkan/Kijun+Kumo", "Price/Tenkan", "Price/Tenkan+Kumo", "Price/Kijun", "Price/Kijun+Kumo", "Price/Kumo", "Kumo Color"])
JPYPair = input(type = input.bool, title = "ATR - Check if JPY Pair ", defval = false)


//------------------------------------------------------------------------
//----------               ICHIMOKU CLOUD Calculation          ----------- INPUT
//------------------------------------------------------------------------

conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement + 1, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement - 1, color=color.green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement - 1, color=color.red,
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? color.green : color.red)

kumoHigh = max(leadLine1[displacement-1], leadLine2[displacement-1])
kumoLow = min(leadLine1[displacement-1], leadLine2[displacement-1])

// -- Trade entry signals

continuationSignalLong = signalChoice == "Tenkan/Kijun" ? crossover(conversionLine, baseLine) :
   signalChoice == "Tenkan/Kijun+Kumo" ? crossover(conversionLine, baseLine) and close > kumoHigh : 
   signalChoice == "Price/Tenkan" ? crossover(close, conversionLine) : 
   signalChoice == "Price/Tenkan+Kumo" ? crossover(close, conversionLine) and close > kumoHigh :
   signalChoice == "Price/Kijun" ? crossover(close, baseLine) :
   signalChoice == "Price/Kijun+Kumo" ? crossover(close, baseLine) and close > kumoHigh : 
   signalChoice == "Price/Kumo" ? crossover(close, kumoHigh) :
   signalChoice == "Kumo Color" ? crossover(leadLine1, leadLine2) :
   false
   
continuationSignalShort = signalChoice == "Tenkan/Kijun" ? crossunder(conversionLine, baseLine) :
   signalChoice == "Tenkan/Kijun+Kumo" ? crossunder(conversionLine, baseLine) and close < kumoLow : 
   signalChoice == "Price/Tenkan" ? crossunder(close, conversionLine) : 
   signalChoice == "Price/Tenkan+Kumo" ? crossunder(close, conversionLine) and close < kumoLow :
   signalChoice == "Price/Kijun" ? crossunder(close, baseLine) :
   signalChoice == "Price/Kijun+Kumo" ? crossunder(close, baseLine) and close < kumoLow : 
   signalChoice == "Price/Kumo" ? crossunder(close, kumoLow) :
   signalChoice == "Kumo Color" ? crossunder(leadLine1, leadLine2) :
   false

longCondition = continuationSignalLong

shortCondition = continuationSignalShort

//------------------------------------------------------------------------
//----------             ATR MONEY MANAGEMENT                 ------------
//------------------------------------------------------------------------

SLmultiplier = input(title = "ATR - Stop Loss Multiplier", type = input.float, defval = 1.5, step = 0.1)
TPmultiplier = input(title = "ATR - Take Profit Multiplier", type = input.float, defval = 1.0, step = 0.1)

pipAdjuster = JPYPair ? 1000 : 100000

ATR = atr(14) * pipAdjuster // 1000 for jpy pairs : 100000
SL = ATR * SLmultiplier
TP = ATR * TPmultiplier

//------------------------------------------------------------------------
//----------                  TIME FILTER                     ------------
//------------------------------------------------------------------------

YearOfTesting = input(title = "Time - How many years of testing ?" , type = input.integer, defval = 3)

_time = 2020 - YearOfTesting

timeFilter = (year > _time) 

//------------------------------------------------------------------------
//---------                 ENTRY FUNCTIONS                    ----------- INPUT
//------------------------------------------------------------------------

if (longCondition and timeFilter)  
    strategy.entry("Long", strategy.long)

if (shortCondition and timeFilter) 
    strategy.entry("Short", strategy.short)
    
//------------------------------------------------------------------------
//---------                 EXIT  FUNCTIONS                    -----------
//------------------------------------------------------------------------


strategy.exit("ATR", from_entry = "Long", profit = TP, loss = SL)  

strategy.exit("ATR", from_entry = "Short", profit = TP, loss = SL)  

Thêm nữa