Bonjour j’ai un souci de backtest avec ce super indicateur…
le problème est que j’essaye de le backtester dans les conditions de 3 UT et le signal +1 correspond à la flèche qui démarre le trend haussier puis la ligne de trend haussier passe en signal 0…et idem en trend baissier flèche baissière signal=-1 puis le trend baissier est signal =0
donc pour backtester en 3 UT il faut réussir à dire dans l’ut principale +1 ça c’est facile mais l’ut inférieure et l’ut supérieure ne sont pas à +1 mais soit à 0 (trend haussier ou baissier) soit en box 2 ou -2 etc(box haussière ou baissière)
l’idée serait de pouvoir dire ut 5mn le signal= 1 et qu’il compte sur l’ut 1 heure (ut supérieure) s’il y a eu un signal 1 Idem pour l’ut 15mn
vous allez me dire c’est facile prend le 5mn signal 1
et en time frame 15mn dit close [3] pour le 1 heure close [12] mais non ça ne peut pas marcher le signal 1 n’est pas forcément là à ce même instant
donc j’aurais besoin d’une boucle qui cherche le signal 1 en arrière tout en éliminant le signal -1 (demarrage de trend baissier) et le signal -2 (box de retournement) et -3 ligne de tendance baissière
que ça ne s’active que si dans le « passé « des ut supérieures c’était 1 ou 2 ou 3 et que ça ne valide pas s’il y avait un -1 -2 ou -3
Désolé pour ceux qui n’ont pas ce super indicateur ça peut paraître compliqué mais c’est très simple…
le problème est exactement le même pour d’autres indicateurs
De même je ne suis pas sûr que le screener posté plus haut fonctionne le signal ne peut pas être à 3 dans 3 ut en même temps donc il en ressort zéro trade…zéro valeur a trader
lorsque le signal est 3 c’est une seule fois pas pendant toute la durée ou la ligne de support est haussière donc impossible que le signal 3 apparaisse en même temps sur les 3 UT
je posterai un graphique avec les signaux à mon retour de vacances
D’avance merci
Arnaud
ps : merci kris pour le lien
J’ai scindé la question dans un nouveau sujet, puisque non lié à la précédente question sur le screener de cet indicateur.
Je pense en effet qu’une image pourrait aider à la compréhension de la question 🙂
bonsoir,
voilà l’image
le signal 1 par exemple ne peut pas être 1 sur les autres UT
hors c’est tout l’intérêt d’un système quel qu’il soit de travailler sur 3 UT pour confirmer la tendance et rester ou en sortir rapidement
il y a un moyen j’en suis sûr.
Merci pour votre aide
cdt
Arnaud
pour rappel :
la question est valable pour la majorité des indicateurs ProrealMarket ou autres…
dès que l’on veut programmer sur 3 UT
Étant donné que l’on ne peut faire appel à la ligne de trend il n’est possible que d’appeler le signal
hors le signal =1 par exemple ne peut pas se déclencher en même temps sur 3ut ce qui est logique
donc comment réussir à y faire appel ou faire vérifier que le signal =1 c’est déclenché auparavant…
//signalType details:
// 1 = new bullish trend detected (from red to blue cloud)
// -1 = new bearish trend detected (from blue to red cloud)
// 2 = grey box during bullish trend
// -2 = grey box during bearish trend
// 3 = red trend line breakout
// -3 = blue trend line breakout
et bien par exemple on mémorise son état lors de l’événement “signal” :
if signal = 1 then //signal haussier
trend = 1 //tendance haussière
elsif signal = -1 then //signal baissier
trend = -1 //tendance baissière
endif
ainsi avec la variable “trend” tu peux savoir dans quel type de tendance tu te trouves actuellement.
Merci Nicolas !
et je créer cette variable pour chaque UT
je tente ce soir
Arnaud
@Pensera merci de ta question et désolé du délai et du coup @Nicolas merci de ta réponse ;
et je créer cette variable pour chaque UT
oui mais attention, il faudra bien lui donner des noms différents pour chaque UT; c’est un très bon principe en matière de MTF pour un même signal;-)
timeframe(5 minutes,updateonclose)
Trend1 = CALL “TrendDecoder_datas”(close)
endif
timeframe(15 minutes,updateonclose)
Trend2 = CALL “TrendDecoder_datas”(close)
endif
…
Bien à toi,
Chris
Oui bien sûr Chris c’est ce que j’ai fait…
Et ça fonctionne merci,
il n’y aurait pas un Manuel un peu complet de programmation PRT celui sur leur site est assez light je trouve et surtout il date…
Arnaud
Bonjour à tous,
il ne me prend que des long ! une idée?
Je l’avais bien codé et au final en voulant tout réécrire plus proprement je n’y arrive plus…
Je n’ai collé qu’une partie du code…car je revérifie à part chaque indicateur appelé ou créée pour vraiment nettoyer mon programme et tout revérifier.
Mais celui-ci me pose problème…
D’avance merci pour votre aide…
j’y passe mes soirées ou mes nuits…donc je n’ai peut-être plus les yeux en face des trous…
J’ai des quantités de variables en dehors de çà…
Bon week-end
Arnaud
// 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
//TRENDDECODER
//signalType TRENDDECODER details:
// 1 = new bullish trend detected (from red to blue cloud)
// -1 = new bearish trend detected (from blue to red cloud)
// 2 = grey box during bullish trend
// -2 = grey box during bearish trend
// 3 = red trend line breakout
// -3 = blue trend line breakout
**********************************************************************************************************************
timeframe (15mn, updateonclose)
Long15 = CALL "TrendDecoder_datas"(close)
TrendlongMn15 = (Long15 = 1)
TrendshortMn15 = (Long15 = -1)
BoxlongMn15 = (Long15 = 2)
BoxshortMn15 = (Long15 = -2)
BreackoutlongMn15 = (Long15 = 3)
BreackoutshortMn15 = (Long15 = -3)
if Long15 = 1 then //signal haussier
trendLong15 = 1 //tendance haussière
elsif Long15 =-1 then //signal baissier
trendLong15 = 0 //tendance baissière
endif
Short15 = CALL "TrendDecoder_datas"(close)
TrendlongMn015 = (Short15 = 1)
TrendshortMn015 = (Short15 = -1)
BoxlongMn015 = (Short15 = 2)
BoxshortMn015 = (Short15 = -2)
BreackoutlongMn015 = (Short15 = 3)
BreackoutshortMn015 = (Short15 = -3)
if Short15 = -1 then //signal baissier
TrendShort15 = 1 //tendance baissière
elsif Short15 =1 then //signal haussier
TrendShort15 = 0 //tendance haussière
endif
**********************************************************************************************************************
Timeframe (5mn, updateonclose)
Long5 = CALL "TrendDecoder_datas"(close)
Trendlong5Mn = (Long5 = 1)
Trendshort5Mn = (Long5 = -1)
Boxlong5Mn = (Long5 = 2)
Boxshort5Mn = (Long5 = -2)
Breackoutlong5Mn = (Long5 = 3)
Breackoutshort5Mn = (Long5 = -3)
if Long5 = 1 then //signal haussier
trendLong5 = 1 //tendance haussière
elsif Long5 = -1 then //signal baissier
trendLong5 = 0 //tendance baissière
endif
Short5 = CALL "TrendDecoder_datas"(close)
TrendlongMn05 = (Short5 = 1)
TrendshortMn05 = (Short5 = -1)
BoxlongMn05 = (Short5 = 2)
BoxshortMn05 = (Short5 = -2)
BreackoutlongMn05 = (Short5 = 3)
BreackoutshortMn05 = (Short5 = -3)
if Short5 = -1 then //signal baissier
trendShort5 = 1 //tendance baissière
elsif Short5 = 1 then //signal haussier
trendShort5 = 0 //tendance haussière
endif
**********************************************************************************************************************
Timeframe (1mn, updateonclose)
Long1 = CALL "TrendDecoder_datas"(close)
TrendlongMn0 = (Long1 = 1)
TrendshortMn0 = (Long1 = -1)
BoxlongMn0 = (Long1 = 2)
BoxshortMn0 = (Long1 = -2)
BreackoutlongMn0 = (Long1 = 3)
BreackoutshortMn0 = (Long1 = -3)
if Long1 = 1 then //signal haussier
trendLong1 = 1 //tendance haussière
elsif Long1 = -1 then //signal baissier
trendLong1 = 0 //tendance baissière
endif
Short1 = CALL "TrendDecoder_datas"(close)
TrendlongMn01 = (Short1 = 1)
TrendshortMn01 = (Short1 = -1)
BoxlongMn01 = (Short1 = 2)
BoxshortMn01 = (Short1 = -2)
BreackoutlongMn01 = (Short1 = 3)
BreackoutshortMn01 = (Short1 = -3)
if Short1 = -1 then //signal baissier
trendShort01 = 1 //tendance baissière
elsif Short1 = 1 then //signal haussier
trendShort01 = 0 //tendance haussière
endif
**********************************************************************************************************************
OrderTypelong = not longonmarket and TrendLong1=1 and trendLong5=1 and trendLong15=1 and timeEnterAfter AND not daysForbiddenEntry
OrderTypeshort = not shortonmarket AND trendShort01=1 AND trendShort5=1 and trendShort15=1 and timeEnterAfter and not daysForbiddenEntry
**********************************************************************************************************************
if longonmarket and trendShort5=1 then
sell at market
endif
if shortonmarket and trendLong5=1 then
exitshort at market
endif
les conditions achat/vente
if OrderTypelong then //market BUY
buy contractsize contract at market
endif
if OrderTypeshort then //market SELLSHORT
sellshort contractsize contract at market
endif
Bonjour,
Toujours pas, soit il ne me prend que des longs soit en triturant que des short…
décidément je suis nul…j’ai tout oublié en programmation depuis 10 ans…
y’a juste mon trading manuel qui est encore correct.
à bientôt et d’avance merci à celui ou celle qui réussira à éclairer ma lanterne
Arnaud
Au final si je ne met que les conditions du 1 mn çà me prend bien des longs et des shorts
je patauge…
Pour débugger ton code, il faut faire un GRAPH, ici pense à GRAPHer toutes les conditions qui sont contenues dans ta variable “OrderTypeshort” pour voir laquelle bloque les ordres short.
Bonjour Nicolas,
merci pour cette bonne idée !
je testerais ce soir et reviens vers vous !
bonne journée,
arnaud
AU FINAL…j’ai ré écrit d’une autre façon et c’est toujours le même soucis
le 1 mn fonctionne, le 5mn jamais, et le 15mn 1 fois en long…
ci-dessous le bout du code et le Graphique (GRAPH vert long1mn GRAPH magenta Short1mn GRAPH noir Long15mn se déclenche 1 fois…et bizarrement les autres toujours à 0)
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
OrderTypelong = not longonmarket and TrendLong1 and trendLong5 and trendLong15 and timeEnterAfter AND not daysForbiddenEntry
OrderTypeshort = not shortonmarket AND trendShort1 and trendShort5 and trendShort15 and timeEnterAfter and not daysForbiddenEntry
if longonmarket and trendShort5 then
sell at market
endif
if shortonmarket and trendLong5 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
: