資源の読み込みに... 荷物...

FMZ PINE スクリプト ドック

作者: リン・ハーン発明者 量化 - 微かな夢, 作成日:2022-04-28 16:05:05, 更新日:2024-10-12 17:25:27

t値は NaNです.

  • trail_price(series int/float) オプションの引数. トレイリングストップアクティベーションレベル (特定の価格が必要です).指定されている場合,指定価格レベルに達するとトレーリングストップオーダーが表示されます. トレイリングストップオーダーの初期価格を決定するためのオフセット (ティックで) は,トレイル_オフセット引数で指定されています. Xはロングポジションを終了するにはアクティベーションレベルを下回り; Xはショートポジションを終了するにはアクティベーションレベルを下回りします. デフォルト値はNaNです.
  • trail_points(series int/float) オプションの引数. トレイリングストップアクティベーションレベル (ティックで指定された利益).指定されている場合,計算された価格レベル (指定された利益額) に達すると,トレーリングストップオーダーが表示されます. トレイリングストップオーダーの初期価格を決定するためのオフセット (ティックで) は,トレイル_オフセット引数で指定されています. Xはロングポジションから脱出するにはアクティベーションレベルを下回ります. Xはショートポジションから脱出するにはアクティベーションレベルより高くなります. デフォルト値はNaNです.
  • trail_offset(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(シリーズ文字列) create Alert ダイアログのMessage フィールドで {{strategy.order.alert_message}} プレースホルダーを使用するときにオプションの引数.

strategy.cancel

これは, strategy.order, strategy.entry,および 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.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はピラミダリングの影響を受けません.

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( int シリーズ/float) 選択可能なパラメータ.取引される契約/株/ロット/ユニットの数.デフォルト値はNaNです.
  • limit(series int/float) オプションパラメータ.オーダーのリミット価格.指定されている場合,オーダーのタイプは,limit,またはstop-limitである.他のどのオーダータイプでも,NaNを指定する必要があります.
  • stop(series int/float) オプションパラメータ.オーダーのストップ価格.指定されている場合,オーダーのタイプはストップ,またはストップ・リミットである.他の任意のオーダータイプではNaNを指定する必要があります.
  • oca_name(シリーズ文字列) 選択可能なパラメータ.順序が属するOCAグループの名前.順序が特定のOCAグループに属さない場合は,空の文字列がある必要があります.FMZはこの主張を支持していないことに注意してください.
  • oca_type(入力文字列) 任意のパラメータ.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(シリーズ文字列) create Alert Message フィールドで使用されたときに {{strategy.order.alert_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(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

ほかにも参照 strategy.closedtrades.entry_bar_index strategy.closedtrades.exit_bar_index

戦略.オープン・トレード.エントリー_ID

オープン・トレード・エントリのIDを返します.

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

リターンオープン取引のエントリのIDを返します.

議論

  • trade_num(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

コメントこの関数は, trade_num が 0 から strategy.opentrades-1 までの範囲にない場合 na を返します.

ほかにも参照 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(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) オープン取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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( int シリーズ) 完了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 strategy.closedtrades.entry_price

ストラテジー.クローズド・トレード.エクジット_バー_インデックス

閉じた取引出口の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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 bar_index

ストラテジー.閉鎖取引.エントリー_id

終了した取引のエントリの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))

リターン終了した取引のエントリのIDを返します.

議論

  • trade_num(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

コメントこの関数は, trade_num が 0 から strategy.closedtrades-1 までの範囲でない場合, na を返します.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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(シリーズ int) 終了した取引の取引番号.最初の取引の番号は0です.

ほかにも参照 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

戦略.リスク.最大_ポジション_サイズ

この規則は,市場ポジションの最大規模を決定することを目的としています.この規則は,次の機能に影響します.strategy.entryエントリー量は (必要に応じて) 契約/株/ロット/ユニットの数に削減できるので,総ポジションサイズは戦略.リスク.最大_ポジション_サイズで指定された値を超えない. 最小可能な数値が依然としてルールを違反した場合,注文は行われない.

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

絶対値numbernumberもしnumber>= 0 または -number otherwise.

math.abs(number) 

リターン絶対値はnumber.

math.acos

アコス関数は, cos (acos (y)) = y for y の範囲 [-1, 1 ] のような数のアーコシヌ (ラディアンで) を返します.

math.acos(angle)

リターン値の弧コシノス;返した角は範囲 [0, Pi] にあり,または y が範囲 [-1, 1] の外にある場合, na です.

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 for y の範囲 [-1, 1 ] のような数のアーキサイヌ (ラディアンで) を返します.

math.asin(angle) 

リターン値の弧正弦;返された角は範囲 [−Pi/2,Pi/2] にあり,または y が範囲 [-1, 1] の外にある場合, na です.

math.atan

atan 関数は,任意の y に対して tan ((atan ((y)) = y のような数の角関数 (放射線で) を返します.

math.atan(angle) 

リターン値の弧触角,返された角は範囲 [−Pi/2,Pi/2] にあります.

math.ceil

ceiling 関数は,引数より大きいまたは等しい最小 (マイナス無限に近い) の整数を返します.

math.ceil(number)

リターン与えられた数より小さいまたは同じ最小の整数です

ほかにも参照 math.floor math.round

math.cos

角の trigonometric cosinus を返します. この関数は,角の trigonometric cosinus を返します.

math.cos(angle) 

リターン角の三角関数コシノス

議論

  • angle(int/floatシリーズ) 角は,ラディアンで表される.

math.exp

この関数は,number権力に昇るnumber,ここでeはオイラーの数である.

math.exp(number) 

リターンe を乗算した値number.

ほかにも参照 math.pow

math.floor

math.floor(number) 

リターン与えられた数より小さい最大整数

ほかにも参照 math.ceil math.round

math.log

任意の自然対数number> 0 は,e^y = となるような唯一 y です.number.

math.log(number)

リターン計算する数値number.

ほかにも参照 math.log10

math.log10

共通の (またはベース10) ロガリズムnumber10 を 10 に引き上げる必要があります.number10 ^ y = 10 ^ y = 10 ^ y = 10 ^ ynumber.

math.log10(number)

リターン基本10の対数ですnumber.

ほかにも参照 math.log

math.pow

数学的パワー関数です

math.pow(base, exponent)

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

リターン base権力に昇るexponentもしbase素数で計算されます.

議論

  • base( int/float シリーズ) 使用するベースを指定します.
  • exponent( int/float シリーズ) 乗数を指定する.

ほかにも参照 math.sqrt math.exp

math.sign

の記号 (signum) は,が0である場合0である. が0よりも大きい場合1.0, が0未満である場合-1.0.

math.sign(number)

リターン議論のサインだ

math.sin

sin関数は角の三角正弦を返します.

math.sin(angle)

リターン角の三角形正弦です

議論

  • angle(int/floatシリーズ) 角は,ラディアンで表される.

math.sqrt

平方根number単一のy >=0は,y^2 =number.

math.sqrt(number)

リターン平方根はnumber.

ほかにも参照 math.pow

math.tan

角の三角関数を返します.

math.tan(angle)

リターン角の三角関数です

議論

  • angle(int/floatシリーズ) 角は,ラディアンで表される.

math.round

値を返します.numberローズを丸める.precisionこのパラメータが使用されている場合, 浮遊値を 10進数点まで丸める.

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

合計関数は x の最後の y 値の移動式和を返します

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

nz

NaN の値を 0 (または与えられた値) で シリーズに置き換える.

nz(source, replacement) 
nz(source)

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

リターンその価値はsourceそうでない場合na. もしsourcena0 を返します.replacement引数を使うとき

議論

  • source(int/float/bool/colorシリーズ) 処理する値のシリーズ
  • replacement(int/float/bool/colorシリーズ)source series.

ほかにも参照 na fixnan

試験値がNaNである場合

na(x)

リターンtrue は,x が有効な数でない場合 (x は NaN) で,そうでなければ false です.

ほかにも参照 fixnan nz

int

浮遊値を int に変換する.

int(x) 

リターンint に cast した後の引数の値.

ほかにも参照 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 (関数呼び出しがリアルタイムバーの最後のスクリプト繰り返しの際に,それが閉じるときにのみ警告を起動します).デフォルトは alert.freq_once_per_barです.

コメントサポートセンターでは このようなアラートを作成する方法が説明されています 警告条件とは違って,警告呼び出しは追加のプロットとしてカウントされません. 機能の呼び出しは,グローバルおよびローカルの両方の範囲で位置付けることができます. 機能の呼び出しはチャートに何も表示されません. freq引数は,その関数呼び出しのトリガー周波数にのみ影響する.

ほかにも参照 alertcondition

警戒状態

アレート作成ダイアログで利用可能なアラートコンディションを作成します. アレートコンディションがアラートを作成しないことに注意してください. アレート作成ダイアログでより多くのオプションを与えます. また,アラートコンディション効果はチャートには見えない.

alertcondition(condition, title, message)

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

議論

  • condition(series bool) 警告に使用される boolean 値のシリーズ. True 値は警告火事, false - 警告がないことを意味します. 必要な引数.
  • title(const string) 警告条件のタイトル 任意の引数
  • message(コンスト文字列) 警報が発射されたときに表示されるメッセージ.オプションの引数.

コメントパインスクリプト v4/v5 では,アラートコンディションの呼び出しが追加のプロットを生成することを注意してください. このような呼び出しはすべて,スクリプトごとに出力シリーズの数を計算する際に考慮されます.

ほかにも参照 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-20001100-1200:1234567と同じです. 例えば,週7日24時間取引を行うシンボルでは,次のスクリプトが土曜日と日曜日に色を付けません.

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

1つsessionargument は,コンマで区切られたいくつかの異なるセッションを含むことができます.例えば,次のスクリプトは 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引数. セッションが指定された場合にのみ使用できます. オプションです. デフォルトは syminfo.timezoneです. GMT記号 (例えば GMT-5) または IANA 時間帯データベース名 (例えば America/New_York) で指定できます.

コメントUNIX時間とは,1970年1月1日,00:00:00 UTC以来経過したミリ秒の数である.

年間

year(time)
year(time, timezone)

リターン提供された UNIX 時間のための年 (交換時帯)

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) 任意の引数 時間帯

補足するUNIX時間とは,1970年1月1日,00:00:00 UTCから経過したミリ秒の数である.デフォルトでは,タイムゾーンは syminfo.timezoneであり,可能な値はタイムスタンプで見ることができます. この関数は,バーが開いている時間に基づいて年を返すことに注意してください.一夜間のセッション (例えば,月曜セッションが日曜日,UTC-417:00で始まるEURUSD) では,この値は取引日の年より1を下回る可能性があります.

ほかにも参照 year time month dayofmonth dayofweek hour minute second

month(time)
month(time, timezone)

リターン月 (交換時帯で) 指定された UNIX 時間

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) 任意の引数 時間帯

コメントUNIX時間とは,1970年1月1日,00:00:00 UTCから経過したミリ秒の数である.デフォルトでは,タイムゾーンは syminfo.timezoneであり,可能な値はタイムスタンプで見ることができます. この関数は,バーが開いている時間に基づいて月を返すことに注意してください. 一夜間のセッション (例えば,月曜セッションが日曜日,UTC-417:00で始まる EURUSD) では,この値は取引日の月よりも1を下回る可能性があります.

ほかにも参照 month time year dayofmonth dayofweek hour minute second

時間

hour(time)
hour(time, timezone)

リターン提供された UNIX 時間のための時間 (交換時帯)

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) オプションのパラメータ 時間帯

コメントUNIX時間とは,1970年1月1日00:00:00 UTC以降のミリ秒数である.デフォルトでは syminfo.timezone でタイムゾーンで,可能な値はタイムスタンプで見ることができます.

ほかにも参照 hour time year month dayofmonth dayofweek minute second

分数

minute(time)
minute(time, timezone)

リターン指定された UNIX 時間のための分 (交換タイムゾーン)

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) 任意の引数 時間帯

コメントUNIX時間とは,1970年1月1日00:00:00 UTC以降のミリ秒数である.デフォルトでは syminfo.timezone でタイムゾーンで,可能な値はタイムスタンプで見ることができます.

ほかにも参照 minute time year month dayofmonth dayofweek hour second

第2回

second(time)
second(time, timezone)

リターン2秒 (交換タイムゾーン) 指定された UNIX 時間

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) オプションのパラメータ 時間帯

コメントUNIX時間とは,1970年1月1日00:00:00 UTC以降のミリ秒数である.デフォルトでは syminfo.timezone でタイムゾーンで,可能な値はタイムスタンプで見ることができます.

ほかにも参照 second time year month dayofmonth dayofweek hour minute

週年

weekofyear(time)
weekofyear(time, timezone)

リターン提供された UNIX 時間 の 年の 週 (交換 時間帯 で)

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) オプションのパラメータ 時間帯

コメントUNIX時間とは,1970年1月1日00:00:00 UTC以降のミリ秒数である.デフォルトでは syminfo.timezone のタイムゾーンで,可能な値はタイムスタンプで見ることができる. この関数は,バーが開いている時間に基づいて週を返すことに注意してください. 一夜間のセッション (例えば,月曜セッションが日曜日17:00に始まるEURUSD) では,この値は取引日の週よりも1を下回る可能性があります.

ほかにも参照 weekofyear time year month dayofmonth dayofweek hour minute second

日・週

dayofweek(time)
dayofweek(time, timezone)

リターン提供された UNIX 時間のための週の日 (交換時間帯)

議論

  • time(シリーズイント) UNIX 時間はミリ秒で.
  • timezone(シリーズ文字列) オプションのパラメータ 時間帯

コメントこの関数は,バーが開いている時間に基づいて日値を返すことに注意してください. 一夜間のセッション (例えば,月曜セッションが日曜日17:00に始まるEURUSD) では,この値は取引日の日より1を下回る可能性があります. UNIX時間とは,1970年1月1日00:00:00 UTC以降のミリ秒数である.デフォルトでは syminfo.timezone のタイムゾーンで,可能な値はタイムスタンプで見ることができる.

ほかにも参照 time dayofmonth

月曜日

dayofmonth(time)
dayofmonth(time, timezone)

リターン月曜日 (交換時帯) 指定された UNIX 時間

議論

  • time(series int) ユニックス 時間はミリ秒で.
  • timezone(シリーズ文字列) オプションのパラメータ 時間帯

コメントUNIX時間とは,1970年1月1日,00:00:00 UTCから経過したミリ秒の数である.デフォルトでは,タイムゾーンは syminfo.timezoneであり,可能な値はタイムスタンプで見ることができます. この関数は,バーが開いている時間に基づいて日値を返します. 一夜間のセッション (例えば,月曜セッションが日曜日,UTC-417:00で始まるEURUSD) では,この値は取引日の日より1を下回る可能性があります.

ほかにも参照 time dayofweek

タイムスタンプ

関数タイムスタンプは,指定された日付と時間の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"))

もっと

乞食なぜ戦略広場複製のパイン戦略が実用化できないのか

発明者 量化 - 微かな夢じゃあ調べてみよう.

乞食張超大の最適化されたトレンドトレーカー

発明者 量化 - 微かな夢こんにちは,具体的にはどんな戦略ですか?