Bonjour à tous,
Mon objectif est de créer dans un premier temps un code permettant la détection de marteau vert “sur le marché des actions” avec la méthode de distance euclidienne puis réaliser une détection avec le screener . ma première étape a été de créer un data set de 3 Marteaux vert (académique , bien joli) que j’ai pris sur une action (Bouygues). Mon indicateur fonctionne très bien sur l’action Bouygues mais en revanche et la est le problème il est inopérant sur les autres action ou passe au dessus de mon indicateur de détection “marteau vert”. Ma déduction est que la comparaison des marteaux du data set (de l’action Bouygues) à la bougie courante d’une autre action est trop importante ce qui se caractérise par une distance trop grande. EX prix Bouygues 30 Euros et prix LVMH 700 Euros. Existe il une solution ce problème ? faut il créer un data set sur toutes les actions ? 🙁
merci à vous
// indicateur reconnaissance marteau vert methode Euclidienne
signal=0
detection=0
NumberOfItem=3
Majority= ROUND(NumberOfItem /3)
///DATA SET X2 //................................
// Marteau 1
low1=27.14
open1=27.48 -low1
close1=27.61 -low1
hight1=27.61 -low1
low1=0 // remise à zero du low
// Marteau 2
low2=31.17
open2=31.54 -low2
close2=31.63 -low2
hight2=31.65 -low2
low2=0 // remise à zero du low
// Marteau 3
low3=27.47
open3=27.93 -low3
close3=28.09 -low3
hight3=28.08 -low3
low3=0 // remise à zero du low
//.............................................
//COMPARAISON BOUGIE DU JOUR
openjj=open-Low
hightjj=high - Low
closejj=close-Low
lowjj=low-Low
//............................................
//........... application formaule distance Euclidiene ................
//* Distance Euclidiene d(X1,X2) *//
// distance Marteau 1
Distance1= SQRT(SQUARE(open1-openjj)+SQUARE(close1-closejj)+SQUARE(hight1 - hightjj ) )
// distance Marteau 2
Distance2= SQRT(SQUARE(open2 -openjj)+SQUARE(close2-closejj)+SQUARE(hight2 - hightjj ) )
// distance Marteau 3
Distance3= SQRT(SQUARE(open3 -openjj)+SQUARE(close3-closejj)+SQUARE(hight3 - hightjj ) )
//......................................................................................
// Seuil de detection
Sdetection=Seuil
//Vote Marteau 1
If Distance1 <=Sdetection THEN
detection=detection+1
ENDIF
//Vote Marteau 2
If Distance2 <=Sdetection THEN
detection=detection+1
ENDIF
//Vote Marteau 3
If Distance3 <=Sdetection THEN
detection=detection+1
ENDIF
//.....................................................................................
// vote de majorité
if detection >= majority THEN
signal=1
ENDIF
RETURN signal, Distance1
Si tu utilises des valeurs prix pour les calculs de la détection d’une figure de chandelier, il est fort probable que la détection soit inopérante d’une action à l’autre. Je te conseille de réévaluer ton code pour créer une détection de distance “dynamique” et ainsi compatible pour tous les instruments.
Bonjour Nicolas,
Humm il me semblait… Pourrais tu me donner le principe d’une détection “dynamique “? faut il utiliser une fonction ? des pourcentages entre le corps et les ombres ?..
Bonjour
Voici un exemple de détection de bougies marteau et marteau inversé.
Vous pouvez jouer sur les proportions en fonction de ce que vous recherchez.
if close > open then
wickinf = open - low
wicksup = high - close
body = close - open
else
wickinf = close - low
wicksup = high - open
body = open - close
endif
hammer = wickinf >= (2/3)*range and body >= (1/10)*range
hammerinv = wicksup >= (2/3)*range AND body >= (1/10)*range
RETURN hammer AS "hammer", hammerinv AS "hammerinv"
Beaucoup plus simple et efficace.
Merci pour votre retour Iván