Справка по скрипту, кодирование Вейса - PullRequest
0 голосов
/ 15 ноября 2018

Я рассчитываю VWAP по секциям, каждый раз, когда закрытие имеет разницу с рабочим VWAP, превышающим отклонение, он переворачивает тренд и начинает новый счет VWAP. Объем должен быть агрегирован в пределах каждого тренда.

Пока объем агрегирует в восходящем тренде, но не в нисходящем. Кроме того, при переключении с понижающего на восходящее значение громкость восходящего тренда «крадет» последний том нисходящего тренда и добавляет его к своему собственному. Это все очень запутанно, поскольку логика довольно проста ...

Вот мой код:

//@version=3
study("My Script")
deviation = input(title = "Deviation %", type=float, defval = 0.1)
running_vol = 0.0
running_sum = 0.0
Tup = true
Tdown = false

running_vol := nz(volume[1]) == 0 ? 0 : running_vol[1] + volume
running_sum := nz(volume[1]) == 0 ? 0 : running_sum[1] + (close*volume)

volwap = (running_sum/running_vol)

// flip to downtrend
if (Tup == true) and (Tdown == false) and (close < close[1]) and ((1 - (close/volwap)) > (deviation/100.0))
    // reset running_vol and sum to current volume and sum since it's a new trend
    running_vol := volume
    running_sum := (close*volume)
    // flip the trend switches
    Tup := false
    Tdown := true
// flip to uptrend
if (Tup == false) and (Tdown == true) and (close > close[1]) and (((close/volwap) - 1) > (deviation/100.0))
    running_vol := volume
    running_sum := (close*volume)
    Tup := true
    Tdown := false


up = Tup == true ? running_vol : 0
down = Tdown == true ? running_vol : 0

plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)

1 Ответ

0 голосов
/ 29 ноября 2018

В оригинальном скрипте самостоятельная ссылка на Tup и Tdown проблематична. Вы должны обратиться к прошлым Tup и Tdown, в противном случае пользовательские Tup = true и tdown = false повторно вводятся при каждом проходе по сценарию. Так как Tup перезапускается как истинный на каждом цикле, вы можете иметь только одну полосу громкости медведя за раз. Я также вижу проблемы с желаемой стратегией перелома для этого нового и интересного определения волны. Некоторые игры вполне могут найти поворотный момент, который удовлетворит вас лучше, чем сюжеты из этого сценария. Я пытался сохранить верность вашему использованию volwap и close [1] относительно close [0], но я не уверен, что понял это так, как вы на самом деле хотели. Я надеюсь, что это даст вам отправную точку для уточнения определения волны. Вот мой сосновый сценарий воспроизведения вашего кода. Ура Jayy:

//@version=3
// my impression of the Weis VWAP code by Moreina by Jayy
study("Moreina Weis vwap")
deviation = input(title = "Deviation %", type=float, defval = 0.00000000)
running_vol = 0.0
running_sum = 0.0
Tup = 0

count=1
count:= nz(count[1])+1
running_vol := Tup[1]!=Tup[2] and nz(running_vol[1])==nz(volume[1])? nz(running_vol[1]) + volume:  (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_vol[1]) + volume:na
running_sum := Tup[1]!=Tup[2] and nz(running_sum[1])==nz(close[1]*volume[1])? nz(running_sum[1]) + close*volume: (Tup[1]==1 and Tup[2]==1) or (Tup[1]==-1 and Tup[2]==-1)? nz(running_sum[1]) +close* volume:na

volwap = (running_sum/running_vol)

// flip to downtrend
if ((Tup[1] == 1) or (Tup[1] == 0)) and not ((close > close[1]) or (close/volwap)>1) //

    // reset running_vol and sum to current volume and sum since it's a new trend
    running_vol := volume
    running_sum := (close*volume)
    // flip the trend switches
    Tup := -1

// flip to uptrend
if ((Tup[1] == -1) or (Tup[1] == 0))  and not ((close < close[1]) or ((close/volwap)) <1) //and (close/volwap) > 1) 

    running_vol := volume
    running_sum := (close*volume)
    Tup := 1


Tup:= nz(Tup[0])==1 and count>1?Tup[0]:nz(Tup[0])==-1 and count>1?Tup[0]: count>1 and Tup[0]==0?nz(Tup[1]):na//Tup
up = Tup == 1 ? running_vol : na
down = Tup == -1  ? running_vol : na

plot(up, style=histogram, color=green, linewidth=3)
plot(down, style=histogram, color=red, linewidth=3)
...