Проблема со смещением формы Pine Scripts - PullRequest
0 голосов
/ 15 января 2019

Этот скрипт будет обозначать максимумы: левая полоса будет ниже, а правая - ниже. Я также хочу, чтобы этот скрипт дал мне HighofHighs с левым максимумом и правым максимумом ниже. У меня это работает, но я не могу заставить ярлык отображаться на правильной панели.

Если я использую offset = -1, он будет помещен выше самого последнего максимума, если я использую offset = -high_bars_back, он вообще не будет смещен.

(по умолчанию код показывает «HighofHighs» на самом текущем максимуме (с использованием смещения = -1), но мне нужно, чтобы он отображался на уровне от второго до самого высокого))

enter image description here

//@version=3

strategy(title = "Trend_v1", shorttitle = "Thrend_v1", overlay = true, 
  pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, 
  calc_on_every_tick=true, initial_capital=100000)//, calc_on_order_fills=true)


//Window of time
start     = timestamp(1000, 01, 01, 00, 00)  // backtest start window
finish    = timestamp(3000, 10, 01, 00, 00)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"    

//Input
showLocalTrendHighLables = input(title="Show Local Trend High Labels", type=bool, defval=true)
showRealTrendHighLables = input(title="Show Real Trend High Labels", type=bool, defval=true)

//Initialize Variables
first_high = na
second_high = na
third_high = na
local_trend_highs = na
real_trend_highs = na

//Local Trend Highs
if(nz(high[2]) < nz(high[1]) and nz(high[1]) > high)
    local_trend_highs := nz(high[1])
    third_high := second_high[1]
    second_high := first_high[1]
    first_high := nz(high[1])
else
    local_trend_highs := nz(local_trend_highs[1])
    third_high := third_high[1]
    second_high := second_high[1]
    first_high := first_high[1]

//Real Trend Highs
if (third_high < second_high and second_high > first_high)
    real_trend_highs := nz(local_trend_highs)
else
    real_trend_highs := nz(real_trend_highs[1])


//Calculate how many high bars back to display HighofHighs
high_bars_back = 0
for i = 0 to 999
    high_bars_back = i
    if(high[i] == second_high)
        break
    else
        continue


//Plots
plotshape((not (local_trend_highs == local_trend_highs[1])) and showLocalTrendHighLables, style=shape.arrowdown, location=location.abovebar, color=green, text='high', offset=-1)

//For some reason, offset=-high_bars_back doesn't shift at all
plotshape((not (real_trend_highs == real_trend_highs[1])) and showRealTrendHighLables, style=shape.arrowdown, location=location.top, color=green, text='HIGHofHIGHs', offset=-1)//offset=-high_bars_back)

plot(high_bars_back, color=blue, style=columns)

1 Ответ

0 голосов
/ 29 января 2019

К сожалению, этого нельзя достичь с помощью «plotshape» + «offset». Причина этого заключается в том, что смещение будет сдвигать всю серию фигур на заданное количество баров. Но в вашей задаче для каждого из HIGHofHIGHs требуется разное значение смещения.

Хорошей новостью является то, что эта функция будет доступна более или менее скоро. Он включен в публичный проект Pine Script версии 4. Эта функция называется «метки». Читать дальше https://docs.google.com/document/d/12ogvjzasBJSXerSOql4b9KwkE3wUlsc5HgA5qGhoYXk/edit#heading=h.uz6ftgjlvspe

...