Programmation Easylanguage - Forex Forum

Welcome Guest ( Log In | Register )

 
> Programmation Easylanguage
CDO
post Aug 19 2009, 14:58
Post


Bonjour,

Je débute avec MultiCharts et la programmation en EasyLanguage...
Pas si Easy que ça....
Alors pouvez-vous me communiquer des liens (même en anglais) où je puisse avoir de l'aide ??...
Je n'arrive même pas à faire un indicateur qui m'avertisse et change la couleur de la bougie lorsque le prix casse la bande de bollinger pendant que le macd est positif !... pauvre de moi mataf_dur.gif
Laurent
post Aug 19 2009, 15:13
Post


Bonjour,

tout simplement chez le concepteur du logiciel :

http://forum.tssupport.com/
Ender
post Aug 24 2009, 12:26
Post


inputs:
Price( Close ),
Length( 20 ),
NumDev( 2 ),
FastLength( 12 ),
SlowLength( 26 );

variables:
UpBand(0),
DnBand(0),
var2(0);

UpBand = BollingerBand( Price, Length, NumDev ) ;// bande haute
DnBand = BollingerBand( Price, Length, -NumDev ) ;//bande basse
var2 = MACD( Close, FastLength, SlowLength ) ;// MACD


condition1 = Price crosses over UpBand and var2>0; // croisement à la hausse de Bande Bollinger Haute et MACD positif
condition2 = Price crosses under DnBand and var2<0;// croisement à la baisse de Bande Bollinger basse et MACD negatif

// pour colorer l'ensemble de la barre on détermine le haut et le bas

value1 = high;
value2 = low;

//puis tu utilises plotpaintbar pour faire apparaitre ta barre de signal de la couleur que tu veux

if condition1 then begin
PlotPaintBar (value1, value2, "SignalUp", cyan);
alert;
end;
if condition2 then begin
PlotPaintBar (value1, value2, "SignalDown", magenta);
alert;
end;


Bon, ce n'est peut-être pas ce qu'il y a de plus joli comme code mais ça devrait fonctionner.

@++
CDO
post Aug 24 2009, 13:39
Post


Merci !!!
C'est trop fort... je n'aurais jamais réussi tout seul...
C'est pas si Easy que ça ce language...
Je ne sais pas comment faire pour apprendre à programmer des trucs simples comme cela..
Mis à part le Getting Started de TradeStation, que pouvez-vous me conseiller comme bouquin pour apprendre ??

Et comment faire pour ajouter la condition : macd signal line >0 ?
Car je voudrais que le macd histogram soit positif and le macd signal positif aussi...
Mais je crains de devoir recalculer le signal car la fonction macd ne génère que le différentiel ??

This post has been edited by CDO: Aug 24 2009, 13:57
Ender
post Aug 25 2009, 15:54
Post


Pour apprendre, il suffit que tu regardes comment sont construit les indicateurs et peu a peu tu comprendras la structure de l'easylanguage.
Je crois que le webmestre d'aaztrading avait fait la traduction du bouquin en francais. Cela devrait t'aider pas mal.

Sinon pour l'indic:

//Il faut rajouter les autres variables du MACD et l'input de sa EMA

inputs: MACDLength (9) ;

vars:
var1(0),
var0(0);

//puis tu les definis

var0 = XAverage( var0, MACDLength ) ;//la moyenne mobile exponentielle
var1 = var2-var0;//l'histogramme

//tu modifies tes 2 conditions en ajoutant ton differentiel

condition1 = Price crosses over UpBand and var2>0 and var1>0; // croisement a la hausse de Bande Bollinger Haute avec histo et MACD positifs
condition2 = Price crosses under DnBand and var2<0 and var1<0;// croisement a la baisse de Bande Bollinger basse avec histo et MACD negatifs


CDO
post Aug 29 2009, 10:15
Post


Merci Ender ! ça marche impeccable !
Il ne me reste plus qu'à tester cet indicateur dans le Real-Time Market Scanner et paramétrer des alarmes sur cet indicateur...

J'aimerais faire afficher sur mon graphe un libellé : "Target = x"
où x = MovingAvg(High of Daily - Low of Daily, 7)*0,15

J'ai bien vu des instructions qui permettent d'afficher au niveau des barres mais moi je souhaiterais que ça s'affiche en haut au niveau des informations du graphe...

Quelle est l'instruction qui permet de faire cela ??


Merci !!!


ps: je vois que tu es dans la marne... qui est ma région d'origine smile.gif
Ender
post Aug 30 2009, 15:04
Post


Citation (CDO @ Aug 29 2009, 11:15) *
J'ai bien vu des instructions qui permettent d'afficher au niveau des barres mais moi je souhaiterais que ?a s'affiche en haut au niveau des informations du graphe...

Quelle est l'instruction qui permet de faire cela ??

A ma connaissance, je ne pense pas que cela soit possible.

Tu peux en revanche placer le texte ou tu veux avec le bout de code suivant:

if LastBarOnChart then begin

var0 = Text_New( Date, Time, close, NumToStr(tonindic,5)); {c'est ce qui affiche le texte, "numtostr" permettant d'afficher la valeur de "tonindic" et le chiffre qui suit indique le nombre de decimales que tu veux }

value1 = Text_SetColor(var0, color); //c'est ce qui donne la couleur de ton texte avec "color(yellow)" par exemple en inputs

Value1 = Text_Float( var0, TextBarsBack, TextPricePercent ) ; //localisation du texte

end ;

Bon courage,
@++
CDO
post Aug 30 2009, 21:31
Post


Encore MERCI !

Tout est presque OK à l'exception de la position du texte...
En effet, il semblerait que l'instruction Text_Float ne soit pas disponible sur MultiCharts....
Cependant, il y a une instruction Text_SetLocation qui me semble pertinente mais que je n'arrive pas à paramétrer..

Comme j'ai 2 valeurs à faire afficher, actuellement les 2 se superposent... et je dois trouver comment modifier les positions...

Mais tout le reste fonctionne cool.gif

Donc, un grand merci pour ton aide qui m'a épargné beaucoup de temps et de sueur !

Je vais maintenant potasser les manuels utilisateurs pour passer à l'étape suivante : tracer un segment de droite en fonction de la valeur des indicateurs et y afficher la valeur. mataf_siffle.gif

@+,
Ender
post Aug 31 2009, 7:09
Post


Value1 = Text_Float( var0, TextBarsBack, TextPricePercent ) ; //localisation du texte

Cela fonctionne très bien également sur multicharts.
Il faut dans les inputs que tu indiques les ordonnées et l'abscisse de ton texte.

Inputs: textbarsback(5), textpricepercent (100); {par exemple}

@++

CDO
post Aug 31 2009, 9:07
Post


Avec les inputs ça compile 'successfully' mais pour chacun des symboles du Real-Time Market Scanner, il affiche une erreur pour cet indicateur...
Message d'erreur : TextID does not exist.
Et sinon, les affichages sont redondants.

@+,

[attachment=2937:MultiCharts_Doc.jpg]

This post has been edited by CDO: Aug 31 2009, 10:02
Attached thumbnail(s)
Attached Image
 
Ender
post Aug 31 2009, 11:57
Post


J'ai regardé le code que je t'ai filé, essaies celui-ci, il permet un affichage directement sur ton graph avec réactualisation à chaque barre. Ce sera déjà plus lisible.
(Si tu veux afficher plusieurs indicateurs, n'oublies pas de rajouter une variable text et de modifier les paramètre de localisation afin que cela ne s'affiche pas par dessus l'autre affichage).

________________________________________________________________________________
_________________

inputs:
Decimales (5), //nbre de decimales
TextBarsBack( 5 ), //localisation sur abscisse
TextPricePercent( 100 ), //localisation sur ordonnee
color (yellow); //la couleur de ton choix


variables:
txt(-1),
tonindic( 0 );

tonindic = ce que tu veux; //calcul de l'indic CDO
//plot1(tonindic,"CDO");

//variable texte
if BarNumber = 1 then
txt = Text_New( Date, Time, close, NumToStr(tonindic,decimales));

//reset a chaque barre
Text_Float( txt, TextBarsBack, TextPricePercent ) ;
text_SetString(txt,NumToStr(tonindic,decimales));
text_SetColor(txt,color);
________________________________________________________________________________
______________


Concernant TextID, je ne sais pas. Je n'ai jamais utilisé le scanner.
Pour contourner le problème, réecris simplement ton indicateur mais sans les fonctions text_.
Ce devrait être OK.

voilà, voilà. mataf_wink.gif

This post has been edited by Ender: Aug 31 2009, 12:04
CDO
post Aug 31 2009, 13:25
Post


Merci pour cette réponse !

Le Real-Time Market Scanner génère encore un message d'erreur pour chaque symbole.
Il n'a pas l'air d'apprécier le Text_Float que j'ai donc placé en commentaire...
Voici ci-dessous le code :
l'idée est de faire afficher sur le graphe, Profit Target = x et Stop Loss = y
Bon, je pourrais toujours recréer un 2e indicateur uniquement pour cela... et le placer dans un subchart...
Pour l'instant, les alarmes fonctionnent mais il me manque l'affichage des 2 infos sur graphe...
Je ne voudrais pas t'embêter avec mes problèmes, alors surtout, si tu n'as pas le temps, n'hésite pas à me le dire mataf_wink.gif
Je suis déjà super content de l'aide que tu m'as apportée !!

inputs:
Price( Close ),
Length( 12 ),
NumDev( 2 ),
FastLength( 12 ),
SlowLength( 26 ),
MACDLength(9),
TextBarsBack(5),
TextPricePercent(100),
Color1(yellow),
Color2(red);

variables:
UpBand(0),
DnBand(0),
var0(0),
var1(0),
var2(0),
ProfitTarget(0),
StopLoss(0),
txt(-1);

UpBand = BollingerBand( Price, Length, NumDev ) ;// bande haute
DnBand = BollingerBand( Price, Length, -NumDev ) ;//bande basse
var0 = MACD( Close, FastLength, SlowLength ) ;// MACD
var1 = XAverage( var0, MACDLength ) ;//la moyenne mobile exponentielle
var2 = var0 - var1 ;//l'histogramme

ProfitTarget = Average(DailyHigh - DailyLow,7)*0.15*10000;
StopLoss = Average(DailyHigh - DailyLow,7)*0.10*10000;


condition1 = Price crosses over UpBand and var1>0 and var2>0; // croisement a la hausse de Bande Bollinger Haute avec histo et MACD positifs
condition2 = Price crosses under DnBand and var1<0 and var2<0;// croisement a la baisse de Bande Bollinger basse avec histo et MACD negatifs
condition3 = var1>0 and var2>0;
condition4 = var1<0 and var2<0;

// pour colorer l'ensemble de la barre on d?termine le haut et le bas
value1 = open;
value2 = close;

plot1(ProfitTarget, "Profit Target");
if BarNumber=1 then
txt = text_new(date, Time, Close, NumToStr(ProfitTarget,0));
//Text_Float(txt, TextBarsBack, TextPricePercent);
text_setstring(txt, NumToStr(ProfitTarget,0));
text_setcolor(txt,color1);


//puis tu utilises plotpaintbar pour faire apparaitre ta barre de signal de la couleur que tu veux

if Not condition3 or not condition4 or not condition1 or not condition2 then begin
PlotPaintBar (value1, value2, "Notrend", DarkBlue);
end;
if condition3 then begin
PlotPaintBar (value1, value2, "Uptrend", green);
end;
if condition4 then begin
PlotPaintBar (value1, value2, "Downtrend", red);
end;
if condition1 then begin
PlotPaintBar (value1, value2, "SignalUp", White);
alert;
end;
if condition2 then begin
PlotPaintBar (value1, value2, "SignalDown", White);
alert;
end;
Ender
post Aug 31 2009, 17:29
Post


Ne t'inquiètes pas, les forums sont là pour l'entraide.
En fait, je connais peu la fonction text. C'est donc l'occasion ou jamais d'en apprendre plus!

Alors attention, je ne suis pas un programmeur. Je bidouille. Il existe certainement mieux en matière de code.

Pour en revenir à nos moutons quant à ce que tu veux faire, je ne vois qu'une solution: tu crées 3 indicateurs.
Ce sera moins fourre tout et donc plus clair.

1er indicateur pour le market scanner, le "CDO scan" (je me suis permis de lui donner un petit nom):
_____________________________________________________________
inputs:
length(7),
multipleTarget (0.15),
multipleStopL (0.1);

variables:
var0(0),
ProfitTarget(0),
StopLoss(0);

var0 = DailyHigh - DailyLow;

ProfitTarget = Average(var0,length)*multipleTarget *pricescale;
StopLoss = Average(var0,length)*multipleStopL*pricescale;


plot1(ProfitTarget, "Profit Target");
plot2(Stoploss,"Stop Loss");
_____________________________________________________________

Le même indicateur mais avec l'affichage du stop et de l'objectif sur ton graphique, le "CDO alert" (utilises la fonction hide de l'indicateur dans la page "format" puis "properties")

_____________________________________________________________

inputs:
TextBarsBack(5),
TextPricePercent(100),
target(green),
stopL(red),
multipleTarget (0.15),
multipleStopL (0.1);


variables:
var0(0),
ProfitTarget(0),
StopLoss(0),
txt(-1),
txt2(-1),
txttarget(-1),
txtstop(-1);

var0 = DailyHigh - DailyLow;

ProfitTarget = Average(var0,length)*multipleTarget *pricescale;
StopLoss = Average(var0,length)*multipleStopL*pricescale;

if BarNumber=1 then begin
txt = text_new(date, Time, Close, NumToStr(ProfitTarget,0));
txttarget = text_new(date, Time, Close, "target");
txt2 = text_new(date, Time, Close, NumToStr(StopLoss,0));
txtstop = text_new(date, Time, Close, "Stop");
end;

Text_Float(txt, TextBarsBack, TextPricePercent);
text_setstring(txt, NumToStr(ProfitTarget,0));
text_setcolor(txt,target);
Text_Float(txttarget, TextBarsBack+5 , TextPricePercent);
text_setstring(txttarget,"Target =");
text_setcolor(txttarget,target);
Text_Float(txt2, TextBarsBack, TextPricePercent-5);
text_setstring(txt2, NumToStr(StopLoss,0));
text_setcolor(txt2,StopL);
Text_Float(txtstop, TextBarsBack+5, TextPricePercent-5);
text_setstring(txtstop, "Stop =");
text_setcolor(txtstop,StopL);
_____________________________________________________________

Et enfin le dernier indic, le "CDO Trend":

_____________________________________________________________


inputs:
Price( Close ),
Length( 12 ),
NumDev( 2 ),
FastLength( 12 ),
SlowLength( 26 ),
MACDLength(9);

variables:
UpBand(0),
DnBand(0),
var0(0),
var1(0),
var2(0);

UpBand = BollingerBand( Price, Length, NumDev ) ; // bande haute
DnBand = BollingerBand( Price, Length, -NumDev ) ; //bande basse
var0 = MACD( Close, FastLength, SlowLength ) ; // MACD
var1 = XAverage( var0, MACDLength ) ; //la moyenne mobile exponentielle
var2 = var0 - var1 ; //l'histogramme

condition1 = Price crosses over UpBand and var1>0 and var2>0; // croisement a la hausse de Bande Bollinger Haute avec histo et MACD positifs
condition2 = Price crosses under DnBand and var1<0 and var2<0;// croisement a la baisse de Bande Bollinger basse avec histo et MACD negatifs
condition3 = var1>0 and var2>0;
condition4 = var1<0 and var2<0;

value1 = high;
value2 = low;

PlotPaintBar (value1, value2, "Notrend", DarkBlue);

if condition3 then PlotPaintBar (value1, value2, "Uptrend", green);

if condition4 then PlotPaintBar (value1, value2, "Downtrend", red);

if condition1 then begin
PlotPaintBar (value1, value2, "SignalUp", White);
alert;
end;

if condition2 then begin
PlotPaintBar (value1, value2, "SignalDown", White);
alert;
end;
_____________________________________________________________


Bon courage,

@+
CDO
post Aug 31 2009, 18:57
Post


EXCELLENT !!
ça marche ! mataf_wink.gif
MERCI !!!
Pour un premier exercice, je crois que j'ai vu un peu gros...
Il ne me reste plus qu'à cogiter le code...
@+,
CDO
post Aug 31 2009, 23:11
Post


Bon, un phénomène bizarre est apparu :
alors que le calcul est identique pour les 2 indicateurs, et bien il y a une sorte de désynchronisation incompréhensible... qui fait que les résultats affichés dans le Real-Time Market Scanner peuvent être différents de ceux affichés dans le graphe !
Bizarre....
D'autre part, il me semble que ces chiffres changent au cours du temps alors que le calcul ne devrait les faire bouger que lors du changement de jour... puisque c'est une moyenne des derniers plus hauts/bas journaliers..??..

Enfin, je recherche des sites où je puisse trouver des indicateurs en libre accès, un peu comme ce qui existe pour metatrader. Car je manque de grands classiques tel qu'un indicateur Pivot,S1,S2,R1,R2 par exemple...

Merci !
Ender
post Sep 1 2009, 7:55
Post


dailyhigh = +haut du jour
dailylow = +bas du jour

Le plus haut ou le plus bas du jour se modifient au fur et à mesure de la journée. C'est normal, tu es en temps réel.
Par exemple, si tu es dans un marché en tendance haussière ton indicateur va calculer le même bas avec un plus haut qui se modifie au fur et à mesure de l'avancée des cours.
Tu n'auras donc jamais les mêmes chiffres au cours de la journée sauf en cas de range après une tendance prononcée etc...

Concernant ton problème de synchronisation, je n'en vois pas sur mes charts.

Concernant le pivot, tu en as un dans les indicateurs de base de Multicharts.

Sur le site de tssupport, dans le forum, il me semble qu'un des clients donne toute une liste de sites avec des indicateurs, fonctions et autres signaux.

Sinon tu as :




CDO
post Sep 1 2009, 9:16
Post


Attached Image
Il s'agit d'une moyenne des plus hauts/bas sur 7 jours par défaut dans mon cas, donc la variation du jour en cours est négligeable sur le calcul... le résultat reste fixe pour la journée courante, d'autant plus que le chiffre ne correspond qu'à 15% de la moyenne des variations !
Le résultat habituellement constaté sur eurusd se situe aux environs de 20 pour ces derniers jours alors que l'indicateur affiche actuellement 84 !!!

Je cherche la solution à ce problème...

Merci pour les liens !
En effet, j'avais bien trouvé le Floor Trader Pivot de MultiCharts, mais les niveaux ne sont pas calculés comme ce que j'utilise actuellement sur Metatrader (et qui donne des niveaux réellement réactifs), et je ne me sentais pas le courage d'aller bricoler les formules ;-)
J'espérais trouver pléthore d'indicateurs, mais google ne renvoie pas grand chose :-(

This post has been edited by CDO: Sep 1 2009, 9:33
Ender
post Sep 1 2009, 10:10
Post


Ce que tu veux en fait c'est l'average true range journalier mais à partir des données intraday.

Si j'ai le temps, je regarderais ça de plus près.

En attendant voici la solution la plus rapide et la plus facile à mettre en place:

ProfitTarget = AvgTrueRange( Length )of data2*multipleTarget *pricescale;
StopLoss = AvgTrueRange( Length )of data2*multipleStopL*pricescale;

et tu ajoute un deuxième chart en daily que tu caches.

ça devrait faire l'affaire.


CDO
post Sep 11 2009, 18:35
Post


Merci pour la proposition !

Le graphe 1 sur lequel est appliqué l'indicateur est en 5 minutes.
Quand j'applique l'indicateur sur le graphe 5 minutes, un message d'erreur m'indique qu'il n'a pas assez de data.
Cette solution nécessite de télécharger l'équivalent de 7 jours sur le graphe 5 minutes pour calculer l'average daily range sur 7 jours... bien que le calcul fasse référence au graphe 2 qui lui est en daily...

Mais je ne comprends pas pourquoi la première solution ne marcherait pas...

var0 = DailyHigh - DailyLow;

ProfitTarget = Average(var0,length)*multipleTarget *pricescale;
StopLoss = Average(var0,length)*multipleStopL*pricescale;

Il me semblait que ça calculait bien la moyenne des 7 derniers (DailyHigh - DailyLow) ???
length devrait bien s'appliquer sur les 7 dernières var0 ??
DailyHigh et DailyLow doivent bien récupérer les données quelque soit l'unité de temps du graphe utilisé ?

Merci !



Reply to this topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

> Similar Topics

    Topic Title Replies Topic Starter Views Last Action
No New Posts   1 thierrybl 2,344 23rd September 2005 - 9:37
Last post by: thierrybl
No new   16 Odinho 9,128 1st April 2008 - 15:55
Last post by: jlpi
No New Posts   1 Travis 3,286 1st November 2005 - 17:12
Last post by: muscat
No New Posts   4 Jee 3,828 25th November 2005 - 11:35
Last post by: Phénoménal
No New Posts   0 erik 1,793 8th December 2005 - 13:46
Last post by: erik


Lo-Fi Version: Programmation Easylanguage - Forex Forum