Tài nguyên đang được tải lên... tải...

FMZ PINE Script tài liệu

Tác giả:Những nhà phát minh định lượng - những giấc mơ nhỏ, Tạo: 2022-05-06 14:27:06, Cập nhật: 2024-10-12 15:27:04

ceArray =array.new< float> ((samplesInput) phương thức maintainQueue(array srcArray, float value, bool takeSample = true) => nếu lấy mẫu srcArray.push ((value) srcArray.shift() srcArray

phương thức calcBB(array srcArray, float mult, bool calculate = true) => var float mean = na var float dev = na nếu tính toán trung bình:= srcArray.avg() dev:= srcArray.stdev() * mult [Mean, mean + dev, mean - dev]

bool newSample = bar_index % n == 0

[sampleMean, highBand, lowBand] = sourceArray.maintainQueue ((sourceInput, newSample).calcBB ((chủ nhân, newSample)

biểu đồ ((sampleMean, Base, color.orange) Kịch bản ((highBand, Upper, color.lime) Lower,color.red)


可以看到使用关键字method声明的用户自定义方法:maintainQueue、calcBB的参数列表中第一个参数都是```array<float>```类型。表示该method是```array<float>```类型变量的方法,所以可以看到调用以下代码来计算布林指标。

```pine
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)

Methods tải lại

Phương pháp được xác định bởi người dùng có thể phủ và tải lại các phương pháp sẵn có và các phương pháp được xác định bởi người dùng có cùng một nhận dạng. Tính năng này cho phép người dùng xác định nhiều trường hợp liên quan đến chữ ký tham số khác nhau dưới cùng một tên phương pháp. Ví dụ đơn giản, giả sử chúng ta muốn xác định một phương pháp để xác định loại biến. Vì chúng ta phải xác định rõ ràng loại đối tượng liên quan đến phương pháp được xác định bởi người dùng, chúng ta cần xác định tải lại cho mỗi loại mà chúng ta muốn nó xác định.

//@version=5
indicator("Type Inspection")

// @function   Identifies an object's type.
// @param this Object to inspect.
// @returns    (string) A string representation of the type.
method getType(int this) =>
    na(this) ? "int(na)" : "int"

method getType(float this) =>
    na(this) ? "float(na)" : "float"

method getType(bool this) =>
    na(this) ? "bool(na)" : "bool"

method getType(color this) =>
    na(this) ? "color(na)" : "color"

method getType(string this) =>
    na(this) ? "string(na)" : "string"

a = 1             // a.getType(): float
b = 1.0           // b.getType(): float
c = true          // c.getType(): bool
d = color.white   // d.getType(): string(na)
e = "1"           // e.getType(): string

runtime.log("a.getType():", a.getType())
runtime.log("b.getType():", b.getType())
runtime.log("c.getType():", c.getType())
runtime.log("d.getType():", d.getType())
runtime.log("e.getType():", e.getType())
runtime.error("stop")

Định dạng cơ bản của mỗi biếngetType()Load nào sẽ được sử dụng. Trong nền tảng FMZ, các loại giá trị sẽ được đánh giá là dữ liệu float vì nền kịch bản PINE được thực hiện bằng ngôn ngữ Javascript.

Chức năng tích hợp

Khi gọi chức năng, bạn có thể chỉ định tên của tham số, bạn có thể truyền biến trực tiếp ở vị trí tham số tương ứng, cũng hỗ trợ sử dụng hỗn hợp. Ví dụ:

plot(close, title="test plot")     // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"

Sau khi chỉ định tên tham số, không thể truyền biến trực tiếp như một tham số, và các tham số sau đó phải được viết dưới dạng tên tham số.

// plot(close, title="test", color.red)    // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red)             // 正确写法

khung thời gian

khung thời gian.in_seconds

sẽ được chuyển đếntimeframeThời gian chu kỳ của tham số được chuyển đổi thành giây.

timeframe.in_seconds(timeframe)

Ví dụ

// Get chart timeframe:
i_tf = input.timeframe("1D")

// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)

plot(tf)

Trả về giá trị timeframeSố giây trong một đường K của int được thể hiện dưới dạng.

Các tham số

  • timeframe(simple string) chu kỳ thời gian↑ tùy chọn↑ mặc định là timeframe.period↑

Nhận xétĐối vớitimeframe>=1M hàm tính theo số giây trong một tháng 30.4167 (365/12) ngày.

Hẹn gặp lại input.timeframe timeframe.period

ticker

ticker.heikinashi

Tạo một mã nhận dạng yêu cầu trượt giá trị đường K trung bình.

ticker.heikinashi(symbol)

Ví dụ

heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)

Trả về giá trị 股票代码的字符串值,可以提供给request.security函数。

Các tham số

  • symbol(simple string) Nhãn nhận dạng mã hóa hàng hóa.

Hẹn gặp lại syminfo.tickerid syminfo.ticker request.security

yêu cầu

request.data

Đơn giản là bạn cần phải có một số thông tin.

request.data(url, attribute)

Ví dụ

/*backtest
start: 2024-09-01 16:00:00
end: 2024-10-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/

var chart_data = "https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data"
spotPrice = request.data(chart_data, "$.spot_close_price")
futuresPrice = request.data(chart_data, "$.future_close_price")
diff = futuresPrice - spotPrice

plot(diff, "永续-现货差价")
plot(futuresPrice, "期货价格", overlay=true)
plot(spotPrice, "现货价格", overlay=true)

if diff > 80 and strategy.position_size >= 0
    runtime.log("diff > 80")
    strategy.entry("Enter Short", strategy.short)
if diff < 60 and strategy.position_size <= 0
    runtime.log("diff < 60")
    strategy.entry("Enter Short", strategy.long)

Trả về giá trịCác tham sốattributeDòng dữ liệu được chỉ định.

Các tham số

  • url(simple string) URL của nguồn dữ liệu được yêu cầu, định dạng dữ liệu của nguồn dữ liệu được trả lời cần phải đáp ứng các yêu cầu (ít nhất là chứa thuộc tính time、data):{"data": [], "schema": ["time", "data"]}◎ Có thể tham khảo các định dạng dữ liệu trong ví dụ:

    {
        "data": [
            [1720051200000, "{\"spot_close_price\" : 57050.01, \"future_close_price\" : 57045.9}"],
            [1720137600000, "{\"spot_close_price\" : 56628.79, \"future_close_price\" : 56604.9}"],
            // ...
        ],
        "schema": ["time", "data"]
    }
    
  • attribute(simple string) Đặt tên thuộc tính, trả về dữ liệu cần thiết; ví dụ:"$.spot_close_price"Sử dụng$.Như một tiền đề, tên thuộc tính phù hợp với thuộc tính trong trường data trong dữ liệu được trả lời khi nguồn dữ liệu được yêu cầu

Nếu có lỗi, cần kiểm trarequest.dataNếu không truy vấn dữ liệu trong chuỗi thời gian truy vấn, dữ liệu sẽ trả lại lỗi.

Trong trường hợp này, data-data truy vấn dữ liệu trong câu lệnh SQL:

WITH latest_data AS (
    SELECT 
        klines.spot_1d.Time AS time,
        CONCAT('{\"spot_close_price\" : ', klines.spot_1d.Close, ', \"future_close_price\" : ', klines.future_1d.Close, '}') AS data
    FROM 
        klines.spot_1d
    JOIN 
        klines.future_1d
    ON 
        klines.spot_1d.Time = klines.future_1d.Time
    WHERE
        klines.spot_1d.Symbol = 'btc_usdt'
    AND 
        klines.future_1d.Symbol = 'btc_usdt.swap'
    AND 
        klines.spot_1d.Exchange = 'Binance'
    AND 
        klines.future_1d.Exchange = 'Binance'
    ORDER BY 
        klines.spot_1d.Time DESC
    LIMIT 100
)
SELECT * FROM latest_data
ORDER BY time ASC;

Có thể xem trên FMZ.Khám phá dữ liệuTìm kiếm trang, tạo liên kết dữ liệu, ví dụ:https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data

request.security

Bạn cần một loại khác / độ phân giải.

request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency) 

Ví dụ

s = request.security(syminfo.tickerid, "D", close)   // 1 Day
plot(s)

expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)

// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)

Trả về giá trịyêu cầu series

Các tham số

  • symbol(simple string) Mã hàng hóa.
  • timeframe(simple string) chu kỳ thời gian. Dây trống sẽ được giải thích là chu kỳ thời gian hiện tại của biểu đồ.
  • expression(series int/float/bool/color) có thể được gọi từ request.security và trả về một biểu thức. Nó có thể là một chuỗi hoặc một tập hợp các phần tử có thể được chuyển đổi thành một chuỗi.
  • gaps(barmerge_gaps) chính sách kết hợp dữ liệu được yêu cầu ((yêu cầu dữ liệu tự động kết hợp với dữ liệu OHLC trong bộ dữ liệu chính)). Giá trị có thể: barmerge.gaps_on, barmerge.gaps_off。 barmerge.gaps_on - dữ liệu được yêu cầu được kết hợp với khoảng cách có thể ((na giá trị) ). barmerge.gaps_off - dữ liệu được yêu cầu được kết hợp liên tục không ngừng, tất cả các khoảng trống được lấp đầy trước giá trị hiện có gần đây nhất。 giá trị mặc định là barmerge.gaps_off。
  • lookahead(barmerge_lookahead) cho chính sách hợp nhất dữ liệu được yêu cầu. Các giá trị có thể: barmerge.lookahead_on, barmerge.lookahead_off. Từ phiên bản 3, giá trị mặc định là barmerge.lookahead_off.
  • ignore_invalid_symbol(const bool) Một tham số tùy chọn. Nếu không tìm thấy hàng hóa được chỉ định, xác định hành vi của hàm: nếu là false, kịch bản sẽ dừng lại và trả lại lỗi khi chạy; nếu là true, hàm sẽ trả lại na và tiếp tục thực hiện. Giá trị mặc định là false.
  • currency(simple string) Chuyển đổi giá trị liên quan đến tiền tệ của hàng hóa (ví dụ OHLC) sang tiền tệ; sau đó tính toán giá trị sau khi chuyển đổi theo hàm số biểu thức; tỷ lệ chuyển đổi được sử dụng dựa trên tỷ lệ hối đoái hàng ngày của ngày trước đối với cặp FX_IDC (với so sánh với đường K được tính toán); tùy chọn. Giá trị mặc định là syminfo.currency. Giá trị có thể: một chuỗi ba chữ cái hoặc currency với mã tiền tệ định dạng ISO 4217 (ví dụ: USD). Một trong những biến số trong không gian tên, chẳng hạn như currency.USD.

Nhận xétMã PineScript sử dụng chức năng này để thực hiện các tính toán khác nhau đối với các bản ghi lịch sử và dữ liệu thời gian thực.Nếu bạn muốn chỉ định các tham số bổ sung cho hàng hóa được yêu cầu, chẳng hạn như thời gian giao dịch hoặc loại điều chỉnh, bạn có thể thay đổi tùy chọn của bạn.您可以使用ticker.new() hàm. Không thể sử dụng biến ticker tick để truyền điểm sai cho hàm này. Bạn có thể sử dụng tickticker.newHình thức biểu diễn chuỗi của biến số hoặc mã cổ phiếu, ví dụ như AAPL + MSFT * TSLA .Hiện tại, một kịch bản có thể có tối đa 40 cuộc gọi request.security. Xin lưu ý rằng việc sử dụng biến/chức năng này có thể dẫn đến việc vẽ lại chỉ số. Các tham số độ phân giải cho phép: 1S, 5S, 15S, 30S - Khoảng giây (chu kỳ biểu đồ nên nhỏ hơn hoặc bằng chu kỳ được yêu cầu) Từ 1 đến 1440 phút Từ 1D đến 365D Từ 1W đến 52W trong vài tuần. Từ 1M đến 12M trong vài tháng.

Hẹn gặp lại syminfo.ticker syminfo.tickerid timeframe.period ta.correlation barmerge.lookahead_off barmerge.lookahead_on

str

str.contains

NếusourceDòng chứastrDòng chữ cái, trả về true, nếu không trả về false.

str.contains(source, str)

Ví dụ

// If the current chart is a continuous futures chart, e.g “BTC1!”, then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)

Trả về giá trịNếusourceTìm trong chuỗistr, thì là true, nếu không thì là false.

Các tham số

  • source(series string) Dòng mã nguồn
  • str(series string) Dữ liệu tìm kiếm.

Hẹn gặp lại str.pos str.match

str.endswith

NếusourceDòng chữ cái được tạo bằngstrKết thúc của chuỗi con được chỉ định trong trả về true, nếu không trả về false.

str.endswith(source, str)

Trả về giá trịNếusourceDòng chữ cái được tạo bằngstrKết thúc của chuỗi con được chỉ định trong là true, nếu không là false.

Các tham số

  • source(series string) Dòng mã nguồn
  • str(series string) Dữ liệu tìm kiếm.

Hẹn gặp lại str.startswith

str.startswith

NếusourceDòng chữ cái được tạo bằngstrĐầu của một chuỗi con được chỉ định trong, trả về true, nếu không trả về false.

str.startswith(source, str)

Trả về giá trịNếusourceDòng chữ cái được tạo bằngstrĐầu của một chuỗi con được chỉ định trong là true, nếu không là false.

Các tham số

  • source(series string) Dòng mã nguồn
  • str(series string) Dữ liệu tìm kiếm.

Hẹn gặp lại str.endswith

str.substring

Trở lại một chuỗi mới, nó làsourceDòng chữ cái của một chuỗi. Dòng chữ cái của một chuỗi.begin_posChữ trong chỉ mục được chỉ định bắt đầu và mở rộng đếnsourceend_pos - 1 .

str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)

Ví dụ

sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":")        // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
    runtime.log(tkr)

Trả về giá trịDòng chữ cái được lấy từ chuỗi nguồn.

Các tham số

  • source(series string) lấy từ đó chuỗi nguồn của chuỗi con.
  • begin_pos(series int) là vị trí bắt đầu của chuỗi con được trích xuất. Nó là độc quyền (trong chuỗi con được trích xuất bao gồm các ký tự của vị trí đó).
  • end_pos(series int) kết thúc vị trí. Nó là độc quyền. Các chuỗi được trích xuất không bao gồm các ký tự của vị trí. Tùy chọn.sourceChiều dài của chuỗi.

Nhận xétChỉ mục chuỗi bắt đầu từ 0; nếubegin_posend_pos, hàm trả về một chuỗi trống.

Hẹn gặp lại str.contains str.pos str.match

str.tonumber

str.tonumber(string)

Trả về giá trịNếu chứa một số hợp lệ, đó là kiểu dấu tròn của chuỗi, nếu không thì là na.

Các tham số

  • string(series string) dạng biểu diễn chuỗi int hoặc float.

str.format

Chuyển đổi các chuỗi và giá trị định dạng thành các chuỗi định dạng. Các chuỗi định dạng có thể chứa văn bản văn bản và một ký tự trong các dấu ngoặc lớn {} cho mỗi giá trị định dạng. Mỗi ký tự bao gồm chỉ số thay thế các tham số cần thiết của nó (bắt đầu từ 0), và một ký tự định dạng tùy chọn. Chỉ mục cho biết vị trí của tham số trong danh sách các tham số str.format.

str.format(formatString, arg0, arg1, ...)

Ví dụ

// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)

// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)

// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)

// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)

// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)

// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)

// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)

// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)

// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)

Trả về giá trịDữ liệu được định dạng.

Các tham số

  • formatString(series string) Dạng chuỗi.
  • arg0, arg1, ...(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) là giá trị cần định dạng.

Nhận xétTất cả các dấu ngoặc trong kiểu không được trích dẫn phải được cân bằng. Ví dụ, ab {0} de" và "ab } de" là kiểu hợp lệ, nhưng "ab {0} de, ab } de" và {" không hợp lệ.

str.length

Trả về số nguyên tương ứng với số ký tự trong chuỗi.

str.length(string)

Trả về giá trịSố ký tự trong chuỗi nguồn.

Các tham số

  • string(series string) Dòng mã nguồn

str.lower

Trả về một chuỗi mới mà tất cả các chữ cái được chuyển đổi thành chữ cái nhỏ.

str.lower(source)

Trả về giá trịTất cả các chữ cái đã được chuyển thành các chuỗi mới bằng chữ viết nhỏ.

Các tham số

  • source(series string) Dòng chữ được chuyển đổi.

Hẹn gặp lại str.upper

str.upper

Trả về một chuỗi mới mà tất cả các chữ cái được chuyển đổi thành chữ cái lớn.

str.upper(source)

Trả về giá trịTất cả các chữ cái đã được chuyển thành các chuỗi mới chữ cái lớn.

Các tham số

  • source(series string) Dòng chữ được chuyển đổi.

Hẹn gặp lại str.lower

str.match

Nếu phù hợpregexMột biểu thức chính xác sẽ trả vềsourceDòng mới của một chuỗi, nếu không nó sẽ trả về na.

str.match(source, regex) 

Ví dụ

s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")

// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")

if barstate.islastconfirmedhistory
    runtime.log(tickerid) // "EXCHANGE_NAME:SYMBOL_NAME"

Trả về giá trị sourceVà chúng ta có thể tạo ra một chuỗi mới nếu nó phù hợp với mộtregexMột biểu thức chính xác, nếu không là na.

Các tham số

  • source(series string) Dòng mã nguồn
  • regex(series string) biểu thức chính thức phù hợp với chuỗi này.

Nhận xétPhương thức trả vềsourceMột biểu thức chính thức xuất hiện lần đầu tiên trong một chuỗi.regexBiểu tượng ngược dấu ngoặc \ trong một chuỗi cần phải được chuyển nghĩa bằng cách sử dụng dấu ngoặc ngược bổ sung, ví dụ như \d đại diện cho biểu thức chính thức \d.

Hẹn gặp lại str.contains str.substring

str.pos

Trở lạisourceLần đầu tiên xuất hiện trong chuỗistrĐịa điểm của chuỗi, nếu không sẽ trả về na.

str.pos(source, str)

Trả về giá trị strDòng chữ cáisourceVị trí trong chuỗi.

Các tham số

  • source(series string) Dòng mã nguồn
  • str(series string) Dữ liệu tìm kiếm.

Nhận xétChỉ mục chuỗi bắt đầu từ 0.

Hẹn gặp lại str.contains str.match str.substring

str.replace

Trở lại một chuỗi mới, trong đó n + 1 lần xuất hiệntargetDòng chữ cái và những gì đã xuất hiện trước đótargetĐổi chuỗi thànhreplacementDòng chữ cái, trong đó N làoccurrenceTrong đó, N là chỉ mục phù hợp với string đích được thay thế trong string nguồn.

str.replace(source, target, replacement, occurrence)

Ví dụ

var source = "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"

// Replace first occurrence of "EXCHANGE1" with "EXCHANGE2" replacement string
var newSource = str.replace(source, "EXCHANGE1",  "EXCHANGE2", 0)

if barstate.islastconfirmedhistory
    // Display "EXCHANGE2:SYMBOL1 / EXCHANGE1:SYMBOL2"
    runtime.log(newSource)

Trả về giá trịDữ liệu đã được xử lý

Các tham số

  • source(series string) Dòng mã nguồn
  • target(series string) được thay thế
  • replacement(series string) Dòng chữ mà bạn muốn chèn thay vì mục tiêu.
  • occurrence(series int) mục tiêu string để thay thế là mục tiêu string xuất hiện trong nguồn string.

Hẹn gặp lại str.replace_all str.match

str.replace_all

Sử dụng thay thế chuỗi để thay thế mỗi lần xuất hiện trong chuỗi nguồn.

str.replace_all(source, target, replacement)

Trả về giá trịDữ liệu đã được xử lý

Các tham số

  • source(series string) Dòng mã nguồn
  • target(series string) được thay thế
  • replacement(series string) Mỗi lần xuất hiện, các chuỗi mục tiêu sẽ thay thế

str.split

Phân chia các chuỗi thành các chuỗi chuỗi con và trả về ID của chúng.

str.split(string, separator)

Trả về giá trịID của mảng string.

Các tham số

  • string(series string) Dòng mã nguồn
  • separator(series string) Một chuỗi phân biệt từng chuỗi con.

str.tostring

str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)

Trả về giá trị valueDạng biểu thị của chuỗi tham số. NếuvalueCác tham số là một chuỗi và được trả về như cũ. KhivalueTrong trường hợp na, hàm trả về string NaN.

Các tham số

  • value(series int/float/bool/string/int[]/float[]/bool[]/string[]) mà các phần tử của nó được chuyển đổi thành giá trị của chuỗi hoặc ID mảng.
  • format(serial string) Format string. Chấp nhận các định dạng.* hằng số: format.mintick, format.percent, format.volume. Tùy chọn. Giá trị mặc định là #.##########

Nhận xétCác định dạng của các giá trị điểm trôi cũng sẽ đặt bốn năm vào các giá trị này khi cần thiết, ví dụ: str.tostring ((3.99, #) sẽ trả về 4. Để hiển thị số 0 sau, hãy sử dụng 0 thay vì #. Ví dụ, #.000. Khi sử dụng format.mintick, giá trị này đặt 4 vào 5 cho đến số gần nhất có thể được chia với syminfo.mintick mà không có số dư. Nếu x là một chuỗi, nó sẽ trả về cùng một giá trị chuỗi. Các tham số kiểu Bool trả về hàm true hoặc hàm false. Khi x là na, hàm trả về NaN.

màu sắc

color.new

Màu sắc chức năng sẽ chỉ định độ minh bạch được áp dụng cho một màu nào đó.

color.new(color, transp)

Ví dụ

plot(close, color=color.new(color.red, 50))

Trả về giá trịNhững màu sắc có độ minh bạch nhất định.

Các tham số

  • color(màu loạt)
  • transp(series int/float) Các giá trị có sẵn từ 0 (không rõ ràng) đến 100 (không rõ ràng)

Nhận xétSử dụng rất nhiều tham số (ví dụ, hàm đơn giản, hàm đầu vào hoặc hàm loạt) sẽ ảnh hưởng đến màu sắc hiển thị trên trang thẻ của cài đặt khóa kịch bản / style.

color.rgb

Sử dụng mô hình màu RGB để tạo ra các màu sắc mới với độ minh bạch.

color.rgb(red, green, blue, transp)

Ví dụ

plot(close, color=color.rgb(255, 0, 0, 50))

Trả về giá trịNhững màu sắc có độ minh bạch nhất định.

Các tham số

  • red(series int/float) Đặt màu đỏ. Các giá trị có thể là từ 0 đến 255.
  • green(series int/float) màu xanh lá cây. Các giá trị có thể là từ 0 đến 255.
  • blue(series int/float) Tâm màu xanh. Các giá trị có thể là từ 0 đến 255.
  • transp(series int/float) Tùy chọn. Màu sắc minh bạch. Các giá trị có thể từ 0 (không minh bạch) đến 100 (hình minh bạch). Giá trị mặc định là 0.

Nhận xétSử dụng rất nhiều tham số (ví dụ, hàm đơn giản, hàm đầu vào hoặc hàm loạt) sẽ ảnh hưởng đến màu sắc hiển thị trên trang thẻ của cài đặt khóa kịch bản / style.

thời gian chạy

runtime.debug

Nhập thông tin thay đổi trên bảng điều khiển.

FMZ PINE là một ngôn ngữ có chức năng đặc biệt.runtime.debug(value), chỉ có một tham số.

runtime.log

Nhận được nội dung trong nhật ký.

FMZ PINE là một ngôn ngữ có chức năng đặc biệt.runtime.log(1, 2, 3, close, high, ...), có thể truyền nhiều tham số.

runtime.error

Khi được gọi, nó sẽ gây ra lỗi khi chạy và có thể gây ra sự cố.messageThông báo sai được chỉ định trong tham số.

runtime.error(message)

Các tham sốmessage (series string) thông báo sai.

đầu vào

đầu vào

Thêm đầu vào vào trang nhãn đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này tự động phát hiện loại tham số được sử dụng cho hàm undefval và sử dụng plugin đầu vào tương ứng.

input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)

Ví dụ

i_switch = input(true, "On/Off")     // 设置true,默认勾选
plot(i_switch ? open : na)

i_len = input(7, "Length")
i_src = input(close, "Source")       // 下拉框,默认选择close
plot(ta.sma(i_src, i_len))

i_col = input(color.red, "Plot Color")
plot(close, color=i_col)

i_text = input("Hello!", "Message")
runtime.log(i_text)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const int/float/bool/string/color or source-type built-ins) Định giá trị mặc định của một biến nhập được đề xuất trong trang cài đặt / nhập float của kịch bản và người dùng kịch bản có thể thay đổi nó.closehlc3Và rồi.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.

Nhận xétGiá trị trả về của hàm input phải luôn được gán cho các biến; xem ví dụ trên

Hẹn gặp lại input.bool input.color input.int input.float input.string input.timeframe input.source

input.source

Thêm đầu vào vào trang nhãn đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Tính năng này thêm một menu thả xuống để cho phép người dùng chọn nguồn tính toán, chẳng hạn như close, hl2, vv. Nếu kịch bản chỉ chứa một cuộc gọi input.source (), người dùng cũng có thể chọn đầu ra của một chỉ số khác trên biểu đồ làm nguồn.

input.source(defval, title, tooltip, inline, group)

Ví dụ

i_src = input.source(close, "Source")
plot(i_src)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(series int/float) xác định các cài đặt hàng loạt của kịch bản / Đặt giá trị mặc định cho các biến đầu vào được đề xuất trong trang thẻ hàng loạt, người dùng có thể thay đổi từ đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.

Nhận xét input.source函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.int input.float input.string input.timeframe input.color input

input.string

Thêm đầu vào vào menu tùy chọn đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này thêm một trường đầu vào chuỗi vào đầu vào của kịch bản.

input.string(defval, title, options, tooltip, inline, group, confirm)

Ví dụ

i_text = input.string("Hello!", "Message")
runtime.log(i_text)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const string) xác định các cài đặt con số của kịch bản / nhập giá trị mặc định của một biến đầu vào được đề xuất trong trang thẻ con số, người dùng có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • options(List of constants: [...]) Danh sách các tùy chọn có thể chọn.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.string函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.int input.float input.timeframe input.source input.color input

input.bool

Thêm đầu vào vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản.

input.bool(defval, title, tooltip, inline, group, confirm)

Ví dụ

i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const bool) xác định các cài đặt con số của kịch bản / nhập các giá trị mặc định cho các biến đầu vào được đề xuất trong trang thẻ con số mà người dùng có thể thay đổi nó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.bool函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.int input.float input.string input.timeframe input.source input.color input

input.int

Thêm đầu vào vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này thêm các trường đầu vào bằng số nguyên trong đầu vào của kịch bản.

input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm) 
input.int(defval, title, options, tooltip, inline, group, confirm)

Ví dụ

i_len1 = input.int(10, "Length 1", minval=5, maxval=21, step=1)
plot(ta.sma(close, i_len1))

i_len2 = input.int(10, "Length 2", options=[5, 10, 21])
plot(ta.sma(close, i_len2))

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const int) xác định các cài đặt con số của kịch bản / nhập giá trị mặc định của biến đầu vào được đề xuất trong trang thẻ con số, người dùng kịch bản có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • minval(const int) là giá trị tối thiểu có thể của một biến nhập.
  • maxval(const int) Giá trị tối đa có thể của biến nhập.
  • step(const int) được sử dụng để tăng/giảm bước dài của đầu vào. Tùy chọn.
  • options(tuple of const int values: [val1, val2,...]) Dưới đây là danh sách các tùy chọn được chọn từ menu thả xuống, được tách bằng dấu chấm và được gộp lại bằng dấu ngoặc kép: [val1, val2,...];; không thể sử dụng khi sử dụng tham số này.minvalmaxvalstepCác tham số.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.int函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.float input.string input.timeframe input.source input.color input

input.float

Thêm đầu vào vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản.

input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)

Ví dụ

i_angle1 = input.float(0.5, "Sin Angle", minval=-3.14, maxval=3.14, step=0.02)
plot(math.sin(i_angle1) > 0 ? close : open, "sin", color=color.green)

i_angle2 = input.float(0, "Cos Angle", options=[-3.14, -1.57, 0, 1.57, 3.14])
plot(math.cos(i_angle2) > 0 ? close : open, "cos", color=color.red)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const int/float) xác định giá trị mặc định của biến đầu vào được đề xuất trong trang cài đặt/nhập float của kịch bản và người dùng kịch bản có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • minval(const int/float) Giá trị tối thiểu có thể của biến nhập.
  • maxval(const int/float) Giá trị tối đa có thể của biến nhập.
  • step(const int/float) được sử dụng để tăng/giảm bước nhập. Tùy chọn.
  • options(tuple of const int/float values: [val1, val2,...]) danh sách các tùy chọn được chọn từ menu thả xuống, được tách bằng dấu chấm và gộp lại bằng dấu ngoặc kép: [val1, val2,...];; không thể sử dụng khi sử dụng tham số nàyminvalmaxvalstepCác tham số.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.float函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.int input.string input.timeframe input.source input.color input

input.color

Thêm đầu vào vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này thêm một bộ chọn màu cho phép người dùng chọn màu sắc và độ minh bạch từ bảng màu hoặc giá trị 16 chữ số.

input.color(defval, title, tooltip, inline, group, confirm) 

Ví dụ

i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const color) xác định các cài đặt con số của kịch bản / Đưa vào giá trị mặc định của các biến đầu vào được đề xuất trong trang thẻ con số, người dùng có thể thay đổi từ đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.color函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.int input.float input.string input.timeframe input.source input

input.price

Sử dụng cài đặt / nhập thẻ giá để thêm nhập giá vào các tập lệnh.confirm = trueTác động chế độ đầu vào tương tác, chọn giá bằng cách nhấp vào biểu đồ.

input.price(defval, title, tooltip, inline, group, confirm) 

Ví dụ

price1 = input.price(title="Date", defval=42)
plot(price1)

price2 = input.price(54, title="Date")
plot(price2)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const int/float) xác định các cài đặt phím của kịch bản / Đặt giá trị mặc định cho các biến đầu vào được đề xuất trong trang thẻ phím, người dùng có thể thay đổi nó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, bật chế độ đầu vào tương tác và hoàn thành lựa chọn bằng cách nhấp vào biểu đồ khi thêm chỉ số vào biểu đồ, hoặc hoàn thành lựa chọn bằng cách chọn chỉ số và sau đó di chuyển chọn.

Nhận xétKhi sử dụng chế độ tương tác, nếu hai hàm được gọi đối với nhauinlineCác tham số sử dụng cùng một tham số, bạn có thể sử dụng các đầu vào thời gian kết hợp với đầu vào giá.

Hẹn gặp lại input.bool input.int input.float input.string input.resolution input.source input.color input

input.timeframe

Thêm đầu vào vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này thêm một danh sách kéo xuống, cho phép người dùng chọn một chu kỳ thời gian cụ thể thông qua trình chọn chu kỳ thời gian và trả lại nó như một chuỗi. Các trình chọn bao gồm các chu kỳ thời gian tùy chỉnh mà người dùng có thể thêm vào menu kéo xuống theo chu kỳ thời gian mà người dùng có thể sử dụng biểu đồ.

input.timeframe(defval, title, options, tooltip, inline, group, confirm)

Ví dụ

i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security(syminfo.tickerid, i_res, close)
plot(s)

Trả về giá trịNhập giá trị biến

Các tham số

  • defval(const string) xác định các cài đặt con số của kịch bản / nhập giá trị mặc định của một biến đầu vào được đề xuất trong trang thẻ con số, người dùng có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số đó.
  • title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề nhập. Nếu đã chỉ định tiêu đề nhưng tiêu đề trống, tên sẽ là một chuỗi trống.
  • options(tuple of const string values: [val1, val2,...]) Danh sách các tùy chọn có thể chọn.
  • tooltip(const string) Chữ này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.
  • inline(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một tham số trong một dòng. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để xác định đầu vào thuộc cùng một dòng.
  • group(const string) Tạo tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi ký tự số tập hợp.
  • confirm(const bool) Nếu đúng, người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi thêm chỉ số vào biểu đồ. Giá trị mặc định là false.

Nhận xét input.timeframe函数的结果总是应该分配给一个变量,见上面的例子。

Hẹn gặp lại input.bool input.int input.float input.string input.source input.color input

input.integer

Không

input.resolution

Không

ta

ta.alma

Arnaud Legoux đường trung bình di chuyển. Nó sử dụng phân bố Gauss như một trọng lượng cho các giá trị trung bình di chuyển.

ta.alma(series, length, offset, sigma) 
ta.alma(series, length, offset, sigma, floor) 

Ví dụ

plot(ta.alma(close, 9, 0.85, 6))

// same on pine, but much less efficient
pine_alma(series, windowsize, offset, sigma) =>
    m = offset * (windowsize - 1)
    //m = math.floor(offset * (windowsize - 1)) // Used as m when math.floor=true
    s = windowsize / sigma
    norm = 0.0
    sum = 0.0
    for i = 0 to windowsize - 1
        weight = math.exp(-1 * math.pow(i - m, 2) / (2 * math.pow(s, 2)))
        norm := norm + weight
        sum := sum + series[windowsize - i - 1] * weight
    sum / norm
plot(pine_alma(close, 9, 0.85, 6))

Trả về giá trịArnaud Legoux đường trung bình di chuyển

Các tham số

  • series(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).
  • offset(simple int/float) điều khiển sự cân bằng giữa độ mượt (gần 1) và độ đáp ứng (gần 0).
  • sigma(simple int/float) thay đổi độ mượt của ALMA. Sigma càng lớn, ALMA càng mượt.
  • floor(simple bool) Các tham số có thể chọn được. Trước khi tính toán ALMA, chỉ định xem tính toán độ lệch là giới hạn thấp hay không. Giá trị mặc định là false.

Hẹn gặp lại ta.sma ta.ema ta.rma ta.wma ta.vwma ta.swma

ta.sma

Chức năng sma trả về giá trị trung bình di chuyển, nghĩa là giá trị y cuối cùng của x, chia cho y.

ta.sma(source, length) 

Ví dụ

plot(ta.sma(close, 15))

// same on pine, but much less efficient
pine_sma(x, y) =>
    sum = 0.0
    for i = 0 to y - 1
        sum := sum + x[i] / y
    sum
plot(pine_sma(close, 15))

Trả về giá trị lengthK đường trở lạisourceĐường trung bình di chuyển đơn giản.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.ema ta.rma ta.wma ta.vwma ta.swma ta.alma

ta.cog

cog (cốt lõi) là một chỉ số dựa trên thống kê và tỷ lệ vàng Fibonacci.

ta.cog(source, length) 

Ví dụ

plot(ta.cog(close, 10))

// the same on pine
pine_cog(source, length) =>
    sum = math.sum(source, length)
    num = 0.0
    for i = 0 to length - 1
        price = source[i]
        num := num + price * (i + 1)
    -num / sum

plot(pine_cog(close, 10))

Trả về giá trịTrọng tâm

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.stoch

ta.dev

衡量系列与其ta.sma之间的差异

ta.dev(source, length) 

Ví dụ

plot(ta.dev(close, 10))

// the same on pine
pine_dev(source, length) =>
    mean = ta.sma(source, length)
    sum = 0.0
    for i = 0 to length - 1
        val = source[i]
        sum := sum + math.abs(val - mean)
    dev = sum/length
plot(pine_dev(close, 10))

Trả về giá trị lengthK đường trở lạisourceNhững người khác cũng có thể làm điều đó.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.variance ta.stdev

ta.stdev

ta.stdev(source, length, biased) 

Ví dụ

plot(ta.stdev(close, 5))

//the same on pine
isZero(val, eps) => math.abs(val) <= eps

SUM(fst, snd) =>
    EPS = 1e-10
    res = fst + snd
    if isZero(res, EPS)
        res := 0
    else
        if not isZero(res, 1e-4)
            res := res
        else
            15

pine_stdev(src, length) =>
    avg = ta.sma(src, length)
    sumOfSquareDeviations = 0.0
    for i = 0 to length - 1
        sum = SUM(src[i], -avg)
        sumOfSquareDeviations := sumOfSquareDeviations + sum * sum

    stdev = math.sqrt(sumOfSquareDeviations / length)
plot(pine_stdev(close, 5))

Trả về giá trịTiêu chuẩn kém

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).
  • biased(series bool) xác định ước tính nào nên được sử dụng↑ tùy chọn↑ giá trị mặc định là true↑

Nhận xétNếubiasedNếu true, hàm sẽ tính toán bằng cách sử dụng ước tính thiên vị của tổng thể, nếu false - ước tính không thiên vị của mẫu.

Hẹn gặp lại ta.dev ta.variance

ta.ema

Chức năng ema trả về đường trung bình di chuyển cân bằng chỉ số. Trong ema, yếu tố cân bằng tăng theo chỉ số giảm. Nó được tính bằng công thức sau: EMA = alpha * source + (1 - alpha) * EMA[1], trong đó alpha = 2 / (length + 1).

ta.ema(source, length) 

Ví dụ

plot(ta.ema(close, 15))

//the same on pine
pine_ema(src, length) =>
    alpha = 2 / (length + 1)
    sum = 0.0
    sum := na(sum[1]) ? src : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_ema(close,15))

Trả về giá trị sourceChỉ số của đường trung bình di chuyển, alpha = 2 / (chiều dài + 1) ‖.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(simple int) Số lượng K đường (độ dài).

Nhận xétXin lưu ý rằng việc sử dụng biến/chức năng này có thể dẫn đến việc vẽ lại các chỉ số.

Hẹn gặp lại ta.sma ta.rma ta.wma ta.vwma ta.swma ta.alma

ta.wma

Chức năng wma trả vềlengthĐường KsourceTrong wma, các yếu tố cân nhắc được giảm theo số bậc toán học.

ta.wma(source, length) 

Ví dụ

plot(ta.wma(close, 15))

// same on pine, but much less efficient
pine_wma(x, y) =>
    norm = 0.0
    sum = 0.0
    for i = 0 to y - 1
        weight = (y - i) * y
        norm := norm + weight
        sum := sum + x[i] * weight
    sum / norm
plot(pine_wma(close, 15))

Trả về giá trị lengthK đường trở lạisourceĐường trung bình di chuyển cân nặng.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.sma ta.ema ta.rma ta.vwma ta.swma ta.alma

ta.swma

Đường trung chuyển cân bằng đối xứng có chiều dài cố định: cân nặng: [1/6,2 / 6,2 / 6,1 / 6].

ta.swma(source)

Ví dụ

plot(ta.swma(close))

// same on pine, but less efficient
pine_swma(x) =>
    x[3] * 1 / 6 + x[2] * 2 / 6 + x[1] * 2 / 6 + x[0] * 1 / 6
plot(pine_swma(close))

Trả về giá trịĐường trung chuyển cân đối.

Các tham số

  • source(series int/float) Dòng nguồn.

Hẹn gặp lại ta.sma ta.ema ta.rma ta.wma ta.vwma ta.alma

ta.hma

Chức năng hma trả về đường trung bình di chuyển của thân tàu HMA.

ta.hma(source, length)

Ví dụ

src = input(defval=close, title="Source")
length = input(defval=9, title="Length")
hmaBuildIn = ta.hma(src, length)
plot(hmaBuildIn, title="Hull MA", color=#674EA7)

Trả về giá trịTrả về Hull Moving Average của Hull

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(simple int) Số lượng K dây

Hẹn gặp lại ta.ema ta.rma ta.wma ta.vwma ta.sma

ta.rma

Đường trung chuyển được sử dụng trong RSI. Nó là đường trung chuyển index cộng với trọng số alpha cộng với trọng số = 1 / chiều dài.

ta.rma(source, length)

Ví dụ

plot(ta.rma(close, 15))

//the same on pine
pine_rma(src, length) =>
  alpha = 1/length
  sum = 0.0
  sum := na(sum[1]) ? ta.sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_rma(close, 15))

Trả về giá trị sourceChỉ số trung bình di chuyển, alpha = 1 /length

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(simple int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.sma ta.ema ta.wma ta.vwma ta.swma ta.alma ta.rsi

ta.rsi

Chỉ số tương đối mạnh. Nó được sử dụng trong cuối cùnglengthK-LinesourceSự thay đổi lên và xuốngta.rma()Những người khác cũng có thể làm điều đó.

ta.rsi(source, length)

Ví dụ

plot(ta.rsi(close, 7))

// same on pine, but less efficient
pine_rsi(x, y) => 
    u = math.max(x - x[1], 0) // upward ta.change
    d = math.max(x[1] - x, 0) // downward ta.change
    rs = ta.rma(u, y) / ta.rma(d, y)
    res = 100 - 100 / (1 + rs)
    res

plot(pine_rsi(close, 7))

Trả về giá trịChỉ số RSI tương đối mạnh và yếu

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(simple int) Số lượng K đường (độ dài).

Hẹn gặp lại ta.rma

ta.tsi

Chỉ số mạnh và yếu thực sự. Nó sử dụng đường trung bình di chuyển của động lượng tiềm năng của các công cụ tài chính.

ta.tsi(source, short_length, long_length)

Trả về giá trịChỉ số mạnh và yếu thực sự. Giá trị trong phạm vi [-1,1].

Các tham số

  • source(series int/float) Dòng nguồn.
  • short_length(simple int) dài ngắn.
  • long_length(simple int) chiều dài của đường dây dài.

ta.roc

Chức năng roc (độ thay đổi)sourcegiá trị hiện tại vàsourceMột vài ngày trướclengthSự khác biệt giữa các giá trị. Tính toán bằng công thức sau: 100 * change (src, length) / src (length) ⋅

ta.roc(source, length)

Trả về giá trị lengthK đường trở lạisourceTỷ lệ thay đổi của các nước khác nhau.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

ta.range

Trả về sự khác biệt giữa giá trị tối thiểu và giá trị tối đa trong chuỗi.

ta.range(source, length)

Trả về giá trịSự khác biệt giữa giá trị nhỏ nhất và giá trị lớn nhất trong chuỗi.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

ta.macd

MACD (đường trung bình chênh lệch trôi chảy) ;; Nó nên tiết lộ sự thay đổi về sức mạnh, hướng, động lực và thời gian của xu hướng giá cổ phiếu ;;

ta.macd(source, fastlen, slowlen, siglen) 

Ví dụ

[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.orange)
plot(histLine, color=color.red, style=plot.style_histogram)

Nếu bạn chỉ cần một giá trị, hãy sử dụng ký hiệu thay thế như thế này:

Ví dụ

[_, signalLine, _] = ta.macd(close, 12, 26, 9)
plot(signalLine, color=color.orange)

Trả về giá trịBa bộ phận của dòng MACD: đường MACD, đường tín hiệu và đường đồ họa thẳng.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • fastlen(simple int) Các tham số đường nhanh
  • slowlen(simple int) Điểm số chiều dài chậm.
  • siglen(simple int) Các tham số về chiều dài tín hiệu.

Hẹn gặp lại ta.sma ta.ema

ta.mode

Trả về mô hình của chuỗi. Trả về giá trị tối thiểu nếu có nhiều giá trị có cùng tần số.

ta.mode(source, length)

Trả về giá trịMô hình của chuỗi.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

ta.median

Trả về số trung của chuỗi.

ta.median(source, length) 

Trả về giá trịSố trung của chuỗi.

Các tham số

  • source(series int/float) Các giá trị trong chuỗi đang được thực hiện.
  • length(series int) Số lượng K đường (độ dài).

ta.linreg

Đường cong quay ngược tuyến tính. Một đường cong phù hợp nhất với giá chỉ định trong khoảng thời gian được xác định bởi người dùng. Nó được tính bằng cách sử dụng các phép nhân tối thiểu hai. Kết quả của hàm này được tính bằng công thức sau: linreg = intercept + slope * (length - 1 - offset), trong đó intercept và slope được sử dụng.sourceGiá trị của phép tính hai lần nhỏ nhất của chuỗi.

ta.linreg(source, length, offset) 

Trả về giá trịĐường cong quay trở lại tuyến tính

Các tham số

  • source(series int/float) Dòng nguồn.
  • length(series int)
  • offset(simple int) di chuyển

ta.bb

Đường viền. Đường viền là một công cụ phân tích kỹ thuật, được định nghĩa bởi một tập các đường được phân cách với đường trung bình di chuyển đơn giản (SMA) của giá chứng khoán với hai độ lệch tiêu chuẩn (tích cực và tiêu cực), nhưng có thể được điều chỉnh theo sở thích của người dùng.

ta.bb(series, length, mult) 

Ví dụ

[middle, upper, lower] = ta.bb(close, 5, 4)
plot(middle, color=color.yellow)
plot(upper, color=color.yellow)
plot(lower, color=color.yellow)

// the same on pine
f_bb(src, length, mult) =>
    float basis = ta.sma(src, length)
    float dev = mult * ta.stdev(src, length)
    [basis, basis + dev, basis - dev]

[pineMiddle, pineUpper, pineLower] = f_bb(close, 5, 4)

plot(pineMiddle)
plot(pineUpper)
plot(pineLower)

Trả về giá trịBạch Ốc.

Các tham số

  • series(series int/float)

Thêm nữa

ồ ôiLàm thế nào để có nhiều giao dịch đồng thời với một hợp đồng Bitcoin?

Những đám mây nhẹXin vui lòng cho tôi biết, pine có thể giao dịch nhiều lần không? Và cũng có thể giao dịch xuyên suốt như JS không?

Lisa20231Xin cảm ơn vì đã cung cấp các tài liệu chi tiết.

nghệ thuậtWow! Làm thế nào để Pine Script sử dụng OKEX trên nền tảng này?

nghệ thuậtĐiều này đồng nghĩa với việc các chiến lược của nền tảng tradingview được sao chép trực tiếp vào nền tảng của nhà phát minh để sử dụng!

Những nhà phát minh định lượng - những giấc mơ nhỏNgôn ngữ PINE chỉ có thể thực hiện các chính sách một giống, nhiều giống là tốt nhất hoặc viết thiết kế bằng python, javascript, c ++.

Những nhà phát minh định lượng - những giấc mơ nhỏỒ, vâng, OKX là khá đặc biệt, môi trường tương tự của họ và môi trường thực của họ là cùng một địa chỉ, chỉ có một sự khác biệt ở nơi khác. Vì vậy, không có cách nào để chuyển đổi địa chỉ cơ sở để chuyển sang ổ đĩa tương tự.

Những đám mây nhẹKhông thể sử dụng okx analog dial............

Những nhà phát minh định lượng - những giấc mơ nhỏVấn đề kiến trúc đa dạng này không được giải quyết tốt, vì mỗi giao dịch giao diện khác nhau và không giới hạn tần số giao diện khác nhau, sẽ gây ra nhiều vấn đề.

Những nhà phát minh định lượng - những giấc mơ nhỏĐược rồi, cảm ơn các bạn đã đưa ra đề xuất, hãy báo cáo yêu cầu này nhé.

Những đám mây nhẹCảm thấy tốt hơn khi được kết hợp với JS, JS có thể thích nghi tốt hơn với nhiều cách giao dịch.

Người săn xu hướngBạn có nghĩ đến nhiều giống trong tương lai không?

Những nhà phát minh định lượng - những giấc mơ nhỏKhông lịch sự.

Những đám mây nhẹTốt, cảm ơn bạn rất nhiều.

Những nhà phát minh định lượng - những giấc mơ nhỏXin chào, tạm thời, chính sách ngôn ngữ PINE chỉ có thể làm một giống.

Những nhà phát minh định lượng - những giấc mơ nhỏXin cảm ơn vì sự ủng hộ của bạn.

Những nhà phát minh định lượng - những giấc mơ nhỏCó, có.

Những nhà phát minh định lượng - những giấc mơ nhỏPINE Template Library, các tham số có thể được thiết lập để chuyển đổi địa chỉ cơ sở của sàn giao dịch.