Bonjour,
pour compléter le post ci-dessus : si je lance indépendamment en 5mn ou en 15mn le 5 et le 15mn fonctionne
c’est le multiframe qui ne fonctionne pas.
cdt
Arnaud
AU secours…
je n’y arrive vraiment pas , indépendamment tout marche et dès que je met les 3 timeframes zéro prises et au niveau du signal que du 1 mn !!!
qu’est ce que j’ai mal fait?
merci
Arnaud
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
Timeframe (15mn, updateonclose)
Signal15 = CALL "TrendDecoder_datas"(close)
trendlong15=signal15=1
trendshort15 = signal15=-1
if signal15=1 then //signal haussier
trendlong15 = 1 //tendance haussière
elsif signal15=-1 then//signal baissier
trendShort15 = -1//tendance baissière
endif
Timeframe (5mn, updateonclose)
Signal5 = CALL "TrendDecoder_datas"(close)
trendlong5=signal5=1
trendshort5 = signal5=-1
if signal5=1 then //signal haussier
trendlong5 = 1 //tendance haussière
elsif signal5=-1 then//signal baissier
trendShort5 = -1//tendance baissière
endif
Timeframe (1mn, updateonclose)
Signal1 = CALL "TrendDecoder_datas"(close)
trendlong1=signal1=1
trendshort1 = signal1=-1
if signal1=1 then //signal haussier
trendlong1 = 1 //tendance haussière
elsif signal1=-1 then//signal baissier
trendShort1 = -1//tendance baissière
endif
Timeframe (default)
IF trendlong1 and trendlong5 and trendlong15 THEN
BUY 1 SHARES AT MARKET
ENDIF
if longonmarket and trendShort5 then
sell at market
endif
// Conditions pour ouvrir une position en vente à découvert
IF trendshort1 and trendshort5 and trendshort15 THEN
SELLSHORT 1 SHARES AT MARKET
ENDIF
if shortonmarket and trendLong5 then
exitshort at market
endif
graph trendShort1 COLOURED(0,0,255) AS "short1mn"
graph trendLong1 COLOURED(0,255,255) AS "Long1mn"
graph trendShort5 COLOURED(0,0,255) AS "short5mn"
graph trendLong5 COLOURED(0,255,255) AS "Long5mn"
graph trendShort15 COLOURED(0,0,255) AS "short15mn"
graph trendLong15 COLOURED(0,255,255) AS "Long15mn"
Hello Arnaud,
Désolé de ce retour tardif et merci à @Nicolas pour l’aide ;
Sur quel Timeframe lances-tu l’algo du coup si tu as un timeframe en 1mn et un autre en « default » ?
Pour les debugs tu peux toujours isoler les longs puis les shorts pour voir si cela marche de façon indépendante ; qu’est ce que cela donne ?
Quid d’essayer sur 2 TF ?
Chris
j’ai tout essayé que des longs puis que des shorts puis que 2 TF
puis je les lances tous sur du 1mn (avec fenêtre 1, 5 et 15mn ouvertes et assez d’unité)
j’ai testé avec un preloaded bar etc…
il fonctionne uniquement indépendamment mais pas en timeframe
c’est le seul bug de toutes mes autres constructions et indicateurs…
Ah et défaut j’ai testé aussi…1 mn était le « par défaut » puisque l’excellent « trade manager » de meta signals pro y est associé dans le code global
Et Créer un indicateur de l’indicateur et en faire un call à la place ?
pour voir…ça alourdi mais si ça fonctionne
Toujours pas…
Y a t’il moyen de lui dire que si le signal s’est déclenché qu’il le mémorise? (Le signal = + 1) ne peut pas se déclencher en même temps sur les 3 UT…
Donc qu’il mémorise le dernier signal…
MERCI !
Arnaud
Bonjour à tous !
c’est bizarre quoique je fasse il ne me GRAPH que le 1mn!
et si je créé indépendamment chaque unité tout est ok
je suis réellement bloqué !
dois je remonter mon souci à Prorealtime ?
merci
Arnaud
PS : je n’ai pas testé sous PRT12
En utilisant ces lignes en GRAPH, tu pourras identifier les signaux renvoyés par cet indicateur datas:
graph signal15 coloured("red")
graph signal5 coloured("pink")
graph signal1 coloured("yellow")
Je pense que tu t’emmèles les pinceaux dans les définitions des tendances, que tu déclares 2 fois ? Bref, j’ai corrigé ton code et ça devrait fonctionner je pense:
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
//defparam preloadbars=15000
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 080000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 215900
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
noEntryBeforeTime = 080000
timeEnterBefore = time >= noEntryBeforeTime
// Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
noEntryAfterTime = 220000
timeEnterAfter = time < noEntryAfterTime
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
contractsize = 1
Timeframe (15mn, updateonclose)
Signal15 = CALL "TrendDecoder_datas"(close)
if signal15=1 then //signal haussier
trend15 = 1 //tendance haussière
elsif signal15=-1 then//signal baissier
trend15 = -1//tendance baissière
endif
Timeframe (5mn, updateonclose)
Signal5 = CALL "TrendDecoder_datas"(close)
if signal5=1 then //signal haussier
trend5 = 1 //tendance haussière
elsif signal5=-1 then//signal baissier
trend5 = -1//tendance baissière
endif
Timeframe (1mn, updateonclose)
Signal1 = CALL "TrendDecoder_datas"(close)
if signal1=1 then //signal haussier
trend1 = 1 //tendance haussière
elsif signal1=-1 then//signal baissier
trend1 = -1//tendance baissière
endif
OrderTypelong = not longonmarket and Trend1>0 and Trend5>0 and Trend15>0 and timeEnterAfter AND not daysForbiddenEntry
OrderTypeshort = not shortonmarket AND Trend1<0 and Trend5<0 and Trend15<0 and timeEnterAfter and not daysForbiddenEntry
if longonmarket and trend5=-1 then
sell at market
endif
if shortonmarket and trend5=1 then
exitshort at market
endif
if OrderTypelong then //market BUY
buy contractsize contract at market
endif
if OrderTypeshort then //market SELLSHORT
sellshort contractsize contract at market
endif
/*
graph signal15 coloured("red")
graph signal5 coloured("pink")
graph signal1 coloured("yellow")*/
graph trend1 coloured("red")
graph trend5 coloured("pink")
graph trend15 coloured("yellow")
Nicolas merci je regarde ce soir
mais le code que tu as écrit je l’ai déjà testé et il n’y a que le 1mn qui fait signal
et dire > ou < le problème est que « signal » a +1 et -1 mais également +2 et -2 ainsi que +3 et -3
je remplacerait < ou > par = 1 ou =-1 non?
merci pour ton aide !
arnaud
Bonsoir Nicolas,
comme dit plus haut j’avais ré écrit le code tel que tu l’as posté (l’image multiframe error3 est celle de ton code et celle multiframe error4 est celle avec uniquement le 1 et 5mn et +1 et -1)
Résultat :
le 1 mn fonctionne parfaitement
le 5mn fonctionne UNE et UNE seule fois passant de -1 à +1 et reste bloqué à +1 tandis qu’il y a plein de signaux -1 et pour couronner le tout les sorties du 5mn se font sur le signal 1mn car le 5mn est toujours à 1 (rappel de la condition sortir sur le 5mn)
le 15mn est continuellement à zéro donc aucune prise (multiframe error4 est celle avec uniquement le 1 et 5mn et +1 et -1)
insolvable pour l’instant, c’est le seul et l’unique indicateur qui me fait çà…
cdt
Arnaud
je l’ai refait sur 100 000 unités et au final maintenant c’est le 1mn et une seule et unique fois le 15mn qui se déclenche et le 5mn ne fonctionne pas.
C’est fou sans rien changer…
j’ai quitté PRT et je l’ai relancé…résultat pour le même backtest que plus haut…sauf sur 10000 unités seulement
j’y ai repassé la soirée, il y a un réel problème de multiframe…
pas seulement sur cet indicateur à partir du moment ou c’est +1 et -1 etc…çà ne fonctionne pas en multiframe
par contre ceux qui graphiquement ont une référence dans le code on peut dire
signal>signal[1] et çà fonctionne…où bien trend>close
sur trenddecoder non…vraiment dommage