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

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.avg array.variance array.min

array.mode

Chức năng này trả về mô hình của các phần tử trong mảng. Nếu có nhiều giá trị có cùng tần số, nó trả về giá trị tối thiểu.

array.mode(id)

Ví dụ

// 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.new_float array.avg array.variance array.min

array.percentile_linear_interpolation

Trả về phần trăm được chỉ định của giá trị số ít hơn hoặc bằng giá trị của nó, sử dụng các giá trị chèn tuyến tính.

array.percentile_linear_interpolation(id, percentage) 

Các tham số

  • id(int[]/float[]) đối tượng mảng.
  • percentage(series int/float) phải bằng hoặc nhỏ hơn tỷ lệ phần trăm của giá trị được trả về.

Nhận xétTrong số liệu thống kê, phần trăm là tỷ lệ phần trăm của các mục xếp hạng xuất hiện ở một điểm số hoặc dưới một điểm số. Đo lường này cho thấy tỷ lệ phần trăm trong phân phối tần số tiêu chuẩn thấp hơn so với tỷ lệ phần trăm mà bạn đo. Đánh giá giá trị giữa hai thứ hạng.

Hẹn gặp lại array.new_float array.insert array.slice array.reverse order.ascending order.descending

array.percentile_nearest_rank

Sử dụng phương pháp sắp xếp gần nhất để trả về giá trị của một số phần trăm được chỉ định ít hơn hoặc bằng giá trị của nó.

array.percentile_nearest_rank(id, percentage) 

Các tham số

  • id(int[]/float[]) đối tượng mảng.
  • percentage(series int/float) phải bằng hoặc nhỏ hơn tỷ lệ phần trăm của giá trị được trả về.

Nhận xétTrong số liệu thống kê, phần trăm là tỷ lệ phần trăm của các mục xếp hạng xuất hiện ở một điểm số hoặc dưới một điểm số. Đo lường này cho thấy tỷ lệ phần trăm trong phân bố tần số tiêu chuẩn thấp hơn so với thứ hạng phần trăm mà bạn đang đo.

Hẹn gặp lại array.new_float array.insert array.slice array.reverse order.ascending order.descending

array.percentrank

Trả về tỷ lệ phần trăm của giá trị trung bình của mảng.

array.percentrank(id, index) 

Các tham số

  • id(int[]/float[]) đối tượng mảng.
  • index(series int) tính giá trị thứ hạng phần trăm của nó.

Nhận xétSố phần trăm là tỷ lệ phần trăm của số phần tử trong mảng nhỏ hơn hoặc bằng giá trị tham chiếu.

Hẹn gặp lại array.new_float array.insert array.slice array.reverse order.ascending order.descending

array.range

Chức năng này trả về sự khác biệt giữa giá trị tối thiểu và giá trị tối đa của một mảng nhất định.

array.range(id) 

Ví dụ

// 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.new_float array.min array.max array.sum

array.remove

Chức năng này thay đổi nội dung của mảng bằng cách xóa các phần tử có chỉ mục được chỉ định.

array.remove(id, index)

Ví dụ

// 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.
  • index(series int) chỉ mục các phần tử cần xóa.

Hẹn gặp lại array.new_float array.set array.push array.insert array.pop array.shift

array.reverse

Chức năng này đảo ngược mảng. Các phần tử đầu tiên của mảng trở thành phần tử cuối cùng và các phần tử cuối cùng của mảng trở thành phần tử đầu tiên.

array.reverse(id)

Ví dụ

// 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.new_float array.sort array.push array.set array.avg

array.from

Chức năng này sử dụng một số tham số biến của một trong các loại sau: int, float, boolean, string, line, color, linefill, và trả về một mảng có kiểu tương ứng.

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

Ví dụ

// 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.
  • initial_value(series ) 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.from array.push array.get array.size array.remove array.shift array.sum

array.new_bool

Chức năng này tạo ra một đối tượng mảng mới gồm các phần tử loại boolean.

array.new_bool(size, initial_value)

Ví dụ

// 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.
  • 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.get array.slice array.sort

array.new_float

Chức năng này tạo ra một đối tượng mới của mảng các phần tử nổi.

array.new_float(size, initial_value)

Ví dụ

// 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.
  • 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_bool array.get array.slice array.sort

array.new_int

Chức năng này tạo ra một đối tượng mảng mới gồm các phần tử thuộc kiểu int.

array.new_int(size, initial_value)

Ví dụ

// 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.
  • 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_float array.get array.slice array.sort

array.new_string

Chức năng này tạo ra các đối tượng mới trong một mảng với một kiểu string.

array.new_string(size, initial_value)

Ví dụ

// 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.
  • 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.new_float array.get array.slice

array.get

Chức năng này trả về giá trị của các phần tử chỉ định trong chỉ mục.

array.get(id, index)

Ví dụ

// 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.
  • 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.new_float array.set array.slice array.sort

array.push

Chức năng này thêm một giá trị vào mảng.

array.push(id, value)

Ví dụ

// 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.
  • 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.new_float array.set array.insert array.remove array.pop array.unshift

array.set

Chức năng này đặt giá trị của các phần tử thành chỉ mục được chỉ định.

array.set(id, index, value) 

Ví dụ

// 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.
  • index(series int) chỉ mục của các phần tử cần sửa đổi.
  • value (series <type of the array's elements>) Đặt giá trị mới.

Hẹn gặp lại array.new_float array.get array.slice

array.sum

Chức năng này trả về tổng các phần tử trong mảng.

array.sum(id) 

Ví dụ

// 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.new_float array.max array.min

array.avg

Chức năng này trả về giá trị trung bình của các phần tử trong mảng.

array.avg(id)

Ví dụ

// 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.new_float array.max array.min array.stdev

array.indexof

Chức năng này trả về chỉ mục mà giá trị xuất hiện lần đầu tiên. Nếu không tìm thấy giá trị này, nó trả về -1.

array.indexof(id, value)

Ví dụ

// 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.
  • value (series <type of the array's elements>) Giá trị được tìm kiếm trong mảng.

Hẹn gặp lại array.lastindexof array.get array.lastindexof array.remove array.insert

chiến lược

TrongstrategyTrong các hàm tích hợp liên quan, số điểm dừng, số điểm dừng được định nghĩa là số lần tăng giá một lần; ví dụ:strategy.exitCác hàmprofitlossCác tham số được đánh dấu bằng dấu chấm.profitĐặt giá thành là 10, tức là giá tăng gấp 10 lần giá giảm giá, giá tăng là biến cố tích hợpsyminfo.mintick

chiến lược

Chức năng này đặt nhiều thuộc tính chính sách. Lưu ý, thông tin chỉ hỗ trợtitleshorttitleoverlaypyramidingdefault_qty_typedefault_qty_valueCác tham số khác có thể được đặt bằng các tham số giao diện của chính sách ngôn ngữ PINE.

strategy(title, shorttitle, overlay, format, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, slippage, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, explicit_plot_zorder, max_lines_count, max_labels_count, max_boxes_count, risk_free_rate) 

Ví dụ

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.
  • 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.
  • 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ẻ.
  • 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。
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • max_bars_back(const int) là số nốt tối đa có thể 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ử con [] '), 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.
  • 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.
  • 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.
  • 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.
  • 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;;
  • 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.
  • 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).
  • 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).
  • 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.
  • 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).
  • max_lines_count(const int) hiển thị số lượng đường viền gần đây.
  • 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.
  • 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.
  • 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ỹ.
  • 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ể.
  • 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.
  • 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.
  • 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 indicator

strategy.entry

Đây là lệnh vào thị trường. 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, lệnh mới sẽ được đưa ra. Để ngừng lệnh vào, bạn nên sử dụng lệnh strategy.cancel hoặc strategy.cancel_all. Trong khi đó, các chức năng chiến lược.entry có thể đảo ngược đúng vị trí thị trường do ảnh hưởng của kim tự tháp.

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

Ví dụ

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. Các mã 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ó.
  • direction(strategy_direction) Một tham số cần thiết. Hướng thị trường nắm giữ:'strategy.long con số nhiều đầu','strategy.short con số không đầu'.
  • 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.
  • limit(series int/float) Các tham số có thể lựa chọn. Giá giới hạn của lệnh. Nếu đã được chỉ định, kiểu lệnh là "limit" hoặc "stop-limit". Các loại lệnh khác là "NaN".
  • 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à "stop" hoặc "stop-limit". Các loại lệnh khác là "NaN".
  • 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.
  • when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu đúng, lệnh được đặt. Nếu sai, không có gì xảy ra.
  • 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ó.
  • when(series bool) Các tham số có thể chọn. Điều kiện của lệnh.
  • 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á cả mặc định là NaN.
  • 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. Định giá mặc định là 100.
  • comment(series string) Các tham số có thể chọn.
  • 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.
  • comment(series string) Các tham số có thể chọn.
  • 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 thoá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, bạn có thể sửa đổi lệnh. Nếu lệnh không đượ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ực hiện. Để dừng lệnh rút, bạn nên sử dụng lệnh strategy.cancel hoặc strategy.cancel_all. Nếu hàm strategy.exit được gọi một lần, bạn sẽ chỉ rút một lần.应该多次调用命令strategy.exitNếu bạn sử dụng stop loss và track stop loss, kiểu lệnh của nó là stop stop và chỉ một trong số đó sẽ được đặt (sẽ được giao dịch trước). Nếu tất cả các tham số sau đây là stop profit, stop limit, stop loss, stop trail, stop trail_points và stop trail_offset, lệnh sẽ 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. Các mã 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ó.
  • 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.
  • 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á cả mặc định là NaN.
  • 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. Định giá mặc định là 100.
  • 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 lệnh giới hạn.
  • limit(series int/float) Các tham số có thể chọn được. 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). Các tham số của hàm giới hạn được ưu tiên cao hơn so với các tham số của hàm lợi nhuận (nếu không phải hàm NaN, thì hàm giới hạn được thay thế cho hàm lợi nhuận).
  • loss(series int/float) Các tham số có thể lựa chọn.  Dừng lỗ (được đánh dấu bằng dấu chấm)  Nếu đã được chỉ định, khi đạt đến mức lỗ (được đánh dấu bằng dấu chấm) thì thoát khỏi thị trường bằng lệnh dừng lỗ.
  • stop(series int/float) Tùy chọn các tham số: ◎ dừng lỗ (cần chỉ định giá) ◎ nếu đã chỉ định, sẽ thoát khỏi vị trí thị trường ở mức giá được chỉ định (hoặc tệ hơn) ◎ các tham số: ◎ dừng lỗ có ưu tiên cao hơn so với các tham số: ◎ giảm lỗ ◎ nếu không có giá trị: ◎ NaN, thì ◎ dừng lỗ thay cho ◎ mất giá: NaN) ◎ mặc định là ◎ NaN.
  • trail_price(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ần chỉ định giá). Nếu được chỉ định, các mức dừng theo dõi sẽ được đặt khi đạt đến mức giá được chỉ định. Trong tham số stop-loss theo dõi (series int/float) chỉ định độ lệch để xác định giá ban đầu của stop-loss theo dõi (được tính bằng điểm số): X điểm thấp hơn mức kích hoạt để thoát nhiều đầu; X điểm cao hơn mức kích hoạt để thoát không đầu.
  • trail_points(series int/float) Các tham số có thể chọn;; theo dõi mức kích hoạt dừng lỗ (được biểu thị bằng dấu chấm lợi nhuận);; nếu được chỉ định, sẽ đặt lệnh dừng theo dõi khi đạt đến mức giá đã tính toán (được biểu thị bằng số tiền lợi nhuận); trong tham số đường mòn_offset, chỉ định độ lệch để xác định giá ban đầu của lệnh dừng lỗ (được biểu thị bằng dấu chấm): X thấp hơn mức kích hoạt để thoát nhiều đầu; X cao hơn mức kích hoạt để thoát không đầu;; mặc định là NaN NaN).
  • trail_offset(series int/float) Các tham số có thể chọn được. Nồng độ kích hoạt stop-loss theo dõi (được biểu thị bằng dấu chấm). Độ lệch theo dấu 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 dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu trail_price hoặc dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu trail_points để thoát khỏi nhiều đầu; X điểm cao hơn dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu trail_price hoặc dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu dấu chấm để thoát khỏi không đầu.
  • 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.
  • when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu đúng, lệnh được đặt. Nếu sai, không có gì xảy ra.
  • 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 chiếu để hủy / ngừng sử dụng tất cả các lệnh trên danh sách dự bị, được tạo bởi các chức năng sau:strategy.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) Chọn các tham số.  Biểu tượng đặt hàng.  Xác định biểu tượng này để hủy một đơn đặt hàng.
  • when(series bool) Các tham số có thể chọn được.  hủy một lệnh dựa trên ID.  Nếu đúng, lệnh sẽ bị hủy.  giá trị mặc định là đúng.

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. Các mã 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ó.
  • direction(strategy_direction) Một tham số cần thiết. Định hướng lệnh:'strategy.long trục để mua','strategy.short trục để bán'.
  • 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.
  • limit(series int/float) Các tham số có thể lựa chọn. Giá giới hạn của lệnh. Nếu đã được chỉ định, kiểu lệnh là "limit" hoặc "stop-limit". Các loại lệnh khác là "NaN".
  • 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à "stop" hoặc "stop-limit". Các loại lệnh khác là "NaN".
  • 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.
  • when(series bool) Các tham số có thể lựa chọn. Tình trạng của lệnh. Nếu đúng, lệnh được đặt. Nếu sai, không có gì xảy ra.
  • 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.closedtrades.entry_bar_index strategy.closedtrades.exit_bar_index

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

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

strategy.opentrades.entry_id(trade_num)

Ví dụ

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_bar_index strategy.opentrades.entry_time

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

Trả về giá đầu vào của các giao dịch chưa được thanh toán.

strategy.opentrades.entry_price(trade_num)

Ví dụ

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.closedtrades.exit_price

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

Trả về thời gian UNIX khi giao dịch không được hòa vốn.

strategy.opentrades.entry_time(trade_num)

Ví dụ

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.closedtrades.entry_time strategy.closedtrades.exit_time

strategy.opentrades.profit

Trả về lợi nhuận và lỗ của giao dịch không được cân bằng.

strategy.opentrades.profit(trade_num)

Quay lại lợi nhuận của giao dịch đầu tư cuối cùng

Ví dụ

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.closedtrades.profit strategy.openprofit strategy.netprofit strategy.grossprofit

strategy.opentrades.size

Trả về hướng giao dịch và số lượng hợp đồng trong giao dịch không được cân bằng. Nếu giá trị > 0, thì vị trí thị trường là nhiều đầu. Nếu giá trị < 0, thì vị trí thị trường là trống.

strategy.opentrades.size(trade_num)

Ví dụ

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.size strategy.position_size strategy.opentrades strategy.closedtrades

chiến lược.closedtrades.entry_bar_index

Trả về bar_index của giao dịch đã được giao dịch.

strategy.closedtrades.entry_bar_index(trade_num)

Ví dụ

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_bar_index strategy.opentrades.entry_bar_index

chiến lược.closedtrades.exit_price

Trả về giá khởi điểm của giao dịch đã được thanh toán.

strategy.closedtrades.exit_price(trade_num)

Ví dụ

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.entry_price

chiến lược.closedtrades.exit_bar_index

Trả về bar_index đã thoát khỏi giao dịch sàn giao dịch.

strategy.closedtrades.exit_bar_index(trade_num)

Ví dụ

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 bar_index

chiến lược.closedtrades.entry_id

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

strategy.closedtrades.entry_id(trade_num)

Ví dụ

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_bar_index strategy.closedtrades.entry_time

chiến lược.closedtrades.entry_price

Trả về giá đầu vào của giao dịch đã được thanh toán.

strategy.closedtrades.entry_price(trade_num)

Ví dụ

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.exit_price strategy.closedtrades.size strategy.closedtrades

chiến lược.closedtrades.entry_time

Trở lại thời gian UNIX khi giao dịch đã được thanh toán.

strategy.closedtrades.entry_time(trade_num)

Ví dụ

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.opentrades.entry_time strategy.closedtrades.exit_time time

strategy.closedtrades.profit

Trả về lợi nhuận và lỗ của giao dịch đã được thanh toán.

strategy.closedtrades.profit(trade_num)

Ví dụ

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.opentrades.profit strategy.closedtrades.commission

strategy.closedtrades.size

Trả về hướng giao dịch và số lượng hợp đồng trong giao dịch đã được thanh toán. Nếu giá trị > 0, thì vị trí thị trường là nhiều đầu. Nếu giá trị < 0, thì vị trí thị trường là trống.

strategy.closedtrades.size(trade_num)

Ví dụ

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ụ

strategy("`strategy.closedtrades.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 both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
    entryP = strategy.closedtrade

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.