В процессе загрузки ресурсов... загрузка...

FMZ PINE Сценарий Doc

Автор:Изобретатели количественного измерения - мечты, Создано: 2022-04-28 16:05:05, Обновлено: 2024-10-12 17:25:27

значение t - NaN.

  • trail_price(series int/float) Опциональный аргумент. Уровень активации последней остановки (требует определенной цены). Если он указан, ордер последней остановки будет размещен, когда будет достигнут указанный уровень цены. Замещение (в тиках) для определения начальной цены последней остановки указано в аргументе trail_offset: X-тики ниже уровня активации для выхода из длинной позиции; X-тики выше уровня активации для выхода из короткой позиции. Значение по умолчанию NaN.
  • trail_points(series int/float) Опциональный аргумент. Уровень активации последнего остановки (прибыль, указанная в тиках). Если он указан, ордер последнего остановки будет размещен, когда будет достигнут рассчитанный уровень цены (указанная сумма прибыли). Замещение (в тиках) для определения начальной цены последнего остановки указано в аргументе trail_offset: X-тики ниже уровня активации для выхода из длинной позиции; X-тики выше уровня активации для выхода из короткой позиции. Значение по умолчанию NaN.
  • trail_offset(series int/float) Опциональный аргумент. Цена остановки последнего хода (указанная в тиках). Замещение в тиках для определения начальной цены ордера остановки последнего хода: X тики ниже trail_price или trail_points для выхода из длинной позиции; X тики выше trail_price или trail_points для выхода из короткой позиции. Значение по умолчанию NaN.
  • oca_name(серия строки) Опциональный аргумент. Название группы OCA (oca_type = strategy.oca.reduce) к которой относятся целевая прибыль, стоп-лосс / ордера на остановку. Если имя не указано, оно будет генерироваться автоматически.Обратите внимание, что FMZ не поддерживает этот аргумент.
  • commentДополнительные инструкции для порядка.
  • when(series bool) Опциональный аргумент. Условие заказа. Заказ размещается, если условие true. Если условие false, ничего не происходит (ранее размещенный заказ с тем же ID не отменяется). Значение по умолчанию true.
  • alert_message(серия строки) Опциональный аргумент при использовании {{strategy.order.alert_message}} в поле Message диалогового окна Create Alert.

strategy.cancel

Это команда для отмены/деактивации ожидаемых заказов, ссылаясь на их имена, которые были сгенерированы функциями: strategy.order, strategy.entry иstrategy.exit.

strategy.cancel(id, when) 

Пример

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

Аргументы

  • id(серия строки) Требуемый аргумент. Идентификатор заказа. Можно отменить заказ, ссылаясь на его идентификатор.
  • when(series bool) Опциональный аргумент. Условие для отмены заказа с указанным ID. Если условие true, то заказ с указанным ID будет отменен. Значение по умолчанию true.

Стратегия.отменить_все

Это команда для отмены/деактивации всех ожидаемых ордеров, которые были сгенерированы функциями: strategy.order, strategy.entry иstrategy.exit.

strategy.cancel_all(when) 

Пример

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

Аргументы

  • when(series bool) Опциональный аргумент. Условие для отмены всех заказов. Если условие верно, то все активные заказы будут отменены. Значение по умолчанию true.

strategy.order

Это команда для размещения заказа. Если заказ с тем же ID уже ожидается, можно изменить заказ. Если нет заказа с указанным ID, размещается новый заказ. Для деактивации заказа следует использовать команду strategy.cancel или strategy.cancel_all. В сравнении с функцией strategy.entry, на функцию strategy.order не влияет пирамида. Если параметры limit и stop являются NaN, тип заказа является рыночным заказом.

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

Пример

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

Аргументы

  • id(серийная строка) Необходимый параметр. Идентификатор заказа. Можно отменить или изменить заказ, ссылаясь на его идентификатор.
  • direction(strategy_direction) Необходимый параметр. Направление ордера: strategy.long для покупки, strategy.short для продажи.
  • qty(series int/float) Факультативный параметр. Количество контрактов/акций/лотов/единиц для торговли.
  • limit(series int/float) Факультативный параметр. Лимитная цена ордера. Если он указан, тип ордера либо limit, либо stop-limit. NaN должен быть указан для любого другого типа ордера.
  • stop(series int/float) Факультативный параметр. Стоп цена ордера. Если он указан, тип ордера либо stop, либо stop-limit. NaN должен быть указан для любого другого типа ордера.
  • oca_name(series string) Факультативный параметр. Название группы OCA, к которой принадлежит порядок. Если порядок не должен принадлежать какой-либо конкретной группе OCA, должна быть пустая строка.Обратите внимание, что FMZ не поддерживает этот аргумент.
  • oca_type(input string) Факультативный параметр. Тип группы OCA. Допустимые значения: strategy.oca.none - ордер не должен принадлежать какой-либо конкретной группе OCA; strategy.oca.cancel - ордер должен принадлежать группе OCA, где как только ордер выполняется, все другие ордера той же группы аннулируются; strategy.oca.reduce - ордер должен принадлежать группе OCA, где если выполнено X количество контрактов ордера, количество контрактов для каждого другого ордера той же группы OCA уменьшается на X.Обратите внимание, что FMZ не поддерживает этот аргумент.
  • commentДополнительные замечания о порядке.
  • when(series bool) Опциональный параметр. Условие заказа. Заказ размещается, если условие true. Если условие false, ничего не происходит (ранее размещенный заказ с тем же ID не отменяется). Значение по умолчанию true.
  • alert_message(series string) Факультативный параметр, который заменяет местоназначение {{strategy.order.alert_message}} при использовании в диалоговом поле Create Alerts Message.

Стратегия.Открытые сделки.Вход в список

Возвращает bar_index записи открытой сделки.

strategy.opentrades.entry_bar_index(trade_num)

Подождите 10 баров и закройте позицию.

Пример

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")

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

См. также strategy.closedtrades.entry_bar_index strategy.closedtrades.exit_bar_index

Стратегия.Открытые сделки.

Возвращает идентификатор записи открытой сделки.

strategy.opentrades.entry_id(trade_num)

Пример

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))

ВозвращениеВозвращает идентификатор записи открытой сделки.

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

ПримечанияФункция возвращает na, если trade_num не находится в диапазоне: 0 до strategy.opentrades-1.

См. также strategy.opentrades.entry_bar_index strategy.opentrades.entry_time

Стратегия.Открытые сделки.Входная цена

Возвращает цену открытой сделки.

strategy.opentrades.entry_price(trade_num)

Пример

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")

Расчет средней цены открытой позиции.

Пример

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())

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

См. также strategy.closedtrades.exit_price

Стратегия.открытие.время входа

Возвращает время UNIX записи открытой торговли.

strategy.opentrades.entry_time(trade_num)

Пример

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")

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

См. также strategy.closedtrades.entry_time strategy.closedtrades.exit_time

strategy.opentrades.profit

Возвращает прибыль/убыток от открытой торговли.

strategy.opentrades.profit(trade_num)

Возврат прибыли последней открытой сделки.

Пример

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")

Вычислить прибыль от всех открытых позиций.

Пример

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")

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

См. также strategy.closedtrades.profit strategy.openprofit strategy.netprofit strategy.grossprofit

strategy.opentrades.size

Возвращает направление и количество контрактов, торгуемых в открытой торговле. Если значение > 0, то рыночная позиция была длинной. Если значение < 0, то рыночная позиция была короткой.

strategy.opentrades.size(trade_num)

Пример

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")

Вычислить средний процент прибыли от открытых позиций.

Пример

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)

Аргументы

  • trade_num(series int) Номер сделки открытой сделки.

См. также strategy.closedtrades.size strategy.position_size strategy.opentrades strategy.closedtrades

Стратегия.Закрытые сделки.Вход_бар_индекс

Возвращает bar_index записи закрытой сделки.

strategy.closedtrades.entry_bar_index(trade_num)

Пример

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())

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.closedtrades.exit_bar_index strategy.opentrades.entry_bar_index

Стратегия.закрытые сделки.выходная цена

Возвращает цену выхода закрытой сделки.

strategy.closedtrades.exit_price(trade_num)

Пример

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")

Вычислить средний процент прибыли для всех закрытых сделок.

Пример

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)

Аргументы

  • trade_num(series int) Номер сделки завершенной сделки.

См. также strategy.closedtrades.entry_price

Стратегия.Закрытые сделки.Exit_bar_index

Вернуть bar_index закрытого выхода.

strategy.closedtrades.exit_bar_index(trade_num)

Пример

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")

Вычислить среднее количество K-линий на транзакцию.

Пример

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())

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также bar_index

Стратегия.Закрытые сделки.Вход_id

Возвращает идентификатор записи закрытой сделки.

strategy.closedtrades.entry_id(trade_num)

Пример

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))

ВозвращениеВозвращает идентификатор записи закрытой сделки.

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

ПримечанияФункция возвращает na, если trade_num не находится в диапазоне: 0 до strategy.closedtrades-1.

См. также strategy.closedtrades.entry_bar_index strategy.closedtrades.entry_time

Стратегия.Закрытые сделки.Входная цена

Возвращает цену записи закрытой сделки.

strategy.closedtrades.entry_price(trade_num)

Пример

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")

Вычислить средний процент прибыли для всех закрытых сделок.

Пример

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)

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.closedtrades.exit_price strategy.closedtrades.size strategy.closedtrades

Стратегия.закрытые сделки.время входа

Возвращает время UNIX записи закрытой сделки.

strategy.closedtrades.entry_time(trade_num)

Пример

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")

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.opentrades.entry_time strategy.closedtrades.exit_time time

strategy.closedtrades.profit

Возвращает прибыль/убыток от закрытой сделки.

strategy.closedtrades.profit(trade_num)

Пример

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")

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.opentrades.profit strategy.closedtrades.commission

strategy.closedtrades.size

Возвращает направление и количество контрактов, торгуемых в закрытой торговле. Если значение > 0, то рыночная позиция была длинной. Если значение < 0, то рыночная позиция была короткой.

strategy.closedtrades.size(trade_num)

Пример

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")

Вычислить средний процент прибыли по закрытым сделкам.

Пример

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

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.opentrades.size strategy.position_size strategy.closedtrades strategy.opentrades

Стратегия.закрытые сделки.время выхода

Возвращает время UNIX закрытия сделки.

strategy.closedtrades.exit_time(trade_num)

Пример

strategy("strategy.closedtrades.exit_time Example 1")

// 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
    label.new(bar_index, high, str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")

Возобновить закрытые сделки через X секунд.

Пример

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

// Strategy calls to emulate a single long trade at the first bar.
if bar_index == 0
    strategy.entry("Long", strategy.long)

reopenPositionAfter(timeSec) =>
    if strategy.closedtrades > 0
        if time - strategy.closedtrades.exit_time(strategy.closedtrades - 1) >= timeSec * 1000
            strategy.entry("Long", strategy.long)

// Reopen last closed position after 120 sec.                
reopenPositionAfter(120)

if ta.change(strategy.opentrades)
    strategy.exit("Long", stop = low * 0.9, profit = high * 2.5)

Аргументы

  • trade_num(series int) Номер сделки закрытой сделки.

См. также strategy.closedtrades.entry_time

Стратегия.Риск.Одобрить_вход_в

Эта функция может быть использована для указания направления рынка, в котором функция strategy.entry может открывать позиции.

strategy.risk.allow_entry_in(value)

Пример

strategy("strategy.risk.allow_entry_in")

strategy.risk.allow_entry_in(strategy.direction.long)
strategy.entry("Long", strategy.long, when = open > close)
// Instead of opening a short position with 10 contracts, this command will close long entries.
strategy.entry("Short", strategy.short, when = open < close, qty = 10)

Аргументы

  • value(простая строка) Допустимое направление. Возможные значения:strategy.direction.all, strategy.direction.long, strategy.direction.short

Стратегия.риск.max_position_size

Целью данного правила является определение максимального размера рыночной позиции.strategy.entryКоличество входа может быть уменьшено (при необходимости) до такого числа контрактов/акций/лотов/единиц, так что общий размер позиции не превышает значение, указанное в стратегии. риска. max_position_size . Если минимально возможное количество все еще нарушает правило, ордер не будет размещен.

strategy.risk.max_position_size(contracts)

Пример

strategy("risk.max_position_size Demo", default_qty_value = 100)
strategy.risk.max_position_size(10)
strategy.entry("buy", strategy.long, when = open > close)
plot(strategy.position_size)  // max plot value will be 10

Аргументы

  • contracts(простой int/float) Необходимый параметр. Максимальное количество контрактов/акций/лотов/единиц в позиции.

математика

math.abs

Абсолютная стоимостьnumberэтоnumberеслиnumber>= 0, или -number otherwise.

math.abs(number) 

ВозвращениеАбсолютная стоимостьnumber.

math.acos

Функция acos возвращает аркосинус (в радианах) такого числа, что cos ((acos(y)) = y для y в диапазоне [-1, 1].

math.acos(angle)

ВозвращениеКосинус дуги значения; возвращенный угол находится в диапазоне [0, Pi], или na, если y находится вне диапазона [-1, 1].

math.random

Возвращает псевдослучайное значение. Функция будет генерировать различную последовательность значений для каждого выполнения скрипта. Использование того же значения для опционального аргумента семена будет производить повторяемую последовательность.

math.random(min, max, seed)

ВозвращениеСлучайное значение.

Аргументы

  • min(series int/float) Нижняя граница диапазона случайных значений. Значение не включено в диапазон. По умолчанию 0.
  • max(series int/float) верхняя граница диапазона случайных значений. Значение не включено в диапазон. По умолчанию 1.
  • seed(input int) Опциональный аргумент. При использовании одного и того же семена позволяет последовательным вызовам к функции производить повторяемый набор значений.

math.asin

Функция асин возвращает арксинус (в радианах) числа такого рода, что sin ((asin(y)) = y для y в диапазоне [-1, 1].

math.asin(angle) 

ВозвращениеАрксинус значения; возвращенный угол находится в диапазоне [-Pi/2, Pi/2], или na, если y находится вне диапазона [-1, 1].

math.atan

Функция atan возвращает арктангенс (в радианах) числа таким образом, что tan ((atan ((y)) = y для любого y.

math.atan(angle) 

ВозвращениеТангенс дуги значения; возвращенный угол находится в диапазоне [-Pi/2, Pi/2].

math.ceil

Функция ceil возвращает наименьшее (ближе всего к отрицательному бесконечности) целое число, которое больше или равно аргументу.

math.ceil(number)

ВозвращениеНаименьшее целое число меньше или равно данному числу.

См. также math.floor math.round

math.cos

Функция cos возвращает тригонометрический косинус угла.

math.cos(angle) 

ВозвращениеТригонометрический косинус угла.

Аргументы

  • angle(серия int/float) Угол, в радианах.

math.exp

Функция expnumberЭто поднято к властиnumber, где e - число Эйлера.

math.exp(number) 

ВозвращениеЗначение, которое представляет собой e возведенное на степеньnumber.

См. также math.pow

math.floor

math.floor(number) 

ВозвращениеНаибольшее целое число меньше или равно данному числу.

См. также math.ceil math.round

math.log

Естественный логарифм любогоnumber> 0 - это уникальное y такое, что e^y =number.

math.log(number)

ВозвращениеЕстественный логарифмnumber.

См. также math.log10

math.log10

Общий (или базовый 10) логарифмnumberЭто степень, до которой 10 нужно поднять, чтобы получитьnumber. 10^y =number.

math.log10(number)

ВозвращениеЛогарифм в основе 10number.

См. также math.log

math.pow

Математическая функция мощности.

math.pow(base, exponent)

Пример

// math.pow
plot(math.pow(close, 2))

Возвращение baseподнято к властиexponentЕсли.baseявляется рядом, он рассчитывается по элементам.

Аргументы

  • base(серия int/float) Укажите базу, которую вы хотите использовать.
  • exponent(series int/float) Указывает экспонент.

См. также math.sqrt math.exp

math.sign

Знак (signum) number равен нулю, если number равен нулю, 1.0 если number больше нуля, -1.0 если number меньше нуля.

math.sign(number)

ВозвращениеЗнак спора.

math.sin

Функция sin возвращает тригонометрический синус угла.

math.sin(angle)

ВозвращениеТригонометрический синус угла.

Аргументы

  • angle(серия int/float) Угол, в радианах.

math.sqrt

Квадратный корень любогоnumber>= 0 - это уникальное y >= 0 такое, что y^2 =number.

math.sqrt(number)

ВозвращениеКвадратного корняnumber.

См. также math.pow

math.tan

Функция тан возвращает тригонометрическую тангенс угла.

math.tan(angle)

ВозвращениеТригонометрическая тангенс угла.

Аргументы

  • angle(серия int/float) Угол, в радианах.

math.round

Возвращает значениеnumberЗакруглены до ближайшего целого числа, с связи округления.precisionпараметр используется, возвращает значение плавающего числа, округленное до этого количества десятичных мест.

math.round(number) 
math.round(number, precision) 

ВозвращениеСтоимостьnumberокруглить до ближайшего целого числа или по точности.

Аргументы

  • number(серия int/float) Значение, которое должно быть округлено.
  • precision(series int) Факультативный аргумент.numberЕсли нет аргумента, округление будет на ближайшее целое число.

ПримечанияОбратите внимание, что для функции значений na возвращается na.

См. также math.ceil math.floor

math.max

Возвращает наибольшее из множественных значений.

math.max(number0, number1, ...) 

Пример

// math.max
plot(math.max(close, open))
plot(math.max(close, math.max(open, 42)))

ВозвращениеНаибольшее из множественных данных значений.

См. также math.min

math.min

Возвращает наименьшее из множественных значений.

math.min(number0, number1, ...) 

Пример

// math.min
plot(math.min(close, open))
plot(math.min(close, math.min(open, 42)))

ВозвращениеНаименьшее из множества данных значений.

См. также math.max

math.avg

Вычисляет среднее значение всех данных рядов (по элементам).

math.avg(number0, number1, ...)

Возвращение Average.

См. также math.sum ta.cum ta.sma

math.round_to_mintick

Возвращает значение, округленное на минутик символа, т.е. ближайшее значение, которое можно разделить на syminfo.mintick, без остатка, с округлением связи вверх.

math.round_to_mintick(number) 

ВозвращениеВnumberЗакругленный до точности.

Аргументы

  • number(серия int/float) Значение, которое должно быть округлено.

См. также math.ceil math.floor

math.sum

Функция суммы возвращает скользящую сумму последних y значений x.

math.sum(source, length)

ВозвращениеСуммаsourceдляlengthСтойки назад.

Аргументы

  • source(серия int/float) Серия значений для обработки.
  • length(серия int) Количество строк (длина).

См. также ta.cum for

math.todegrees

Возвращает приблизительно эквивалентный угол в градусах от угла, измеренного в радианах.

math.todegrees(radians) 

ВозвращениеЗначение угла в градусах.

Аргументы

  • radians(серия int/float) Угол в радианах.

math.toradians

Возвращает приблизительно эквивалентный угол в радианах от угла, измеренного в градусах.

math.toradians(degrees) 

ВозвращениеЗначение угла в радианах.

Аргументы

  • degrees(серия int/float) Угол в градусах.

другие

фикснан

Для данной серии заменяет значения NaN предыдущим ближайшим не NaN-значением.

fixnan(source) 

ВозвращениеСерия без пробелов.

Аргументы

  • source(серия int/float/bool/color)

См. также na nz

НЗ

Заменяет значения NaN нулями (или заданным значением) в серии.

nz(source, replacement) 
nz(source)

Пример

// nz
plot(nz(ta.sma(close, 100)))

ВозвращениеСтоимостьsourceесли нетna. Если значениеsourceэтоna, возвращает ноль, илиreplacementаргумент, когда один используется.

Аргументы

  • source(серия int/float/bool/color) Серия значений для обработки.
  • replacement(серия int/float/bool/color) Значение, которое заменит все значения na вsource series.

См. также na fixnan

не

Испытательное значение, если это NaN.

na(x)

Возвращениеистинное, если x не является действительным числом (x - NaN), в противном случае ложное.

См. также fixnan nz

Инт

Отбрасывает на или обрезает значение плавающего на int.

int(x) 

ВозвращениеЗначение аргумента после отложения в int.

См. также float bool color string

плыть

Кассы не плывут.

float(x) 

ВозвращениеЗначение аргумента после перехода на "плавающий".

См. также int bool color string

предупреждение

Запускает событие оповещения при вызове в режиме реального времени и предупреждение, основанное на событиях функции оповещения, ранее было создано для индикатора или стратегии через диалоговое окно "Создать предупреждение".

alert(message, freq)

Пример

// alert() example
ma = ta.sma(close, 14)
xUp = ta.crossover(close, ma)
if xUp
    // Trigger the alert the first time a cross occurs during the real-time bar.
    alert("Price (" + str.tostring(close) + ") crossed over MA (" + str.tostring(ma) +  ").", alert.freq_once_per_bar)
plot(ma)
plotchar(xUp, "xUp", "▲", location.top, size = size.tiny)

Аргументы

  • messageСообщение, отправленное, когда запускается предупреждение.
  • freq(вводная строка) Частота запуска. Возможные значения: alert.freq_all (все вызовы функций запускают предупреждение), alert.freq_once_per_bar (первый вызов функции во время панели запускает предупреждение), alert.freq_once_per_bar_close (призыв функции запускает предупреждение только тогда, когда это происходит во время последней итерации сценария панели реального времени, когда она закрывается).

ПримечанияВ Центре помощи объясняется, как создать такие оповещения. В отличие от условий оповещения, вызовы оповещения НЕ считаются дополнительной схемой. Вызовы функций могут быть расположены как в глобальном, так и в локальном масштабах. Вызовы функций ничего не показывают на диаграмме. Аргумент freq влияет только на частоту запуска вызова функции, когда он используется.

См. также alertcondition

Ситуация тревоги

Создает условие предупреждения, которое доступно в диалоге "Создать предупреждение". Обратите внимание, что условие предупреждения НЕ создает предупреждение, оно просто дает вам больше вариантов в диалоге "Создать предупреждение". Кроме того, эффект предупреждения невидим на графике.

alertcondition(condition, title, message)

Пример

// alertcondition
alertcondition(close >= open, title='Alert on Green Bar', message='Green Bar!')

Аргументы

  • condition(серия bool) Серия булевых значений, которая используется для предупреждения. истинные значения означают предупреждение о пожаре, ложное - никакого предупреждения. требуется аргумент.
  • title(const string) Заголовок условия тревоги.
  • message(const string) Сообщение для отображения при запуске сигналов.

ПримечанияОбратите внимание, что в Pine Script v4/v5 вызов alertcondition генерирует дополнительный график. Все такие вызовы учитываются при расчете числа выходной серии на скрипт.

См. также alert

показатель

Для того, чтобы быть совместимым сTrading ViewСтратегический код, на самом деле не требуется, чтобы быть вызванным.

См. также strategy

время

Функция времени возвращает время UNIX текущей строки для указанного временного интервала и сеанса или NaN, если точка времени находится вне сеанса.session arguments.

time(timeframe, session, timezone)

time(timeframe, session)

time(timeframe)

Пример

timeinrange(res, sess) => not na(time(res, sess, "America/New_York")) ? 1 : 0
plot(timeinrange("1", "1300-1400"), color=color.red)

// This plots 1.0 at every start of 10 minute bar on a 1 minute chart:
newbar(res) => ta.change(time(res)) == 0 ? 0 : 1
plot(newbar("10"))

При настройке сеанса вы можете указать не только часы и минуты, но и дни недели, которые будут включены в этот сеанс. Если дни не указаны, считается, что сессия была назначена с воскресенья (1) по субботу (7), т.е. 1100-2000 равняется 1100-1200:1234567. Например, на символе, который торгуется семь дней в неделю с 24-часовой торговой сессией, следующий скрипт не будет окрашивать субботу и воскресенье:

Пример

// Time
t1 = time(timeframe.period, "0000-0000:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)

Один.sessionНапример, следующий скрипт будет выделять строки с 10:00 до 11:00 и с 14:00 до 15:00 (только в рабочие дни):

Пример

// Time
t1 = time(timeframe.period, "1000-1100,1400-1500:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)

ВозвращениеВремя UNIX.

Аргументы

  • timeframeПустая строка интерпретируется как текущая временная рамка диаграммы.
  • session(простая строка) Спецификация сеанса. Опциональный аргумент, сеанс символа используется по умолчанию. Пустая строка интерпретируется как сеанс символа. FMZ не поддерживает это.
  • timezone(простая строка) Временный поясsessionэто аргумент. Он может быть использован только при указании session. Необязательно. По умолчанию syminfo.timezone. Может быть указан в обозначении GMT (например, GMT-5) или как имя базы данных часового пояса IANA (например, America/New_York).

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года.

год

year(time)
year(time, timezone)

ВозвращениеГод (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezoneДополнительный аргумент - часовой пояс.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года. Обратите внимание, что эта функция возвращает год, основанный на времени открытия баров. Для ночных сессий (например, EURUSD, где понедельник начинается в воскресенье, 17:00 UTC-4) это значение может быть ниже на 1 года торгового дня.

См. также year time month dayofmonth dayofweek hour minute second

месяц

month(time)
month(time, timezone)

ВозвращениеМесяц (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezoneДополнительный аргумент - часовой пояс.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года. Обратите внимание, что эта функция возвращает месяц, основанный на времени открытия баров. Для ночных сессий (например, EURUSD, где понедельник начинается в воскресенье, 17:00 UTC-4) это значение может быть ниже на 1 месяца торгового дня.

См. также month time year dayofmonth dayofweek hour minute second

час

hour(time)
hour(time, timezone)

ВозвращениеЧас (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezone(Серьезная строка) Факультативный параметр.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года.

См. также hour time year month dayofmonth dayofweek minute second

минуту

minute(time)
minute(time, timezone)

ВозвращениеМинута (в часовом поясе) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezoneДополнительный аргумент - часовой пояс.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года.

См. также minute time year month dayofmonth dayofweek hour second

Второй

second(time)
second(time, timezone)

ВозвращениеВторой (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezone(Серьезная строка) Факультативный параметр.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года.

См. также second time year month dayofmonth dayofweek hour minute

Еженедельно

weekofyear(time)
weekofyear(time, timezone)

ВозвращениеНеделя года (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezone(Серьезная строка) Факультативный параметр.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года. Обратите внимание, что эта функция возвращает неделю, основанную на времени открытия баров. Для ночных сессий (например, EURUSD, где понедельник начинается в воскресенье, 17:00) это значение может быть ниже на 1 недели торгового дня.

См. также weekofyear time year month dayofmonth dayofweek hour minute second

день в неделю

dayofweek(time)
dayofweek(time, timezone)

ВозвращениеДень недели (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • timeВремя UNIX в миллисекундах.
  • timezone(Серьезная строка) Факультативный параметр.

ПримечанияОбратите внимание, что эта функция возвращает день, основанный на времени открытия баров. Для ночных сессий (например, EURUSD, где понедельник начинается в воскресенье, 17:00) это значение может быть ниже на 1 дня торгового дня. Время UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года.

См. также time dayofmonth

день месяца

dayofmonth(time)
dayofmonth(time, timezone)

ВозвращениеДень месяца (в часовом поясе обмена) для предоставленного времени UNIX.

Аргументы

  • time(серия int) Unix время в миллисекундах.
  • timezone(Серьезная строка) Факультативный параметр.

ПримечанияВремя UNIX - это количество миллисекунд, прошедших с 00:00:00 UTC, 1 января 1970 года. Обратите внимание, что эта функция возвращает день, основанный на времени открытия баров. Для ночных сессий (например, EURUSD, где понедельник начинается в воскресенье, 17:00 UTC-4) это значение может быть ниже на 1 дня торгового дня.

См. также time dayofweek

Временная печать

Функция timestamp возвращает время UNIX указанной даты и времени.

timestamp(dateString)
timestamp(year, month, day, hour, minute, second)
timestamp(timezone, year, month, day, hour, minute, second)

Пример

// timestamp
plot(timestamp(2016, 01, 19, 09, 30), linewidth=3, color=color.green)
plot(timestamp(syminfo.timezone, 2016, 01, 19, 09, 30), color=color.blue)
plot(timestamp(2016, 01, 19, 09, 30), color=color.yellow)
plot(timestamp("GMT+6", 2016, 01, 19, 09, 30))
plot(timestamp(2019, 06, 19, 09, 30, 15), color=color.lime)
plot(timestamp("GMT+3", 2019, 06, 19, 09, 30, 15), color=color.fuchsia)
plot(timestamp("Feb 01 2020 22:10:05"))
plot(timestamp("2011-10-10T14:48:00"))

Больше

ПросящиеПочему стратегия Square Duplication не может быть реализована?

Изобретатели количественного измерения - мечтыХорошо, давайте проверим.

ПросящиеОптимизированный тренд-трекер

Изобретатели количественного измерения - мечтыЗдравствуйте, пожалуйста, какая именно стратегия?