Retourne la valeurLe nombre moyen d'éléments d'une matrice.
Paramètres
id
(int[]/float[]) Objets de l'arrayé.À bientôt
array.avg
array.variance
array.min
Cette fonction renvoie le modèle d'un élément d'une matrice. Si plusieurs valeurs ont la même fréquence, elle renvoie la valeur minimale.
array.mode(id)
Exemples
// array.mode example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.mode(a))
Retourne la valeurLe modèle des éléments d'une matrice.
Paramètres
id
(int[]/float[]) Objets de l'arrayé.À bientôt
array.new_float
array.avg
array.variance
array.min
Retourne le pourcentage spécifié d'une valeur d'une matrice inférieure ou égale à sa valeur, en utilisant une insertion linéaire.
array.percentile_linear_interpolation(id, percentage)
Paramètres
id
(int[]/float[]) Objets de l'arrayé.percentage
(series int/float) doit être égal ou inférieur au pourcentage de la valeur retournée.Nom de l'auteurDans les statistiques, le pourcentage est le pourcentage d'articles de classement qui apparaissent à un certain score ou en dessous d'un certain score. Cette mesure indique le pourcentage de points dans la distribution de fréquences standard inférieure au score que vous mesurez.
À bientôt
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Retourne la valeur de l'ensemble des pourcentages spécifiés (pourcentages) inférieure ou égale à celle-ci en utilisant la méthode de classement le plus récent.
array.percentile_nearest_rank(id, percentage)
Paramètres
id
(int[]/float[]) Objets de l'arrayé.percentage
(series int/float) doit être égal ou inférieur au pourcentage de la valeur retournée.Nom de l'auteurDans les statistiques, le pourcentage est le pourcentage d'articles de classement qui apparaissent à un certain score ou en dessous d'un certain score. Cette mesure indique le pourcentage de fractions dans la distribution de fréquence standard inférieure au score que vous mesurez.
À bientôt
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Retourne le classement en pourcentage de la moyenne d'une matrice.
array.percentrank(id, index)
Paramètres
id
(int[]/float[]) Objets de l'arrayé.index
(series int) calcule la valeur de sa position en pourcentage.Nom de l'auteurLe classement en pourcentage est le pourcentage du nombre d'éléments de l'arrayé inférieur ou égal à la valeur de référence.
À bientôt
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Cette fonction renvoie la différence entre la valeur minimale et la valeur maximale de l'arithmétique donnée.
array.range(id)
Exemples
// array.range example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.range(a))
Retourne la valeurDifférence entre la valeur minimale et la valeur maximale d'un ensemble.
Paramètres
id
(int[]/float[]) Objets de l'arrayé.À bientôt
array.new_float
array.min
array.max
array.sum
Cette fonction modifie le contenu de l'array en supprimant l'élément avec l'index spécifié.
array.remove(id, index)
Exemples
// array.remove example
a = array.new_float(5,high)
removedEl = array.remove(a, 0)
plot(array.size(a))
plot(removedEl)
Retourne la valeurLa valeur de l'élément est supprimée.
Paramètres
id
(any array type) Objet de l'array.index
(series int) l'index des éléments à supprimer.À bientôt
array.new_float
array.set
array.push
array.insert
array.pop
array.shift
Cette fonction inverse l'ordre. Le premier élément devient le dernier, et le dernier devient le premier.
array.reverse(id)
Exemples
// 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))
Paramètres
id
(any array type) Objet de l'array.À bientôt
array.new_float
array.sort
array.push
array.set
array.avg
Cette fonction utilise un nombre variable de paramètres de l'un des types suivants: int, float, boolean, string, line, color, linefill, et renvoie une rangée de type correspondant.
array.from(arg0, arg1, ...)
Exemples
// array.from_example
arr = array.from("Hello", "World!") // arr (string[]) will contain 2 elements: {Hello}, {World!}.
plot(close)
Retourne la valeurLa valeur de l'élément d'une matrice.
Paramètres
arg0, arg1, ...
(series int/float/bool/color/string/line/linefill) Paramètres de série.Cette fonction crée un nouveau<type>
L'élément est un objet de l'arithmétique.
array.new(size, initial_value)
Exemples
// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))
Exemples
// 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))
Exemples
// 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")
Exemples
// 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)
Retourne la valeurL'ID d'un objet d'une matrice peut être utilisée avec d'autres matrices.
Paramètres
size
La taille initiale de la série (series int) ⇒ est facultative. La valeur par défaut est 0.initial_value
(series Nom de l'auteurL'index de la matrice commence à 0. Si vous souhaitez initialement initialer une matrice et spécifier tous ses éléments en même temps, utilisez la fonction array.from.
À bientôt
array.from
array.push
array.get
array.size
array.remove
array.shift
array.sum
Cette fonction crée un nouvel objet d'array composé d'éléments de type bool.
array.new_bool(size, initial_value)
Exemples
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)
Retourne la valeurL'ID d'un objet d'une matrice peut être utilisée avec d'autres matrices.
Paramètres
size
La taille initiale de la série (series int) ⇒ est facultative. La valeur par défaut est 0.initial_value
(series bool) La valeur initiale de tous les éléments de la série↑ Optionnelle↑ La valeur par défaut est Nom de l'auteurL'index d'une matrice commence à zéro.
À bientôt
array.new_float
array.get
array.slice
array.sort
Cette fonction crée un nouvel objet d'une matrice d'éléments flottants.
array.new_float(size, initial_value)
Exemples
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)
Retourne la valeurL'ID d'un objet d'une matrice peut être utilisée avec d'autres matrices.
Paramètres
size
La taille initiale de la série (series int) ⇒ est facultative. La valeur par défaut est 0.initial_value
(series int/float) La valeur initiale de tous les éléments de la série. Optionnelle. La valeur par défaut est Nom de l'auteurL'index d'une matrice commence à zéro.
À bientôt
array.new_bool
array.get
array.slice
array.sort
Cette fonction crée un nouvel objet d'array composé d'éléments de type int.
array.new_int(size, initial_value)
Exemples
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)
Retourne la valeurL'ID d'un objet d'une matrice peut être utilisée avec d'autres matrices.
Paramètres
size
La taille initiale de la série (series int) ⇒ est facultative. La valeur par défaut est 0.initial_value
(series int) La valeur initiale de tous les éléments de la série↑ est optionnelle↑ la valeur par défaut est Nom de l'auteurL'index d'une matrice commence à zéro.
À bientôt
array.new_float
array.get
array.slice
array.sort
Cette fonction crée de nouveaux objets d'array avec un élément de type de chaîne.
array.new_string(size, initial_value)
Exemples
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))
Retourne la valeurL'ID d'un objet d'une matrice peut être utilisée avec d'autres matrices.
Paramètres
size
La taille initiale de la série (series int) ⇒ est facultative. La valeur par défaut est 0.initial_value
(series string) La valeur initiale de tous les éléments de la série↑ est optionnelle↑ la valeur par défaut est Nom de l'auteurL'index d'une matrice commence à zéro.
À bientôt
array.new_float
array.get
array.slice
Cette fonction renvoie la valeur de l'élément indiqué dans l'index.
array.get(id, index)
Exemples
// 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))
Retourne la valeurLa valeur de l'élément d'une matrice.
Paramètres
id
(any array type) Objet de l'array.index
(series int) est l'index de l'élément dont la valeur doit être renvoyée.À bientôt
array.new_float
array.set
array.slice
array.sort
Cette fonction ajoute une valeur à l'array.
array.push(id, value)
Exemples
// array.push example
a = array.new_float(5, 0)
array.push(a, open)
plot(array.get(a, 5))
Paramètres
id
(any array type) Objet de l'array.value
(series <type of the array's elements>
) est ajoutée à la valeur de l'élément à la fin de l'arrangement.À bientôt
array.new_float
array.set
array.insert
array.remove
array.pop
array.unshift
Cette fonction définit la valeur de l'élément comme l'index indiqué.
array.set(id, index, value)
Exemples
// array.set example
a = array.new_float(10)
for i = 0 to 9
array.set(a, i, close[i])
plot(array.sum(a) / 10)
Paramètres
id
(any array type) Objet de l'array.index
(series int) modifier l'index de l'élément.value
(series <type of the array's elements>
) nouvelle valeur à définir.À bientôt
array.new_float
array.get
array.slice
Cette fonction renvoie la somme des éléments d'une matrice.
array.sum(id)
Exemples
// array.sum example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.sum(a))
Retourne la valeurLa somme des éléments d'une matrice.
Paramètres
id
(int[]/float[]) Objets de l'arrayé.À bientôt
array.new_float
array.max
array.min
Cette fonction renvoie la moyenne des éléments d'une matrice.
array.avg(id)
Exemples
// array.avg example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.avg(a))
Retourne la valeurLes valeurs moyennes des éléments d'une matrice.
Paramètres
id
(int[]/float[]) Objets de l'arrayé.À bientôt
array.new_float
array.max
array.min
array.stdev
Cette fonction renvoie l'index dans lequel la valeur est apparue pour la première fois. Si la valeur n'est pas trouvée, elle renvoie −1.
array.indexof(id, value)
Exemples
// array.indexof example
a = array.new_float(5,high)
index = array.indexof(a, high)
plot(index)
Retourne la valeurL'index de l'élément.
Paramètres
id
(any array type) Objet de l'array.value
(series <type of the array's elements>
La valeur à rechercher dans l'array.À bientôt
array.lastindexof
array.get
array.lastindexof
array.remove
array.insert
Dansstrategy
Dans les fonctions intégrées, le nombre de points de stop-loss, le nombre de points de stop-loss est défini comme le multiple d'un saut de prix; par exemple:strategy.exit
La fonctionprofit
、loss
Paramètres avec des points indiquant le stop, le stop, les paramètresprofit
S'il est défini à 10, c'est-à-dire qu'un saut de prix est multiplié par 10 comme différence de prix de stop-loss, le saut de prix est une variable intégréesyminfo.mintick
。
La fonction définit plusieurs attributs de stratégie.
Attention, le partage est uniquement en soutien.title
,shorttitle
,overlay
,pyramiding
,default_qty_type
,default_qty_value
Paramètres, d'autres paramètres peuvent être réglés par les paramètres d'interface de la stratégie de la langue 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)
Exemples
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)
Paramètres
title
(const string) Le titre de l'indicateur que vous voyez dans le plugin indicateur / stratégie. Paramètres requis.shorttitle
(const string) Le titre court de l'indicateur que vous voyez dans l'exemple du graphique.overlay
(const bool) Si true, le paramètre est ajouté comme superposition de la série principale. Si false - il est ajouté dans une fenêtre de graphique séparée.format
precision
scale
pyramiding
(const int) Le nombre maximal d'entrées autorisées dans la même direction. Si cette valeur est 0, une seule entrée peut être ouverte dans la même direction, et toute autre entrée sera rejetée. La valeur par défaut est 0.calc_on_order_fills
calc_on_every_tick
max_bars_back
backtest_fill_limits_assumption
default_qty_type
(const string) est défini pourqty
La valeur du paramètre est indiquée dans la fonction strategy.entry ou strategy.order. Les valeurs possibles sont: strategy.fixed indique le nombre de contrats/actions/manches, strategy.cash indique le montant de la monnaie, ou strategy.percent_of_equity indique le pourcentage d'intérêts disponibles.default_qty_value
(const int/float) Le nombre de transactions par défaut de la fonction strategy.entry ou de la fonction strategy.order, dont l'unité est déterminée par le paramètre utilisé avec le paramètre currency
slippage
commission_type
commission_value
process_orders_on_close
close_entries_rule
max_lines_count
max_labels_count
max_boxes_count
margin_long
margin_short
explicit_plot_zorder
initial_capital
risk_free_rate
Nom de l'auteurChaque script de stratégie doit avoir une stratégie appelée. Le code PineScript qui utilise le paramètre calc_on_every_tick = true peut effectuer des calculs différents sur les enregistrements historiques et les données en temps réel. Lorsque vous utilisez un graphique de type non standard comme base de stratégie, vous devez savoir que les résultats seront différents. Les commandes seront exécutées au prix de ce tableau (par exemple, pour Heikin Ashi, le prix de Heikin Ashi sera utilisé (la moyenne n'est pas le vrai prix du marché). Nous vous recommandons donc fortement d'utiliser le type de graphique standard dans votre stratégie.
À bientôt
indicator
C'est une commande d'entrée de marché. Une commande peut être modifiée si une commande avec le même ID est déjà accrochée. Une nouvelle commande peut être envoyée si une commande sans ID est spécifiée. Pour annuler une commande d'entrée, vous devez utiliser la commande stratégie.cancel ou stratégie.cancel_all. Comparativement à la fonction stratégie.order, la fonction stratégie.entry est influencée par la pyramide et peut inverser correctement la position du marché.
strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Exemples
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
Paramètres
id
(series string) Paramètres requis. L'identifiant de la commande. On peut annuler ou modifier une commande en citant son identifiant.direction
(strategy_direction) Un paramètre nécessaire. Direction de l'action sur le marché: "strategy.long" pour le multi-tête, "strategy.short" pour le vide.qty
(series int/float) paramètres optionnels↑ nombre de contrats/actions/points de vente/unités négociés↑ valeur par défaut: limit
(series int/float) paramètre sélectionnable. Le prix limite de l'ordre. Le type d'ordre est "limit" ou "stop-limit" s'il est spécifié.stop
(series int/float) paramètre sélectionnable↑ prix de stop-loss de l'ordre↑ type d'ordre "stop" ou "stop-limit" s'il est spécifié↑ autre type d'ordre "NaN"↑oca_name
oca_type
comment
(series string) Paramètres sélectifs.when
(series bool) paramètre sélectionnable. Status de l'ordre. Si "true", l'ordre est placé. Si "false", rien ne se passe.alert_message
(series string) Un paramètre optionnel utilisé pour remplacer le caractère {{strategy.order.alert_message}} dans le champ de message de la chaîne de dialogue de la chaîne d'alarme.Il s'agit d'une commande pour un ordre d'exit avec un ID spécifié. Si plusieurs ordres d'entrée ont le même ID, ils s'excluent tous en même temps. Si un ordre ouvert n'a pas d'ID spécifié au moment du déclenchement de la commande, la commande n'est pas exécutée.
strategy.close(id, when, comment, qty, qty_percent, alert_message)
Exemples
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)
Paramètres
id
(series string) Paramètres requis. L'identifiant de l'ordre. L'ordre peut être fermé en citant son identifiant.when
(series bool) Paramètres sélectifs. Conditions de la commande.qty
(series int/float) Paramètres optionnels. Nombre de contrats/nombre de parts/nombre de pièces/unités de sortie.qty_percent
(series int/float) Définit le pourcentage de l'équilibre ((0-100)). Sa priorité est inférieure à la priorité de l'option comment
(series string) Paramètres sélectifs.alert_message
(series string) Un paramètre optionnel utilisé pour remplacer le caractère {{strategy.order.alert_message}} dans le champ de message de la chaîne de dialogue de la chaîne d'alarme.Le gouvernement a décidé de retirer ses positions actuelles du marché pour les maintenir à plat.
strategy.close_all(when, comment, alert_message)
Exemples
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)
Paramètres
when
(series bool) Paramètres sélectifs. Conditions de la commande.comment
(series string) Paramètres sélectifs.alert_message
(series string) Un paramètre optionnel utilisé pour remplacer le caractère {{strategy.order.alert_message}} dans le champ de message de la chaîne de dialogue de la chaîne d'alarme.Il s'agit d'une commande d'exit qui spécifie une entrée ou une position de marché complète. Une commande peut être modifiée si une commande avec le même ID est déjà suspendue. Si une commande d'entrée n'est pas passée, mais qu'une commande de retrait apparaît, l'ordre de retrait est suspendu jusqu'à ce que la personne après la commande d'entrée puisse placer une commande de retrait. Pour arrêter une commande de retrait, vous devez utiliser la commande strategy.cancel ou strategy.cancel_all. Si la fonction strategy.exit est appelée une seule fois, elle ne sera retirée qu'une seule fois.应该多次调用命令strategy.exitSi vous utilisez des stop-loss et des stop-loss de suivi, dont le type d'ordre est le stop-loss, seul l'un d'entre eux sera placé (il sera transait en premier). Si tous les paramètres suivants sont les suivants: stop-profit, stop-limit, stop-loss, stop-trail, stop-trail_points, stop-trail_offset, l'ordre échouera.
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)
Exemples
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"
Paramètres
id
(series string) Paramètres requis. L'identifiant de la commande. On peut annuler ou modifier une commande en citant son identifiant.from_entry
(series string) Paramètre sélectionnable↑ pour spécifier l'identifiant d'entrée d'instruction Exit↑ pour exiter tous les positions, une chaîne vide doit être utilisée↑ par défaut une chaîne vide↑qty
(series int/float) Paramètres optionnels. Nombre de contrats/nombre de parts/nombre de pièces/unités de sortie.qty_percent
(series int/float) Définit le pourcentage de l'équilibre ((0-100)). Sa priorité est inférieure à la priorité de l'option profit
(series int/float) paramètre sélectionnable♦ objectif de profit (indiqué par un point)♦ si spécifié, quittez le marché avec un ordre de prix limité lorsque le point de profit spécifié est atteint♦ valeur par défaut limit
(series int/float) paramètre sélectionnable. Objectif de profit (prix à spécifier). Si c'est le cas, sortez du marché au prix (ou mieux) indiqué. La priorité du paramètre est supérieure à celle du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre du paramètre.loss
(series int/float) paramètre sélectionnable↑ Stop-loss (indiqué par un point)↑ Si spécifié, quittez le marché en un seul stop-loss lorsque le point de perte spécifié est atteint↑ Par défaut, le prix est NaNstop
(series int/float) Paramètres optionnels. Arrêt de perte (prix à spécifier). Si c'est le cas, la position sera retirée du marché au prix indiqué (ou pire). La priorité du paramètre arrêt de perte est supérieure à celle du paramètre arrêt de perte (priorité du paramètre arrêt de perte).trail_price
(series int/float) Optionnelle. Paramètre d'activation des niveaux d'arrêt de suivi (prix requis). Si elle est spécifiée, l'ordre d'arrêt de suivi sera placé lorsque le niveau de prix spécifié est atteint. Paramètre d'affichage de la déviation utilisée pour déterminer le prix initial de l'ordre d'arrêt d'observation dans le paramètre d'affichage de la trajectoire_offset (en point): X point inférieur au niveau d'activation pour une sortie à plusieurs niveaux; X point supérieur au niveau d'activation pour une sortie à plusieurs niveaux.trail_points
(series int/float) Paramètres optionnels. Niveau d'activation de stop-loss suivi (indiqué par des points de profit). Si spécifié, un ordre de stop-loss suivi sera placé lorsque le niveau de prix calculé (indiqué par un montant de profit) est atteint. Dans le paramètre de l'ordre de stop-loss suivi (indiqué par un compteur de points) dans le paramètre de l'ordre de stop-loss suivi (indiqué par un compteur de points): point X inférieur au niveau d'activation pour une sortie à plusieurs têtes; point X supérieur au niveau d'activation pour une sortie à vide.trail_offset
(series int/float) Optionnelle. Niveau d'activation des stops de suivi (indiqué par des points). Le décalage en points est utilisé pour déterminer le prix initial de l'ordre de suivi des stops de suivi: X point inférieur à la barre de prix de la piste ou à la barre de points de piste pour une sortie multiple; X point supérieur à la barre de prix de la piste ou à la barre de points de piste pour une sortie vide.oca_name
comment
(series string) Paramètres sélectifs.when
(series bool) paramètre sélectionnable. Status de l'ordre. Si "true", l'ordre est placé. Si "false", rien ne se passe.alert_message
(series string) Un paramètre optionnel utilisé pour remplacer le caractère {{strategy.order.alert_message}} dans le champ de message de la chaîne de dialogue de la chaîne d'alarme.Il s'agit d'une référence au nom pour annuler / désactiver toutes les commandes de liste de contrôle, générée par les fonctions suivantes: strategy.order, strategy.entry andstrategy.exit。
strategy.cancel(id, when)
Exemples
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
Paramètres
id
(series string) Paramètres à sélectionner. Marque de commande. Localiser cette marque pour annuler une commande.when
(series bool) Optionnelle. Arrêter une commande en fonction de l'ID. Si "true", l'ordre est annulé.这是取消/停用所有预挂单命令,由以下功能生成:strategy.order,strategy.entry和strategy.exit。
strategy.cancel_all(when)
Exemples
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
Paramètres
when
(series bool) Optionnelle ⇒ annuler toutes les commandes ⇒ annuler toutes les commandes actives si la condition est vraie ⇒ valeur par défaut ⇒ true ⇒C'est la commande de la commande suivante. Si une commande avec le même ID est déjà accrochée, vous pouvez modifier l'ordre. Si une commande sans ID est spécifiée, une nouvelle commande est envoyée. Pour arrêter l'ordre, vous devez utiliser la commande stratégie.cancel ou stratégie.cancel_all. Contrairement à la fonction stratégie.entry, la fonction stratégie.order n'est pas affectée par la forme de la pyramide.
strategy.order(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Exemples
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
Paramètres
id
(series string) Paramètres requis. L'identifiant de la commande. On peut annuler ou modifier une commande en citant son identifiant.direction
(strategy_direction) Un paramètre nécessaire. Direction de l'ordre: stratégie.long est pour acheter, stratégie.short est pour vendre.qty
(series int/float) paramètres optionnels↑ nombre de contrats/actions/points de vente/unités négociés↑ valeur par défaut: limit
(series int/float) paramètre sélectionnable. Le prix limite de l'ordre. Le type d'ordre est "limit" ou "stop-limit" s'il est spécifié.stop
(series int/float) paramètre sélectionnable↑ prix de stop-loss de l'ordre↑ type d'ordre "stop" ou "stop-limit" s'il est spécifié↑ autre type d'ordre "NaN"↑oca_name
oca_type
comment
(series string) Paramètres sélectifs.when
(series bool) paramètre sélectionnable. Status de l'ordre. Si "true", l'ordre est placé. Si "false", rien ne se passe.alert_message
(series string) Un paramètre optionnel utilisé pour remplacer le caractère {{strategy.order.alert_message}} dans le champ de message de la chaîne de dialogue de la chaîne d'alarme.Retourne le bar_index pour une entrée de transaction qui n'a pas été levée.
strategy.opentrades.entry_bar_index(trade_num)
Attendre 10 lignes K et les aligner
Exemples
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")
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.À bientôt
strategy.closedtrades.entry_bar_index
strategy.closedtrades.exit_bar_index
Retournez l'ID de l'entrée pour les transactions qui ne sont pas liquidées.
strategy.opentrades.entry_id(trade_num)
Exemples
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))
Retourne la valeurRetournez l'ID de l'entrée pour les transactions qui ne sont pas liquidées.
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.Nom de l'auteurSi trade_num n'est pas dans la plage, la fonction renvoie na:0 à strategy.opentrades−1.
À bientôt
strategy.opentrades.entry_bar_index
strategy.opentrades.entry_time
Le prix d'entrée est retourné sur les transactions non liquidées.
strategy.opentrades.entry_price(trade_num)
Exemples
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")
Calculer le prix moyen non équilibré
Exemples
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())
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.À bientôt
strategy.closedtrades.exit_price
Retourne l'heure d'entrée de la transaction sans solde sur UNIX.
strategy.opentrades.entry_time(trade_num)
Exemples
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")
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.À bientôt
strategy.closedtrades.entry_time
strategy.closedtrades.exit_time
Retournez les gains et les pertes sur les transactions non liquidées.
strategy.opentrades.profit(trade_num)
Retour sur les bénéfices de la dernière transaction
Exemples
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")
Calculer les bénéfices de toutes les transactions qui n'ont pas été liquidées
Exemples
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")
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.À bientôt
strategy.closedtrades.profit
strategy.openprofit
strategy.netprofit
strategy.grossprofit
Retourne la direction des transactions et le nombre de contrats dans une transaction qui n'est pas levée. Si cette valeur est supérieure à 0, la position sur le marché est à plusieurs têtes. Si cette valeur est inférieure à 0, la position sur le marché est à vide.
strategy.opentrades.size(trade_num)
Exemples
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")
Calculer le pourcentage de bénéfices moyens sur les transactions non liquidées
Exemples
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)
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui n'est pas en liquidation.À bientôt
strategy.closedtrades.size
strategy.position_size
strategy.opentrades
strategy.closedtrades
Retourne le bar_index de la transaction qui a déjà été négociée.
strategy.closedtrades.entry_bar_index(trade_num)
Exemples
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())
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
strategy.closedtrades.exit_bar_index
strategy.opentrades.entry_bar_index
Le prix de sortie est retourné au prix de sortie d'une transaction qui a été liquidée.
strategy.closedtrades.exit_price(trade_num)
Exemples
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")
Calculer le pourcentage de bénéfices moyens sur toutes les transactions qui ont été liquidées
Exemples
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)
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
strategy.closedtrades.entry_price
Retourne le bar_index qui a été retiré de la transaction.
strategy.closedtrades.exit_bar_index(trade_num)
Exemples
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")
Calcule le nombre moyen de lignes K par transaction.
Exemples
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())
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
bar_index
Retourne l'id de l'entrée pour une transaction qui a été liquidée.
strategy.closedtrades.entry_id(trade_num)
Exemples
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))
Retourne la valeurRetourne l'id de l'entrée pour une transaction qui a été liquidée.
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.Nom de l'auteurSi trade_num n'est pas dans la plage, la fonction renvoie na:0 à strategy.closedtrades−1.
À bientôt
strategy.closedtrades.entry_bar_index
strategy.closedtrades.entry_time
Le prix d'entrée est retourné au prix d'entrée des transactions qui ont été liquidées.
strategy.closedtrades.entry_price(trade_num)
Exemples
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")
Calculer le pourcentage de bénéfices moyens sur toutes les transactions qui ont été liquidées
Exemples
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)
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
strategy.closedtrades.exit_price
strategy.closedtrades.size
strategy.closedtrades
Retournez à l'heure de l'entrée de la transaction en liquidation de UNIX.
strategy.closedtrades.entry_time(trade_num)
Exemples
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")
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
strategy.opentrades.entry_time
strategy.closedtrades.exit_time
time
Retournez les gains et les pertes des transactions qui ont été liquidées.
strategy.closedtrades.profit(trade_num)
Exemples
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")
Paramètres
trade_num
(series int) Numéro de transaction de la transaction qui a été liquidée. La première transaction est numérotée avec 0.À bientôt
strategy.opentrades.profit
strategy.closedtrades.commission
Retourne la direction des transactions et le nombre de contrats dans une transaction qui a été liquidée. Si cette valeur est supérieure à 0, la position sur le marché est à plusieurs têtes. Si cette valeur est inférieure à 0, la position sur le marché est à vide.
strategy.closedtrades.size(trade_num)
Exemples
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")
Calculer le pourcentage de profit moyen sur les transactions en liquide
Exemples
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
- Je suis désolé.Comment faire fonctionner plusieurs transactions en même temps?
Des nuages légersPourriez-vous m'expliquer si pine peut effectuer plusieurs transactions, comme JS?
Je vous en prie.Merci pour les détails.
l'artisteBonjour! Comment ce script pine utilise-t-il le disque de simulation d'okex sur la plateforme?
l'artisteC'est comme si les stratégies de tradingview étaient directement copiées sur la plateforme de l'inventeur pour être utilisées!
L'inventeur de la quantification - un petit rêveLe langage PINE n'utilise que des stratégies mono-variées, les stratégies multivariées sont préférables ou sont conçues en python, javascript, c++.
L'inventeur de la quantification - un petit rêveOh, oui, OKX est un peu spécial, leur environnement d'analogie et leur environnement de disque réel ont la même adresse, mais ils font une différence ailleurs.
Des nuages légersJe ne peux pas utiliser l'analogue okx.
L'inventeur de la quantification - un petit rêveCe problème d'architecture multiforme n'est pas résolu, car chaque échange dispose d'une interface différente et de limites de fréquence différentes, ce qui pose de nombreux problèmes.
L'inventeur de la quantification - un petit rêveBien, merci à Cloud pour les suggestions, et partagez-les ici.
Des nuages légersIl est préférable d'utiliser le JS pour une meilleure adaptation aux différents modes de transactions.
Les chasseurs de tendanceLe prix d'achat est le même pour chaque variété.
L'inventeur de la quantification - un petit rêveJe suis désolée.
Des nuages légersBien, merci beaucoup.
L'inventeur de la quantification - un petit rêveBonjour, la stratégie linguistique PINE ne fonctionne que pour une seule variété pour l'instant.
L'inventeur de la quantification - un petit rêveMerci pour votre soutien. La documentation continuera d'être améliorée.
L'inventeur de la quantification - un petit rêveJe ne sais pas si c'est vrai.
L'inventeur de la quantification - un petit rêveLa bibliothèque de modèles PINE, dont les paramètres permettent de définir l'adresse de base de l'échange de commutation.