Saya baru mengenal skrip pinus dan mencoba menghitung dan merencanakan rata-rata harga rendah di premarket sayangnya kode saya tampaknya tidak berfungsi dengan baik dan saya tidak dapat menemukan alasan mengapa

var preMarketSession = "0400-0930" //setting the premarket time
isPreMarket = not na(time(timeframe.period, "0400-0930")) //boolean for if the session is currently in premarket

var int barsInPreMarket = 0
var float averageLow = na


// Confirming first bar of premarket
if isPreMarket and not isPreMarket[1]
    averageLow := 0


//Counting the number of bars in premarket
if (isPreMarket and barstate.isnew)
    barsInPreMarket := barsInPreMarket + 1


//Calculating the avg of low prices on end of bar
if isPreMarket and barstate.isconfirmed
    for i=0 to barsInPreMarket - 1
        averageLow := (averageLow + low) / barsInPreMarket

// Resseting the car count and avarage upon exiting premarket
if not isPreMarket
    barsInPreMarket := 0
    averageLow := na


plot(averageLow)

Kode ini menghasilkan kekacauan ini: Grafik

Akan sangat berterima kasih jika seseorang bisa mengarahkan saya ke arah yang benar!

0
stas L 4 April 2021, 19:21

1 menjawab

Jawaban Terbaik

Masalah ini tampaknya merupakan penanganan ketika nilai-nilai NA, atau menggunakan Barstate. Mengenai Nilai-Nilai NA Script memungkinkan untuk menghitung nilai-nilai NA, Anda harus menggunakan nz() untuk membuat nilai 0 itu atau menggunakan na() untuk menguji kondisi dan bertindak sesuai dengan kondisi tersebut. Saya tidak yakin apakah Barstate menyebabkan masalah, tetapi seharusnya tidak perlu.

//@version=4
study("My Script",overlay=true)
var preMarketSession = "0400-0930" //setting the premarket time
isPreMarket = not na(time(timeframe.period, "0400-0930")) //boolean for if the session is currently in premarket

var int barsInPreMarket = 0
var float lowSum = na
var float averageLow = na


if isPreMarket
    if na(lowSum)
        barsInPreMarket := 1
        lowSum := low
        averageLow := low
    else
        barsInPreMarket := barsInPreMarket + 1
        lowSum := lowSum + low
        averageLow := lowSum / barsInPreMarket
else if isPreMarket[1]
    lowSum := na
    barsInPreMarket := 0

plot(averageLow)

Penting untuk berhati-hati dengan nilai-nilai NA, karena Anda tidak tahu kapan skrip Anda akan mulai eksekusi. Itu bisa dimulai di tengah pra-pasar, yang berarti bahwa itu menggunakan Averagelow untuk menghitung Averagelow ketika Averagelow adalah NA.

0
bajaco 5 April 2021, 00:10