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

Trả về giá trịSố trung bình của các phần tử mảng.

Các tham số - id(int[]/float[]) đối tượng mảng.

Hẹn gặp lại


### array.mode

该函数返回阵列元素的模式。如果有多个具有相同频率的值,则返回最小值。

array.mode ((id))


**例子**
```pine
// array.mode example
a = array.new_float(0)
for i = 0 to 9
    array.push(a, close[i])
plot(array.mode(a))

Trả về giá trịMô hình của các phần tử mảng.

Các tham số - id(int[]/float[]) đối tượng mảng.

Hẹn gặp lại


### array.percentile_linear_interpolation

返回数组值的指定百分比(百分位数)小于或等于它的值,使用线性插值。

array.percentile_linear_interpolation ((id, phần trăm)


**参数**
- ```id``` (int[]/float[]) 阵列对象。
- ```percentage``` (series int/float) 必须等于或小于返回值的值的百分比。

**备注**
在统计数据中,百分位是出现在某个分数或低于某个分数的排名项目的百分比。此测量显示低于您测量的百分等级的标准频率分布中的分数百分比。线性插值估计两个排名之间的值。

**另见**
```array.new_float``` ```array.insert``` ```array.slice``` ```array.reverse``` ```order.ascending``` ```order.descending```

### array.percentile_nearest_rank

使用最近秩方法返回指定百分比的数组值(百分位数)小于或等于它的值。

array.percentile_nearest_rank ((id, phần trăm)


**参数**
- ```id``` (int[]/float[]) 阵列对象。
- ```percentage``` (series int/float) 必须等于或小于返回值的值的百分比。

**备注**
在统计数据中,百分位是出现在某个分数或低于某个分数的排名项目的百分比。 此测量显示低于您正在测量的百分排名的标准频率分布中的分数百分比。

**另见**
```array.new_float``` ```array.insert``` ```array.slice``` ```array.reverse``` ```order.ascending``` ```order.descending```

### array.percentrank

返回阵列中值的百分位排名。

array.percentrank ((id, index)


**参数**
- ```id``` (int[]/float[]) 阵列对象。
- ```index``` (series int) 计算其百分排名的值。

**备注**
百分位排名是数组中有多少元素小于或等于参考值的百分比。

**另见**
```array.new_float``` ```array.insert``` ```array.slice``` ```array.reverse``` ```order.ascending``` ```order.descending```

### array.range

该函数返回给定数组的最小值和最大值之间的差。

array.range ((id))


**例子**
```pine
// array.range example
a = array.new_float(0)
for i = 0 to 9
    array.push(a, close[i])
plot(array.range(a))

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

Các tham số - id(int[]/float[]) đối tượng mảng.

Hẹn gặp lại


### array.remove

该函数通过删除具有指定索引的元素来更改阵列的内容。

```array.remove(id, index)```

**例子**
```pine
// array.remove example
a = array.new_float(5,high)
removedEl = array.remove(a, 0)
plot(array.size(a))
plot(removedEl)

Trả về giá trịGiá trị của phần tử bị xóa.

Các tham số - id(any array type) đối tượng mảng. - Không.index(series int) chỉ mục các phần tử cần xóa.

Hẹn gặp lại


### array.reverse

此函数反转阵列。第一个阵列元素变成最后一个,最后一个阵列元素变成第一个。

array.reverse ((id))


**例子**
```pine
// array.reverse example
a = array.new_float(0)
for i = 0 to 9
    array.push(a, close[i])
plot(array.get(a, 0))
array.reverse(a)
plot(array.get(a, 0))

Các tham số - id(any array type) đối tượng mảng.

Hẹn gặp lại


### array.from

该函数采用以下类型之一的可变数量的参数:int、float、bool、string、line、color、linefill,并返回相应类型的阵列。

array.from ((arg0, arg1,...)


**例子**
```pine
// array.from_example
arr = array.from("Hello", "World!") // arr (string[]) will contain 2 elements: {Hello}, {World!}.
plot(close)

Trả về giá trịGiá trị của các phần tử mảng.

Các tham số - arg0, arg1, ...(series int/float/bool/color/string/line/linefill) Các tham số của mảng.

array.new

Chức năng này tạo ra một<type>Các đối tượng số nguyên tố.

array.new(size, initial_value)

Ví dụ

// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))

Ví dụ

// array.new<color> example
a = array.new<color>()
array.push(a, color.red)
array.push(a, color.green)
plot(close, color = array.get(a, close > open ? 1 : 0))

Ví dụ

// array.new<float> example
length = 5
var a = array.new<float>(length, close)
if array.size(a) == length
  array.remove(a, 0)
  array.push(a, close)
plot(array.sum(a) / length, "SMA")

Ví dụ

// array.new<line> example
// draw last 15 lines
var a = array.new<line>()
array.push(a, line.new(bar_index - 1, close[1], bar_index, close))
if array.size(a) > 15
    ln = array.shift(a)
    line.delete(ln)

Trả về giá trịChức năng ID của các đối tượng ma trận có thể được sử dụng cùng với các ma trận khác.

Các tham số - sizeKích thước ban đầu của (series int) là 0. - Không.initial_value(series <type>) Giá trị ban đầu của tất cả các phần tử hàng loạt.

Nhận xétChỉ số mảng bắt đầu từ 0. Nếu bạn muốn khởi tạo một mảng và chỉ định tất cả các phần tử của nó cùng một lúc, hãy sử dụng hàm array.from.

Hẹn gặp lại


### array.new_bool

此函数创建一个由bool类型的元素组成的新阵列对象。

array.new_bool ((size, initial_value)


**例子**
```pine
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)

Trả về giá trịChức năng ID của các đối tượng ma trận có thể được sử dụng cùng với các ma trận khác.

Các tham số - sizeKích thước ban đầu của (series int) là 0. - Không.initial_value(series bool) Giá trị ban đầu của tất cả các phần tử hàng loạt↑ tùy chọn↑ giá trị mặc định là na

Nhận xétChỉ số mảng bắt đầu từ 0.

Hẹn gặp lại


### array.new_float

此函数创建一个新的浮点型元素阵列对象。

array.new_float ((size, initial_value)


**例子**
```pine
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)

Trả về giá trịChức năng ID của các đối tượng ma trận có thể được sử dụng cùng với các ma trận khác.

Các tham số - sizeKích thước ban đầu của (series int) là 0. - Không.initial_value(series int/float) Giá trị ban đầu của tất cả các phần tử trong chuỗi.

Nhận xétChỉ số mảng bắt đầu từ 0.

Hẹn gặp lại


### array.new_int

该函数创建一个由int类型的元素组成的新阵列对象。

array.new_int ((size, initial_value)


**例子**
```pine
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)

Trả về giá trịChức năng ID của các đối tượng ma trận có thể được sử dụng cùng với các ma trận khác.

Các tham số - sizeKích thước ban đầu của (series int) là 0. - Không.initial_value(series int) Giá trị ban đầu của tất cả các phần tử hàng loạt↑ tùy chọn↑ giá trị mặc định là na

Nhận xétChỉ số mảng bắt đầu từ 0.

Hẹn gặp lại


### array.new_string

该函数创建一个字符串类型元素的新阵列对象。

array.new_string ((size, initial_value)


**例子**
```pine
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))

Trả về giá trịChức năng ID của các đối tượng ma trận có thể được sử dụng cùng với các ma trận khác.

Các tham số - sizeKích thước ban đầu của (series int) là 0. - Không.initial_value(series string) Giá trị ban đầu của tất cả các phần tử hàng loạt↑ tùy chọn↑ giá trị mặc định là na

Nhận xétChỉ số mảng bắt đầu từ 0.

Hẹn gặp lại


### array.get

该函数返回指定索引处元素的值。

```array.get(id, index)```

**例子**
```pine
// array.get example
a = array.new_float(0)
for i = 0 to 9
  array.push(a, close[i] - open[i])
plot(array.get(a, 9))

Trả về giá trịGiá trị của các phần tử mảng.

Các tham số - id(any array type) đối tượng mảng. - Không.index(series int) là chỉ mục của các phần tử để trả về giá trị của chúng.

Hẹn gặp lại


### array.push

该函数将一个值附加到阵列。

array.push ((id, giá trị)


**例子**
```pine
// array.push example
a = array.new_float(5, 0)
array.push(a, open)
plot(array.get(a, 5))

Các tham số - id(any array type) đối tượng mảng. - Không.value (series <type of the array's elements>) thêm vào giá trị phần tử cuối mảng.

Hẹn gặp lại


### array.set

该函数将元素的值设置为指定的索引。

array.set ((id, index, value)


**例子**
```pine
// array.set example
a = array.new_float(10)
for i = 0 to 9
  array.set(a, i, close[i])
plot(array.sum(a) / 10)

Các tham số - id(any array type) đối tượng mảng. - Không.index(series int) chỉ mục của các phần tử cần sửa đổi. - Không.value (series <type of the array's elements>) Đặt giá trị mới.

Hẹn gặp lại


### array.sum

该函数返回阵列元素的总和。

array.sum ((id))


**例子**
```pine
// array.sum example
a = array.new_float(0)
for i = 0 to 9
  array.push(a, close[i])
plot(array.sum(a))

Trả về giá trịTổng số các phần tử của mảng.

Các tham số - id(int[]/float[]) đối tượng mảng.

Hẹn gặp lại


### array.avg

该函数返回阵列元素的均值。

array.avg ((id))


**例子**
```pine
// array.avg example
a = array.new_float(0)
for i = 0 to 9
  array.push(a, close[i])
plot(array.avg(a))

Trả về giá trịGiá trị trung bình của các phần tử mảng.

Các tham số - id(int[]/float[]) đối tượng mảng.

Hẹn gặp lại


### array.indexof

此函数返回值首次出现的索引。如果找不到该值,则返回 -1。

array.indexof ((id, giá trị)


**例子**
```pine
// array.indexof example
a = array.new_float(5,high)
index = array.indexof(a, high)
plot(index)

Trả về giá trịChỉ mục của các yếu tố.

Các tham số - id(any array type) đối tượng mảng. - Không.value (series <type of the array's elements>) Giá trị được tìm kiếm trong mảng.

Hẹn gặp lại


## strategy

在```strategy```相关的内置函数中,止损点数、止盈点数定义为价格一跳的倍数。例如```strategy.exit```函数的```profit```、```loss```参数以点表示止损、止盈,参数```profit```设置为10,即价格一跳乘以10作为止盈价差,价格一跳即内置变量```syminfo.mintick```。

### strategy

该函数设置了多个策略属性。
注意,传参仅支持```title```,```shorttitle```,```overlay```,```pyramiding```,```default_qty_type```,```default_qty_value```参数,其它参数可以通过PINE语言策略的界面参数设置。

chiến lược ((tiêu đề, tiêu đề ngắn, lớp phủ, định dạng, độ chính xác, quy mô, kim tự tháp, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, tiền tệ, trượt, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, explicit_plot_zorder, maxlines_count, max_labels_count, max_boxes_count, risk_free_rate)


**例子**
```pine
strategy("Strategy", overlay = true)

// Enter long by market if current open is greater than previous high.
strategy.entry("Long", strategy.long, 1, when = open > high[1])
// Generate a full exit bracket (profit 10 points, loss 5 points per contract) from the entry named "Long".
strategy.exit("Exit", "Long", profit = 10, loss = 5)

Các tham số - title(const string) sẽ hiển thị tiêu đề của chỉ số được nhìn thấy trong plugin chỉ số / chính sách. - Không.shorttitle(const string) sẽ hiển thị tiêu đề ngắn của các chỉ số được nhìn thấy trong hình ảnh biểu đồ. Các tham số là tùy chọn. - Không.overlay(const bool) Nếu true, chỉ số này sẽ được thêm vào lớp chồng trên của chuỗi chính. Nếu false - nó sẽ được thêm vào khung biểu đồ riêng lẻ. - Không.format(const string) Các giá trị có thể được định dạng trên trục giá là: format.inherit、format.price、format.volume。 mặc định format.inherit。 - Không.precision(const int) Số chữ số sau số dấu chấm nổi của giá trị chỉ số trên trục giá. Nó phải là một số nguyên không âm và không lớn hơn 16. Nếu bỏ qua, thì sử dụng định dạng của chuỗi cha. Nếu định dạng là format.inherit và đặt tham số này, thì format sẽ trở thành format.price. - Không.scale(scale_type) Chỉ số nên theo tọa độ giá. Các giá trị có thể là: scale.right, scale.left, scale.none. Giá trị scale.none chỉ có thể được sử dụng kết hợp với cài đặt true overlay. - Không.pyramiding(const int) Số lượng tối đa cho phép trong cùng một hướng. Nếu giá trị là 0, chỉ có một lệnh nhập vào cùng một hướng có thể được mở, và bất kỳ lệnh nhập nào khác sẽ bị từ chối. - Không.calc_on_order_fills(const bool) tính toán lệnh intrabar bổ sung. Nếu tham số được đặt thành con số con số true, thì chính sách sẽ tính lại một lần trong dòng K sau khi lệnh được lấp đầy (không chỉ khi đóng dòng k). Giá trị mặc định là con số con số false. - Không.calc_on_every_tick(const bool) tính toán chính sách intrabar bổ sung. Nếu tham số là true, chính sách sẽ tính toán từng độ tròn trong thời gian thực mà không đóng k string. - Không.max_bars_back(const int) là số nốt tối đa có thể được sử dụng cho chính sách tham khảo lịch sử. Nếu trong mã kịch bản có tham chiếu đến dữ liệu lịch sử của biến (được sử dụng toán tử nốt [] nốt), thì tham số này sẽ được áp dụng cho mỗi biến tích hợp hoặc biến người dùng trong kịch bản. Kích thước vùng đệm biến trong kịch bản Pine thường được tự động phát hiện. Tuy nhiên, trong một số trường hợp điều này là không thể, đó là lý do tại sao tham số cho phép người dùng tự đặt giới hạn dưới giá trị này. - Không.backtest_fill_limits_assumption(const int) Định giá hạn chế thực hiện giả định. Chỉ khi giá thị trường vượt quá số tick được chỉ định ở mức giá hạn chế, lệnh hạn chế sẽ được giao dịch trong nội thanh. - Không.default_qty_type(const string) được xác định choqtyGiá trị của tham số được thể hiện trong các hàm strategy.entry hoặc strategy.order. Các giá trị có thể là: strategy.fixed cho phép giao dịch / cổ phiếu / số tay, strategy.cash cho phép số tiền, hoặc strategy.percent_of_equity cho phép tỷ lệ lợi nhuận có sẵn. - Không.default_qty_value(const int/float) Số lượng giao dịch mặc định của các hàm strategy.entry hoặc strategy.order, được xác định bởi các tham số được sử dụng cùng với tham số default_qty_type khi các tham số qty của chúng không được định nghĩa. - Không.currency(const string) Tiền tệ tài khoản của chính sách này;; tùy chọn;; mặc định là tiền tệ của hàng hóa trên biểu đồ;; có thể là: currency.NONE, currency.USD, currency.EUR, currency.AUD, currency.GBP, currency.NZD, currency.CAD, currency.CHF, currency.HKD, currency.JPY, currency.NOK, currency.SEK, currency.SGD, currency.TRY, currency.ZAR, currency.BTC, currency.ETH, currency.MYR, currency.KRW;; - Không.slippage(const int) với tick là điểm trượt của đơn vị đề xuất, sẽ tăng / giảm từ giá giao dịch của đơn đặt hàng mua / bán hoặc đơn đặt hàng dừng lỗ. Nếu mintick = 0.01 và điểm trượt = 5, tổng điểm trượt sẽ là 5 * 0.01 = 0.05. - Không.commission_type(const string) Loại hoa hồng cho mỗi đơn đặt hàng. Các giá trị được cho phép là: strategy.commission.percent (tỷ lệ phần trăm số tiền mặt được đặt hàng), strategy.commission.cash_per_contract (đánh dấu số tiền theo đồng tiền tài khoản cho mỗi hợp đồng), strategy.commission.cash_per_order (đánh dấu số tiền theo đồng tiền tài khoản cho mỗi đơn đặt hàng). - Không.commission_value(const int/float) Giá trị hoa hồng của đơn đặt hàng. Tùy thuộc vào loại được chọn (loại hoa hồng bao gồm tỷ lệ phần trăm hoặc số tiền). - Không.process_orders_on_close(const bool) được thiết lập là con true, sẽ tạo ra các nỗ lực khác để thực hiện lệnh sau khi biểu đồ đóng cửa và tính toán chính sách được hoàn thành. Nếu lệnh là lệnh giá thị trường, thì trình mô phỏng môi giới sẽ thực hiện chúng trước khi biểu đồ tiếp theo mở cửa. Nếu lệnh là giới hạn giá, lệnh sẽ chỉ được thực hiện khi các điều kiện giá được đáp ứng. - Không.close_entries_rule(const string) xác định thứ tự lệnh đóng. Các giá trị được cho phép là: FIFO string hoặc ANY string. FIFO (đầu tiên đến; First-In, First-Out) có nghĩa là giao dịch đầu tiên phải được đóng trước khi nhiều giao dịch mở. Quy tắc này áp dụng cho chứng khoán, hợp đồng tương lai và ngoại hối Hoa Kỳ (NFA compliance rule 2-43b). - Không.max_lines_count(const int) hiển thị số lượng đường viền gần đây. - Không.max_labels_count(const int) hiển thị số lượng biểu đồ thẻ gần đây. Giá trị mặc định là 50, giá trị tối đa được phép là 500. - Không.max_boxes_count(const int) số lượng hình ảnh hộp cuối được hiển thị. Giá trị mặc định là 50, giá trị tối đa được phép là 500. - Không.margin_long(const int/float) Tỷ lệ phần trăm của giá mua chứng khoán mà nhiều vị trí phải được bảo hiểm bằng tiền mặt hoặc ký quỹ. - Không.margin_short(const int/float) Tỷ lệ phần trăm của giá mua chứng khoán mà một vị trí không đầu tư phải được bảo hiểm bằng tiền mặt hoặc thế chấp. Phải là không âm. Có thể. - Không.explicit_plot_zorder(const bool) chỉ định trình bày trật tự của các chỉ số, trộn và đường ngang. Nếu đúng, biểu đồ sẽ được vẽ theo thứ tự chúng xuất hiện trong mã chỉ số, mỗi biểu đồ mới được vẽ trên biểu đồ trước đó. Điều này chỉ áp dụng cho các hàm plot * (()), fill và hline. Tùy chọn. - Không.initial_capital(const int/float) là số tiền ban đầu được sử dụng để giao dịch chiến lược, được thể hiện bằng một loại tiền được xác định trong chu kỳ tiền xu. Tùy chọn. - Không.risk_free_rate(const int/float) Tỷ lệ lợi nhuận không rủi ro là sự thay đổi tỷ lệ phần trăm hàng năm về giá trị của một khoản đầu tư có rủi ro tối thiểu hoặc không, được sử dụng để tính tỷ lệ Sharpe và Sortino.

Nhận xétMỗi kịch bản chiến lược phải có một strategy call. Mã PineScript sử dụng tham số calc_on_every_tick = true để 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. Khi sử dụng biểu đồ loại phi chuẩn làm cơ sở cho chiến lược, bạn cần biết rằng kết quả sẽ khác nhau. Trách nhiệm sẽ được thực hiện ở mức giá của bảng đó (ví dụ: for Heikin Ashi sẽ sử dụng giá Heikin Ashi (trung bình) chứ không phải là mức giá thị trường thực sự). Do đó, chúng tôi khuyên bạn nên sử dụng kiểu biểu đồ chuẩn trong chiến lược của mình.

Hẹn gặp lại


### strategy.entry

这是进入市场的命令。 如果具有相同ID的订单已经挂起,则可修改订单。 如果没有指定ID的订单,则会发出新的订单。 要停用进场指令,应使用命令strategy.cancel或strategy.cancel_all。 与函数strategy.order相比,strategy.entry功能受金字塔影响,可以正确反转市场位置。 如果“Limit”和“stop”参数均为“NaN”,则订单类型为市场订单。

strategy.entry ((id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)


**例子**
```pine
strategy(title = "simple strategy entry example")
strategy.entry("enter long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.entry("enter short", strategy.short, 1, when = open < low[1]) // enter short by market if current open less then previous low

Các tham số - id(series string) Các tham số cần thiết. Nhãn nhận dạng đơn đặt hàng. Bạn có thể hủy hoặc sửa đổi đơn đặt hàng bằng cách tham khảo mã của nó. - Không.direction(strategy_direction) Một tham số cần thiết. Hướng dẫn nắm giữ thị trường: strategy.long nhiều đầu, strategy.short không đầu. - Không.qty(series int/float) Các tham số có thể chọn được. Các hợp đồng/số cổ phần/số tay/số đơn vị giao dịch. Định giá mặc định là NaN. - Không.limit(series int/float) Các tham số có thể lựa chọn. Giá giới hạn của đơn đặt hàng. Nếu đã được chỉ định, kiểu đơn đặt hàng là đơn đặt hàng giới hạn hoặc đơn đặt hàng dừng giới hạn. Các loại đơn đặt hàng khác là đơn đặt hàng NaN. - Không.stop(series int/float) Các tham số có thể lựa chọn. Giá dừng lỗ của lệnh. Nếu đã được chỉ định, kiểu lệnh là lệnh stop stop hoặc lệnh stop-limit. Các loại lệnh khác là lệnh NaN. - Không.oca_name(series string) Các tham số có thể chọn. Trách nhiệm này thuộc về tên nhóm OCA. Nếu lệnh không thuộc về bất kỳ nhóm OCA nào, nên có một ký tự trống.Lưu ý: FMZ không hỗ trợ tham số này. - oca_type(input string) Các tham số có thể lựa chọn; kiểu nhóm đơn đặt hàng OCA; giá trị được cho phép là: strategy.oca.none - đơn đặt hàng không nên thuộc về bất kỳ nhóm OCA cụ thể nào; strategy.oca.cancel - đơn đặt hàng phải thuộc về nhóm OCA, và tất cả các đơn đặt hàng khác trong nhóm sẽ bị hủy bỏ một khi đơn đặt hàng được giao dịch; strategy.oca.reduce - đơn đặt hàng phải thuộc về nhóm OCA, nếu số lượng hợp đồng của đơn đặt hàng đã được đặt, số lượng các đơn đặt hàng khác trong cùng nhóm OCA sẽ giảm x.Lưu ý: FMZ không hỗ trợ tham số này. - comment(series string) Các tham số có thể chọn. - Không.when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu là một con số true, lệnh được đặt. Nếu là một con số false, thì không có gì xảy ra. - Không.alert_message(series string) Một tham số có thể chọn khi sử dụng ký tự {{strategy.order.alert_message}} trong hộp thoại báo động.

strategy.close

Đây là một lệnh cho lệnh thoát với ID được chỉ định. Nếu có nhiều lệnh nhập với ID giống nhau, chúng sẽ cùng rút đi. Nếu lệnh không được chỉ định ID mở khi kích hoạt, lệnh sẽ không hiệu lực.

strategy.close(id, when, comment, qty, qty_percent, alert_message) 

Ví dụ

strategy("closeEntry Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close("buy", when = open < close, qty_percent = 50, comment = "close buy entry for 50%")
plot(strategy.position_size)

Các tham số - id(series string) Các tham số cần thiết. Các mã nhận dạng đơn đặt hàng. Bạn có thể đóng đơn đặt hàng bằng cách tham khảo mã của nó. - Không.when(series bool) Các tham số có thể chọn. Điều kiện của lệnh. - Không.qty(series int/float) Các tham số có thể lựa chọn. Số lượng hợp đồng/số cổ phần/số tay/đơn vị rút khỏi giao dịch. Giá trị mặc định là NaN. - Không.qty_percent(series int/float) xác định tỷ lệ phần trăm của ngang hàng ((0-100)). Nó có ưu tiên thấp hơn ưu tiên của tham số qty . Tùy chọn. Giá trị mặc định là 100. - Không.comment(series string) Các tham số có thể chọn. - Không.alert_message(series string) Một tham số có thể chọn khi sử dụng ký tự {{strategy.order.alert_message}} trong hộp thoại báo động.

chiến lược.close_all

Trong khi đó, các nhà đầu tư khác cũng cho biết họ sẽ rút khỏi thị trường hiện tại để giữ nguyên thị trường.

strategy.close_all(when, comment, alert_message) 

Ví dụ

strategy("closeAll Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close_all(when = open < close, comment = "close all entries")
plot(strategy.position_size)

Các tham số - when(series bool) Các tham số có thể chọn. Điều kiện của lệnh. - Không.comment(series string) Các tham số có thể chọn. - Không.alert_message(series string) Một tham số có thể chọn khi sử dụng ký tự {{strategy.order.alert_message}} trong hộp thoại báo động.

strategy.exit

Đây là một lệnh rút chỉ định nhập hoặc toàn bộ vị trí thị trường. Nếu lệnh có cùng ID đã được treo, lệnh có thể được sửa đổi. Nếu lệnh nhập chưa được thực hiện, nhưng lệnh rút xuất hiện, lệnh rút sẽ được tạm dừng cho đến khi người sau lệnh nhập có thể đặt lệnh rút. Để dừng lệnh rút, bạn nên sử dụng lệnh estrategy.cancel hoặc strategy.cancel_all. Nếu hàm strategy.exit được gọi một lần, bạn chỉ cần rút một lần. Nếu lệnh estrategy.exit được gọi nhiều lần, bạn nên gọi nhiều lần. Nếu bạn sử dụng lệnh strategy.exit hoặcstrategy.trail, lệnh loại của nó là lệnh stop-loss, chỉ một trong số đó được đặt sẽ được thực hiện trước). Nếu tất cả các thông số sau đây được sử dụng, lệnh Nail_close sẽ bị thất bại.

strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message) 

Ví dụ

strategy(title = "simple strategy exit example")
strategy.entry("long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.exit("exit", "long", profit = 10, loss = 5) // generate full exit bracket (profit 10 points, loss 5 points per contract) from entry with name "long"

Các tham số - id(series string) Các tham số cần thiết. Nhãn nhận dạng đơn đặt hàng. Bạn có thể hủy hoặc sửa đổi đơn đặt hàng bằng cách tham khảo mã của nó. - Không.from_entry(series string) Các tham số có thể lựa chọn được. Để chỉ định mã thông báo nhập lệnh, hãy thoát khỏi. Để thoát khỏi tất cả các vị trí, hãy sử dụng một chuỗi trống. - Không.qty(series int/float) Các tham số có thể lựa chọn. Số lượng hợp đồng/số cổ phần/số tay/đơn vị rút khỏi giao dịch. Giá trị mặc định là NaN. - Không.qty_percent(series int/float) xác định tỷ lệ phần trăm của ngang hàng ((0-100)). Nó có ưu tiên thấp hơn ưu tiên của tham số qty . Tùy chọn. Giá trị mặc định là 100. - Không.profit(series int/float) Các tham số có thể chọn. Mục tiêu lợi nhuận (được đánh dấu bằng dấu chấm). Nếu đã được chỉ định, khi đạt đến mức lợi nhuận (được đánh dấu bằng dấu chấm), lệnh thoát khỏi thị trường với giá giới hạn. Giá mặc định là NaN. - Không.limit(series int/float) Các tham số có thể chọn. Mục tiêu lợi nhuận (cần chỉ định giá) Nếu đã được chỉ định, hãy thoát khỏi vị trí thị trường với giá chỉ định (hoặc tốt hơn). - Không.loss(series int/float) Các tham số có thể lựa chọn được.............. - Không.stop(series int/float) Các tham số có thể chọn................................................. - Không.trail_price(series int/float) Các tham số có thể chọn;; theo dõi mức kích hoạt stop-loss ((cần chỉ định giá)); nếu được chỉ định, đặt stop-loss theo dõi khi đạt đến mức giá được chỉ định;; trong tham số phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ phế độ - Không.trail_points(series int/float) Các tham số có thể chọn;; theo dõi mức kích hoạt stop-loss (được biểu thị bằng dấu chấm lợi nhuận); nếu được chỉ định, khi đạt đến mức giá đã được tính toán (được biểu thị bằng số tiền lợi nhuận được chỉ định), lệnh dừng theo dõi sẽ được đặt;; trong tham số trap-trail_offset, chỉ định độ lệch để xác định giá ban đầu của lệnh stop-loss (được biểu thị bằng dấu chấm): X điểm thấp hơn mức kích hoạt để rút nhiều đầu; X điểm cao hơn mức kích hoạt để rút không đầu;; mặc định là trap-trail_offset; - Không.trail_offset(series int/float) Các tham số có thể chọn. Các mức kích hoạt stop-loss theo dõi (được biểu thị bằng dấu chấm) Các độ lệch theo chấm được sử dụng để xác định giá ban đầu của đơn lệnh stop-loss theo dõi: X điểm thấp hơn các dấu hiệu stop-trail_price hoặc stop-trail_points để thoát nhiều đầu; X điểm cao hơn các dấu hiệu stop-trail_price hoặc stop-trail_points để thoát không đầu. - Không.oca_name(series string) Các tham số tùy chọn. Tên của nhóm OCA (oca_type = strategy.oca.reduce) mục tiêu lợi nhuận, dừng / theo dõi dừng. Nếu không chỉ định tên, tên sẽ được tự động tạo ra.Lưu ý: FMZ không hỗ trợ tham số này. - comment(series string) Các tham số có thể chọn. - Không.when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu là một con số true, lệnh được đặt. Nếu là một con số false, thì không có gì xảy ra. - Không.alert_message(series string) Một tham số có thể chọn khi sử dụng ký tự {{strategy.order.alert_message}} trong hộp thoại báo động.

strategy.cancel

Đây là một danh từ tham khảo lệnh hủy / ngừng tất cả các danh sách dự bị, được tạo ra bởi các chức năng sau: chiến lược.order, chiến lược.entry và chiến lược.exit.

strategy.cancel(id, when) 

Ví dụ

strategy(title = "simple order cancellation example")
conditionForBuy = open > high[1]
strategy.entry("long", strategy.long, 1, limit = low, when = conditionForBuy) // enter long using limit order at low price of current bar if conditionForBuy is true
strategy.cancel("long", when = not conditionForBuy) // cancel the entry order with name "long" if conditionForBuy is false

Các tham số - id(series string) Các tham số bắt buộc.  Biểu tượng đơn đặt hàng.  Xác định biểu tượng này để hủy đơn đặt hàng. - Không.when(series bool) Các tham số có thể lựa chọn được. Từ bỏ một đơn đặt hàng dựa trên ID.

chiến lược.cance_all

这是取消/停用所有预挂单命令,由以下功能生成:strategy.order,strategy.entry和strategy.exit。

strategy.cancel_all(when) 

Ví dụ

strategy(title = "simple all orders cancellation example")
conditionForBuy1 = open > high[1]
strategy.entry("long entry 1", strategy.long, 1, limit = low, when = conditionForBuy1) // enter long by limit if conditionForBuy1 is true
conditionForBuy2 = conditionForBuy1 and open[1] > high[2]
strategy.entry("long entry 2", strategy.long, 1, limit = ta.lowest(low, 2), when = conditionForBuy2) // enter long by limit if conditionForBuy2 is true
conditionForStopTrading = open < ta.lowest(low, 2)
strategy.cancel_all(conditionForStopTrading) // cancel both limit orders if the conditon conditionForStopTrading is true

Các tham số - when(series bool) Các tham số có thể chọn được. ⇒ Loại bỏ tất cả các điều kiện lệnh. ⇒ Nếu điều kiện là đúng, tất cả các lệnh hoạt động sẽ bị hủy. ⇒ Định giá mặc định là true ⇒

strategy.order

Đây là lệnh đặt hàng tiếp theo. Nếu lệnh có cùng ID đã được treo, bạn có thể sửa đổi lệnh. Nếu lệnh không có ID được chỉ định, một lệnh mới sẽ được đưa ra. Để dừng lệnh, bạn nên sử dụng lệnh strategy.cancel hoặc strategy.cancel_all. Trong khi tương tự như hàm strategy.entry, hàm strategy.order không bị ảnh hưởng bởi hình dạng kim tự tháp.

strategy.order(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)

Ví dụ

strategy(title = "simple strategy order example")
strategy.order("buy", strategy.long, 1, when = open > high[1]) // buy by market if current open great then previous high
strategy.order("sell", strategy.short, 1, when = open < low[1]) // sell by market if current open less then previous low

Các tham số - id(series string) Các tham số cần thiết. Nhãn nhận dạng đơn đặt hàng. Bạn có thể hủy hoặc sửa đổi đơn đặt hàng bằng cách tham khảo mã của nó. - Không.direction(strategy_direction) Một tham số cần thiết. Hướng lệnh: strategy.long mua, strategy.short bán. - Không.qty(series int/float) Các tham số có thể chọn được. Các hợp đồng/số cổ phần/số tay/số đơn vị giao dịch. Định giá mặc định là NaN. - Không.limit(series int/float) Các tham số có thể lựa chọn. Giá giới hạn của đơn đặt hàng. Nếu đã được chỉ định, kiểu đơn đặt hàng là đơn đặt hàng giới hạn hoặc đơn đặt hàng dừng giới hạn. Các loại đơn đặt hàng khác là đơn đặt hàng NaN. - Không.stop(series int/float) Các tham số có thể lựa chọn. Giá dừng lỗ của lệnh. Nếu đã được chỉ định, kiểu lệnh là lệnh stop stop hoặc lệnh stop-limit. Các loại lệnh khác là lệnh NaN. - Không.oca_name(series string) Các tham số có thể chọn. Trách nhiệm này thuộc về tên nhóm OCA. Nếu lệnh không thuộc về bất kỳ nhóm OCA nào, nên có một ký tự trống.Lưu ý: FMZ không hỗ trợ tham số này. - oca_type(input string) Các tham số có thể lựa chọn; kiểu nhóm đơn đặt hàng OCA; giá trị được cho phép là: strategy.oca.none - đơn đặt hàng không nên thuộc về bất kỳ nhóm OCA cụ thể nào; strategy.oca.cancel - đơn đặt hàng phải thuộc về nhóm OCA, và tất cả các đơn đặt hàng khác trong nhóm sẽ bị hủy bỏ một khi đơn đặt hàng được giao dịch; strategy.oca.reduce - đơn đặt hàng phải thuộc về nhóm OCA, nếu số lượng hợp đồng của đơn đặt hàng đã được đặt, số lượng các đơn đặt hàng khác trong cùng nhóm OCA sẽ giảm x.Lưu ý: FMZ không hỗ trợ tham số này. - comment(series string) Các tham số có thể chọn. - Không.when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu là một con số true, lệnh được đặt. Nếu là một con số false, thì không có gì xảy ra. - Không.alert_message(series string) Một tham số có thể chọn khi sử dụng ký tự {{strategy.order.alert_message}} trong hộp thoại báo động.

Strategy.opentrades.entry_bar_index

Trả về bar_index của giao dịch chưa trục trặc.

strategy.opentrades.entry_bar_index(trade_num)

Chờ 10 đường K và ngang hàng

Ví dụ

strategy("`strategy.opentrades.entry_bar_index` Example")

barsSinceLastEntry() =>
    strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na

// Enter a long position if there are no open positions.
if strategy.opentrades == 0
    strategy.entry("Long",  strategy.long)

// Close the long position after 10 bars. 
if barsSinceLastEntry() >= 10
    strategy.close("Long")

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.opentrades.entry_id

返回未平仓交易的入场的ID。

chiến lược.mở giao dịch.đăng nhập


**例子**
```pine
strategy("`strategy.opentrades.entry_id` Example", overlay = true)

// We enter a long position when 14 period sma crosses over 28 period sma.
// We enter a short position when 14 period sma crosses under 28 period sma.
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))

// Strategy calls to enter a long or short position when the corresponding condition is met.
if longCondition
    strategy.entry("Long entry at bar #" + str.tostring(bar_index), strategy.long)
if shortCondition
    strategy.entry("Short entry at bar #" + str.tostring(bar_index), strategy.short)

// Display ID of the latest open position.
if barstate.islastconfirmedhistory
    runtime.log("Last opened position is " + strategy.opentrades.entry_id(strategy.opentrades - 1))

Trả về giá trịTrả về ID nhập vào giao dịch chưa được thanh toán.

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Nhận xétNếu trade_num không nằm trong phạm vi, thì hàm này trả về na:0 đến strategy.opentrades−1.

Hẹn gặp lại


### strategy.opentrades.entry_price

返回未平仓交易的入场价格。

chiến lược.mở giao dịch.giá nhập (transaction_number)


**例子**
```pine
strategy("strategy.closedtrades.entry_price Example 1")

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Return the entry price for the latest closed trade.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)

plot(entryPrice, "Long entry price")

Tính toán giá trung bình không được cân bằng

Ví dụ

strategy("strategy.opentrades.entry_price Example 2", pyramiding = 2)

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Calculate average open position price.
avgOpenPositionPrice() =>
    sumOpenPositionPrice = 0.0
    for tradeNo = 0 to strategy.opentrades - 1
        sumOpenPositionPrice += strategy.opentrades.entry_price(tradeNo) * strategy.opentrades.size(tradeNo) / strategy.position_size
    result = nz(sumOpenPositionPrice / strategy.opentrades)

plot(avgOpenPositionPrice())

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.opentrades.entry_time

返回未平仓交易入场的UNIX时间。

chiến lược.mở giao dịch.thời gian nhập cảnh (đếm số giao dịch)


**例子**
```pine
strategy("strategy.opentrades.entry_time Example")

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Calculates duration in milliseconds since the last position was opened.
timeSinceLastEntry()=>
    strategy.opentrades > 0 ? (time - strategy.opentrades.entry_time(strategy.opentrades - 1)) : na

plot(timeSinceLastEntry() / 1000 * 60 * 60 * 24, "Days since last entry")

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.opentrades.profit

返回未平仓交易的盈亏。损失表示为负值。

chiến lược.mở giao dịch.lợi nhuận ((trade_num)


返回最后开仓交易的利润

**例子**
```pine
strategy("`strategy.opentrades.profit` Example 1", commission_type = strategy.commission.percent, commission_value = 0.1)

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

plot(strategy.opentrades.profit(strategy.opentrades - 1), "Profit of the latest open trade")

Tính toán lợi nhuận của tất cả các giao dịch chưa được thanh toán

Ví dụ

strategy("`strategy.opentrades.profit` Example 2", pyramiding = 5)

// Strategy calls to enter 5 long positions every 2 bars.
if bar_index % 2 == 0
    strategy.entry("Long", strategy.long, qty = 5)

// Calculate open profit or loss for the open positions.
tradeOpenPL() =>
    sumProfit = 0.0
    for tradeNo = 0 to strategy.opentrades - 1
        sumProfit += strategy.opentrades.profit(tradeNo)
    result = sumProfit
    
plot(tradeOpenPL(), "Profit of all open trades")

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.opentrades.size

返回未平仓交易中的交易方向和合约数量。如果该值>0,则市场仓位为多头。如果该值<0,则市场仓位为空头。

chiến lược.mở giao dịch.kích thước ((trade_num)


**例子**
```pine
strategy("`strategy.opentrades.size` Example 1")

// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
    strategy.close("Long")

// Plot the number of contracts in the latest open trade.
plot(strategy.opentrades.size(strategy.opentrades - 1), "Amount of contracts in latest open trade")

Tính toán tỷ lệ phần trăm lợi nhuận trung bình của các giao dịch không được cân bằng

Ví dụ

strategy("`strategy.opentrades.size` Example 2")

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Calculate profit for all open trades.
profitPct = 0.0
for tradeNo = 0 to strategy.opentrades - 1
    entryP = strategy.opentrades.entry_price(tradeNo)
    exitP = close
    profitPct += (exitP - entryP) / entryP * strategy.opentrades.size(tradeNo) * 100
    
// Calculate average profit percent for all open trades.
avgProfitPct = nz(profitPct / strategy.opentrades)

Các tham số - trade_num(series int) Số giao dịch chưa được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.entry_bar_index

返回已平仓交易入场的bar_index。

chiến lược.closedtrades.entry_bar_index ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.entry_bar_index Example")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
    strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
    strategy.close("Long")
// Function that calculates the average amount of bars in a trade.
avgBarsPerTrade() =>
    sumBarsPerTrade = 0
    for tradeNo = 0 to strategy.closedtrades - 1
        // Loop through all closed trades, starting with the oldest.
        sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
    result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.exit_price

返回已平仓交易的出场价格。

chiến lược.closedtrades.exit_price ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.exit_price Example 1")

// We are creating a long trade every 5 bars
if bar_index % 5 == 0
    strategy.entry("Long",  strategy.long)
strategy.close("Long")

// Return the exit price from the latest closed trade.
exitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)

plot(exitPrice, "Long exit price")

Tính toán tỷ lệ phần trăm lợi nhuận trung bình của tất cả các giao dịch đã được giao dịch

Ví dụ

strategy("strategy.closedtrades.exit_price Example 2")

// Strategy calls to create single short and long trades.
if bar_index == last_bar_index - 15
    strategy.entry("Long Entry",  strategy.long)
else if bar_index == last_bar_index - 10
    strategy.close("Long Entry")
    strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
    strategy.close("Short")

// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
    entryP = strategy.closedtrades.entry_price(tradeNo)
    exitP = strategy.closedtrades.exit_price(tradeNo)
    profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
    
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)

plot(avgProfitPct)

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.exit_bar_index

返回已平仓交易退出的bar_index。

chiến lược.closedtrades.exit_bar_index ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.exit_bar_index Example 1")

// Strategy calls to place a single short trade. We enter the trade at the first bar and exit the trade at 10 bars before the last chart bar.
if bar_index == 0
    strategy.entry("Short",  strategy.short)
if bar_index == last_bar_index - 10
    strategy.close("Short")

// Calculate the amount of bars since the last closed trade.
barsSinceClosed = strategy.closedtrades > 0 ? bar_index - strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) : na

plot(barsSinceClosed, "Bars since last closed trade")

Tính toán số lượng đường K trung bình cho mỗi giao dịch.

Ví dụ

strategy("strategy.closedtrades.exit_bar_index Example 2")

// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
    strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
    strategy.close("Long")

// Function that calculates the average amount of bars per trade.
avgBarsPerTrade() =>
    sumBarsPerTrade = 0
    for tradeNo = 0 to strategy.closedtrades - 1
        // Loop through all closed trades, starting with the oldest.
        sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
    result = nz(sumBarsPerTrade / strategy.closedtrades)

plot(avgBarsPerTrade())

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.entry_id

返回已平仓交易的入场的id。

chiến lược.closedtrades.entry_id ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.entry_id Example", overlay = true)
var isOpen = false 
var openIndex = -1
// Enter a short position and close at the previous to last bar.
if not barstate.ishistory and not isOpen
    strategy.entry("Short at bar #" + str.tostring(bar_index), strategy.short)
    isOpen := true
    openIndex := bar_index
if openIndex != -1 and bar_index > openIndex + 100
    strategy.close_all()
    
// Display ID of the last entry position.
if barstate.islastconfirmedhistory
    runtime.log("Last Entry ID is: " + strategy.closedtrades.entry_id(strategy.closedtrades - 1))

Trả về giá trịTrả về id nhập vào giao dịch đã được giao dịch.

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Nhận xétNếu trade_num không nằm trong phạm vi, thì hàm này trả về na:0 đến strategy.closedtrades−1.

Hẹn gặp lại


### strategy.closedtrades.entry_price

返回已平仓交易的入场价格。

chiến lược.closedtrades.entry_price ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.entry_price Example 1")

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Return the entry price for the latest  entry.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)

plot(entryPrice, "Long entry price")

Tính toán tỷ lệ phần trăm lợi nhuận trung bình của tất cả các giao dịch đã được giao dịch

Ví dụ

strategy("strategy.closedtrades.entry_price Example 2")

// Strategy calls to create single short and long trades
if bar_index == last_bar_index - 15
    strategy.entry("Long Entry",  strategy.long)
else if bar_index == last_bar_index - 10
    strategy.close("Long Entry")
    strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
    strategy.close("Short")

// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
    entryP = strategy.closedtrades.entry_price(tradeNo)
    exitP = strategy.closedtrades.exit_price(tradeNo)
    profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
    
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)

plot(avgProfitPct)

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.entry_time

返回已平仓交易入场的UNIX时间。

chiến lược.closedtrades.entry_time ((trade_num)


**例子**
```pine
strategy("strategy.closedtrades.entry_time Example", overlay = true)

// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
    strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
    strategy.close("Long")

// Calculate the average trade duration 
avgTradeDuration() =>
    sumTradeDuration = 0
    for i = 0 to strategy.closedtrades - 1
        sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
    result = nz(sumTradeDuration / strategy.closedtrades)

// Display average duration converted to seconds and formatted using 2 decimal points
if barstate.islastconfirmedhistory
    runtime.log(str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.profit

返回已平仓交易的盈亏。损失表示为负值。

chiến lược.closedtrades.profit ((trade_num)


**例子**
```pine
strategy("`strategy.closedtrades.profit` Example")

// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
    strategy.close("Long")

// Calculate average gross profit by adding the difference between gross profit and commission.
avgGrossProfit() =>
    sumGrossProfit = 0.0
    for tradeNo = 0 to strategy.closedtrades - 1
        sumGrossProfit += strategy.closedtrades.profit(tradeNo) - strategy.closedtrades.commission(tradeNo)
    result = nz(sumGrossProfit / strategy.closedtrades)
    
plot(avgGrossProfit(), "Average gross profit")

Các tham số - trade_num(series int) Số giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0.

Hẹn gặp lại


### strategy.closedtrades.size

返回已平仓交易中的交易方向和合约数量。如果该值>0,则市场仓位为多头。 如果该值<0,则市场仓位为空头。

chiến lược.closedtrades.size ((trade_num)


**例子**
```pine
strategy("`strategy.closedtrades.size` Example 1")

// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
    strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
    strategy.close("Long")

// Plot the number of contracts traded in the last closed trade.     
plot(strategy.closedtrades.size(strategy.closedtrades - 1), "Number of contracts traded")

Tính toán tỷ lệ phần trăm lợi nhuận trung bình của giao dịch sàn giao dịch

Ví dụpine strategy("chiến lược.closedtrades.size` Ví dụ 2)

// Chiến lược kêu gọi vào giao dịch dài mỗi 15 thanh và thoát khỏi giao dịch dài mỗi 20 thanh. if bar_index % 15 == 0 chiến lược.tham gia ((Long, strategy.long) if bar_index % 20 == 0 chiến lược.close ((Long)

// Tính toán lợi nhuận cho cả hai giao dịch đóng. Lợi nhuậnPct = 0.0 cho giao dịchNo = 0 cho chiến lược.closetrades - 1 entryP = chiến lược.closetrade


Nhiều hơn 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.