Тенденциальный

Автор:Чао Чжан, Дата: 2022-05-17 13:44:03
Тэги:Увеличивается

Данный показатель использует средний показатель наивысшей и низшей точек за определенный период времени для определения того, находится ли актив в текущем периоде восходящего или нисходящего тренда.

Это помогает представить текущую тенденцию.

Параметры: 1/ длительность: длительность периода времени, в течение которого будут рассматриваться максимальный и минимальный показатели. 2/ источник цены: источник, который будет использоваться для расчетов 3/ агрессивный режим: если это верно, направление тренда будет более чувствительным к изменению цен и будет быстрее переходить от восходящего к нисходящему тренду и наоборот.

Использование в более короткие сроки, чтобы избежать шума (4h, 12h, 1d и т.д.)

Ответственность не возлагается:

Это не совет для торговли, используйте на свой страх и риск. Автор этого сценария не может нести ответственность за любые убытки, прямо или косвенно возникшие в результате использования этого показателя.

обратная проверка

img


/*backtest
start: 2022-05-09 00:00:00
end: 2022-05-15 23:59:00
period: 30m
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/
// © levieux

//@version=5
indicator("Trendelicious", overlay=true)

length=input(defval=30)
price=input(defval=hl2, title="Price Source")
aggressiveMode=input(defval=false,title="Aggressive Mode")

isUptrend(price,length,aggressiveMode) =>
    uptrend= false
    PP= (ta.highest(price,length)+ta.lowest(price,length))/2
    ppChange= ta.change(PP,1)
    ppFlat= ppChange==0
    priceOverPP=ta.crossover(price,PP)
    priceUnderPP=ta.crossunder(price,PP)
    risingPrice= ta.rising(price,5)
    risingPP= ta.rising(PP,5)
    fallingPrice= ta.falling(price,5)
    fallingPP= ta.falling(PP,5)

    uptrendCondition1= price>PP and (ppChange>0 or (ppChange==0 and aggressiveMode)) and (ppChange[1]>0 or (ppChange[1]==0 and aggressiveMode)) and ppChange[2]>=0 and ppChange[3]>=0
    uptrendCondition2= (priceOverPP or risingPrice) and ppFlat and aggressiveMode
    uptrendCondition3= risingPrice and fallingPP and aggressiveMode
    downtrendCondition1= price < PP and (ppChange<0 or (ppChange==0 and aggressiveMode)) and (ppChange[1]<0 or (ppChange[1]==0 and aggressiveMode)) and ppChange[2]<=0 and ppChange[3]<=0
    downtrendCondition2= (priceUnderPP or fallingPrice) and ppFlat and aggressiveMode
    downtrendCondition3= fallingPrice and risingPP and aggressiveMode

    if uptrendCondition1 or uptrendCondition2 or uptrendCondition3
        uptrend:= true
    else if downtrendCondition1 or downtrendCondition2 or downtrendCondition3
        uptrend:= false
    else
        uptrend:= uptrend[1]
    [PP,uptrend]

[trendline,uptrend]= isUptrend(price,length,aggressiveMode)

baseLinePlot = plot((open + close) / 2, display=display.none)
upTrendPlot = plot(uptrend ? trendline : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrendPlot = plot(not uptrend ? trendline : na, "Down Trend", color = color.red, style=plot.style_linebr)
fill(baseLinePlot, upTrendPlot, color.new(color.green, 90), fillgaps=false)
fill(baseLinePlot, downTrendPlot, color.new(color.red, 90), fillgaps=false)

if uptrend
    strategy.entry("Enter Long", strategy.long)
else if not uptrend
    strategy.entry("Enter Short", strategy.short)

Связанные

Больше