Bonjour à toute la communauté PRC, et merci pour tous les partages d’excellentes qualités disponibles sur ce site.
Mes connaissances en codage sur PRT sont assez limitées.
Je suis donc à la recherche d’aide pour convertir une stratégie développée sur Ninja Trader (codée en C#), afin de la rendre utilisable sur PRT.
Cette stratégie s’appuie sur un indicateur de volume breakout (dont le code en C# est disponible dans le premier fichier joint).
La stratégie en elle-même se trouve dans le deuxième fichier attaché.
Je suis disponible pour fournir de plus ample explication sur la stratégie.
Par avance, merci beaucoup à ceux d’entre vous qui voudront bien m’apporter leur aide.
J’ai bien compris le code de l’indicateur, mais j’aimerai avoir une image de comment il est représenté sur le graphique ? Il n’y a qu’un histogramme 0/1/-1 sous celui-ci ?
Bonjour Nicolas.
En effet, sous le graphique apparait un histogramme en 0/1/-1.
Je joins ci-dessous une image des paramètres, et une image de l’algorythme en cours d’utilisation.
En espérant que cela répondra à votre question.
ok bon, voici l’indicateur “AresPriceBreakOut”
// "Identify stocks which breakout of rectangular base with volume"
// AresPriceBreakOut
volumeMultiplier = 1.500 // Default setting for VolumeMultiplier
upwardBreakout = 1 // Default setting for Upward Price Breakout
if upwardBreakout then //up breakout
if barindex>45 then
upbreak = ((High[0] > highest[9](high)[1]) and (Low[0] > lowest[9](low)[1]) and (Close[0] > highest[50](high)[1]) and ((lowest[20](low)[1] < (lowest[40](low)[1] * 1.05)) or (lowest[20](low)[1] <= (lowest[40](low)[1] + 1*pointsize))) and((highest[20](high)[1] > (highest[40](high)[1] * 0.95)) or (highest[20](high)[1] >= (highest[40](high)[1] - 1*pointsize))) and (Volume[0] > average[40,1](volume)[1] * volumeMultiplier))
endif
else //down breakout
if barindex>45 then
dnbreak = ((High[0] < highest[9](High)[1]) and (Low[0] < lowest[9](low)[1]) and (Close[0] < lowest[50](low)[1]) and ((lowest[20](low)[1] > (lowest[40](low)[1] * 0.95)) or (lowest[20](low)[1] >= (lowest[40](low)[1] - 1*pointsize))) and ((highest[20](high)[1] < (highest[40](high)[1] * 1.05)) or (highest[20](high)[1] <= (highest[40](high)[1] + 1*pointsize))) and (Volume[0] > average[40,1](volume)[1] * volumeMultiplier))
endif
endif
return upbreak, -dnbreak
Merci beaucoup, vous êtes très efficace !
Je ne m’attendais pas à une réponse aussi rapide.
Encore une fois, merci beaucoup pour l’ensemble des partages disponibles sur le site, et pour l’excellence de vos contributions.
Ci-joint la stratégie, il faut l’importer pour récupérer correctement l’indicateur modifié qui va avec. A noter la martingale si la dernière position est perdante.
Merci beaucoup Nicolas.
J’ai testé l’indicateur sur le NQ et le DAX, mais il ne me renvoie que des valeurs zéro (3 captures d’écrans jointes à ce message).
Je vais tester la stratégie et vous faire un retour.
J’ai revérifié le code et en effet, il y a très peu de signaux.
EDIT: non finalement il y a bien une erreur sur l’EMA du Volume, je vais corriger.
L’indicateur qui tourne sur NT8 a plutôt tendance à envoyer beaucoup de signaux (1 par minute en moyenne sur un graphique en renko 8 ticks).
Ci-joint la stratégie + indicateur corrigé. J’ai corrigé le code de l’indicateur dans mon précédent post également.
En effet, l’indicateur renvoies maintenant un nombres de signal plus cohérent.
En revanche, il ne renvoie que des signaux upbreak, et aucun signal dnbreak, ce qui me semble assez étrange.
Comme dans le code d’origine, il faut mettre le paramètre “upwardBreakout” à 0 pour avoir uniquement les breakout baissiers, sinon par défaut ils ne sont qu’haussiers.
Bonjour,
Le problème est quand est ce qu’il achète et quand est ce qu’il vend ?
A l’ouverture ou en séance lorsque le signal apparait ou alors en clôture de la bougie signalée comme moment d’achat ou de vente ?
Si quelqu’un à une idée ?
Merci