Este script é uma estratégia para o sistema Ichimoku Cloud para negociação.
O script permite-lhe testar uma variedade de sinais de negociação oferecidos pelo sistema de nuvem Ichimoku.
Se você estiver testando um par de moedas que inclua o iene japonês (JPY), certifique-se de marcar a caixa de seleção JPYPAIR, pois isso ajusta a forma como o script calcula o stop-loss e o take-profit.
Você pode alterar a relação para os valores de take profit (TP) e stop loss (SL) nos parâmetros do script.
O script usa os cálculos da Ichimoku Cloud para entradas de sinal, como Tenkan/Kijun, Price/Kijun e Price/Tenkan, entre outros.
As nuvens de Ichimoku são traçadas usando a função donchiana, e os sinais são gerados quando o preço cruza acima ou abaixo da linha de conversão, linha de base, kumo alto ou kumo baixo com base na seleção do menu de entrada.
O script também inclui condições para entradas de negociação longas e curtas.
Utiliza o Intervalo Verdadeiro Médio (ATR) para a gestão de dinheiro, utilizando multiplicadores para stop loss e take profit que podem ser ajustados.
Além disso, há um filtro para o tempo de teste, permitindo que você especifique quantos anos no passado você deseja testar a estratégia.
Por último, a estratégia é definida para entrar ou sair de uma negociação com base nos sinais de continuação e nos valores ATR para lucro e perda.
Este script pode ser uma ferramenta útil para testar as estratégias de negociação da Ichimoku Cloud, mas como sempre, deve-se gastar tempo entendendo a lógica e ajustando os parâmetros com base em seu nível de conhecimento e conforto.
/*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)