Excellent. Merci beaucoup et bon week end a toi aussi.
Annonce
Réduire
Aucune annonce.
Ads
Réduire
Entre-Aide WHS FutureStation Nanotrader
Réduire
X
-
<strong><font color='#FF0000'>ACCELERER LES CALCULS SOUS EXPRESS</font>;</strong>
Bonjour,
La profondeur des historiques de cours sous EXPRESS rend les calculs très longs, inutilement, et souvent ne permet pas de réaliser des calculs complexes ou indicateurs personnalisés performants.
<strong><em>Je vous propose une solution "standard" <img src='http://www.pro-at.com/style/images/icones/icon_smile.gif' border='0' alt='' title='' align='middle' />et assez simple qui permet de faire des calculs sur une période de temps "réduites.</em></strong> Vous pouvez choisir par exemple de calculer vos indicateurs ou historiques de prix sur les 200 ou 500 périodes les plus récentes.
Ci-dessous un exemple pour le calcul de la moyenne mobile exponentielle sur les 500 derniers cours. Cet exemple est transposable facilement a d'autres indicateurs personnalisée (<strong><font color='#FF0000'>bien sur, il existe peut être une solution encore plus simple, que je ne connais pas encore</font></strong> <img src='http://www.pro-at.com/style/images/icones/icon_smile_question.gif' border='0' alt='' title='' align='middle' />):
//-----------------------
Express EMA_PERIODE_REDUITE
//-----------------------
vars
series EMA;
numeric i;
numeric factor(0);
input $period_EMA(1, 100, 10);
input $period_TEST(1, 1000, 500);
//-----------------------
calculation
EMA = void;
factor = 2 / ($period_EMA + 1);
If IsFinalBar() then //ne pas oublier
for i = $period_TEST downto 0
begin
if i = $period_TEST then //we need one lookback entry
EMA<em> = close<em>;
else
EMA<em> = factor * close<em> + (1 - factor) * EMA[i+1];
end
interpretation
begin
end
plot (EMA, green, 2);
Commentaire
-
Bonjour,
J'ai tenté de représenter la valeur MEDIANE d'une série de CLOSE sur 5 periodes <strong><em> (par simplicité, les periodes de recherche de valeur médiane sont d'une durée numérique impaire </em></strong>; ici $period_median est toujours une valeur impaire).
Le programme ci dessous ne donne pas encore les bonnes réponses sous Express (WHS FS Nano) mais je pense être proche de la solution.
Auriez vous l’amabilité de bien vouloir m'aider a terminer ce programme et de le tester sur vos ordinateurs?
<strong><u>Pour exemple, si sur 5 periodes</u>:</strong>
close0 = 3010
close1 = 3015
close2 = 2090
close3 = 3012
close4 = 3020
alors la valeur MEDIANE est 3012 en t=3 (2090, 3010, <strong><u>3012</u></strong>, 3015, 3020) puisqu'elle est au milieu de la série de prix triée par ordre croissant.
Merci par avance pour votre aide.
//--------------------------------------------
<strong>Express VALEUR_MEDIANE</strong>
vars
series median_p;
input $period_median(1, 15, 5);
input $period_TEST(1, 1000, 200);
numeric i, j, mid, inf, sup, egal, test;
//-------------------------------
calculation
mid = ($period_median/2)+0.5;
median_p = void;
If IsFinalBar() then
for i = $period_TEST downto 0 //je réduis le nombre de mes calculs sur une période de 200 prix pour accélérer mes calculs
begin
test = 0;
sup = 0;
inf = 0;
egal = 0;
for j = ($period_median-1) downto 0
begin
if test = 0 then
begin
if close[i+j] < close<em> then inf = inf+1;
else
if close[i+j] = close<em> then egal = egal+1;
else
if close[i+j] > close<em> then sup = sup+1; //d'autres proposent la formule sup=($period_median-inf-egal)
end
end
if (sup + egal >= mid) then
begin
median_p<em> = Lowest(close, mid);
test = 1;
end
if (inf + egal >= mid) then
begin
median_p<em> = Highest(close, mid);
test = 1;
end
end
Commentaire
-
j’étais parti dans le but de coder une Sine Weighted Moving Avearge ( SWMA )
<a href='/ref.php?uri=http%3A%2F%2Fwww.linnsoft.com%2Ftour%2Ftechind%2FmovAvg.htm' target="_blank">http://www.linnsoft.com/tour/techind/movAvg.htm</a>
<center><img src='http://www.linnsoft.com/tour/techind/images/IRT_MovAvgs.jpg' alt='' /></center>
trop complexe , sous excel j'ai cette formule
"=SIN($Z$4*180/6*PI()/180)*D9+SIN($Z$5*180/6*PI()/180)*D8+SIN($Z$6*180/6*PI()/180)*D7+SIN($Z$7*180/6*PI()/180)*D6+SIN($Z$8*180/6*PI()/180)*D5"
ça demande des PI et des sin , angle exprimé en radian , ça semble beaucoup plus simple sous prorealtime , CF blog hk lisse
Commentaire
-
<blockquote><strong>Citation de : zatchetig</strong> <em>(au 02-07-2012 15:55:27)</em>
Bonjour à tous
En dehors des vidéos et manuels de WHS, quelqu'un aurait-il un bon livre à me conseiller pour apprendre le langage express ?
Merci d'avance
</blockquote><hr />
Bonsoir,
Il n'existe pas de littérature propre au langage Express.
Sur le net et sur Amazone il en existe pas des livres, des articles et des exemples sur l'Easylanguage qui est très proche.
Cela devrait donc faire l'affaire, il y a quelques adaptations à faire mais une fois que l'on a compris le fonctionnement c'est parfait!
Bon courage
Commentaire
-
<blockquote><strong>Citation de : StarGate1</strong> <em>(au 02-07-2012 18:44:18)</em>
<blockquote><strong>Citation de : zatchetig</strong> <em>(au 02-07-2012 15:55:27)</em>
Bonjour à tous
En dehors des vidéos et manuels de WHS, quelqu'un aurait-il un bon livre à me conseiller pour apprendre le langage express ?
Merci d'avance
</blockquote><hr />
Bonsoir,
Il n'existe pas de littérature propre au langage Express.
Sur le net et sur Amazone il en existe pas des livres, des articles et des exemples sur l'Easylanguage qui est très proche.
Cela devrait donc faire l'affaire, il y a quelques adaptations à faire mais une fois que l'on a compris le fonctionnement c'est parfait!
Bon courage
</blockquote><hr />
<p align='left'>Il n'existe pas de littérature propre au langage Express.
Toutefois, sur le net et sur Amazone on trouve des livres, des articles et des exemples sur l'Easylanguage qui est très proche.
Cela devrait donc faire l'affaire, il y a quelques adaptations à faire mais une fois que l'on a compris le fonctionnement c'est parfait!
Bon courage</p>
Commentaire
-
tu peux peut être trouver des infos ici
<a href='/ref.php?uri=https%3A%2F%2Ftwitter.com%2Ftradestation' target="_blank">https://twitter.com/tradestation</a>
<a href='/ref.php?uri=https%3A%2F%2Ftwitter.com%2Fmulticharts' target="_blank">https://twitter.com/multicharts</a>
j'ai vu un livre tourner
Mais je trouve que les documents fournis par Futurestation , plus les vidéos par WHS c'est trés bien pour comprendre
Commentaire
-
<blockquote><strong>Citation de : camillo</strong> <em>(au 17-12-2011 11:18:04)</em>
Express Hull_Moving_Average_110714
vars
series
markeru, markerd,
Y, line1, line2, line3, temp;
numeric
i, j, sum, sum2, w, wsum,
u1, u1_sum, u1_sum2, u1_w(1), u1_wsum,
u2, u2_sum, u2_sum2, u2_w(1), u2_wsum,
u3, u3_sum, u3_sum2, u3_w(1), u3_wsum,
numerator,denominator;
input
$N(1,100,10);
calculation
//------------------------------
// Calculate fixed parameters
//------------------------------
if IsFirstBar() then
begin
u1 = round(($N/2),0);
u2 = $N;
u3 = round(SquareRoot($N),0);
u1_wsum = (u1 + 1) * u1 / 2;
u2_wsum = (u2 + 1) * u2 / 2;
u3_wsum = (u3 + 1) * u3 / 2;
end
// Conversion of the close in ticks = It is better to work with integer
// to avoid issues of errors due to rounding numbers
Y = round(close/TickSize(),0);
//---------------------------------
// First WMA
//---------------------------------
line1 = void;
if CurrentBarIndex() <= (u1-1) then
begin
u1_sum = u1_sum + Y;
u1_sum2 = u1_sum2 + Y * u1_w;
u1_w = u1_w + 1;
end
else
begin
u1_sum2 = u1_sum2 + Y * u1 - u1_sum;
u1_sum = u1_sum + Y - Y[u1];
line1 = (u1_sum2/u1_wsum)*TickSize();
end
//---------------------------------
// Second WMA
//---------------------------------
line2 = void;
if CurrentBarIndex() <= (u2-1) then
begin
u2_sum = u2_sum + Y;
u2_sum2 = u2_sum2 + y * u2_w;
u2_w = u2_w + 1;
end
else
begin
u2_sum2 = u2_sum2 + y * u2 - u2_sum;
u2_sum = u2_sum + y - y[u2];
line2 = (u2_sum2/u2_wsum)*TickSize();
end
//---------------------------------
// Calculate temp = 2*First WMA - Second WMA
//---------------------------------
temp = round((2*(u1_sum2/u1_wsum) - u2_sum2/u2_wsum),0);
//---------------------------------
// Third WMA
//---------------------------------
if IsFinalBar() then
begin
for i = FinalbarIndex() downto 0
begin
if i >= (FinalbarIndex()-(u2-1)) then
begin
line3<em> = void;
end
else
if i >= (FinalbarIndex()-u2-(u3-1)) then
begin
u3_sum = u3_sum + temp<em>;
u3_sum2 = u3_sum2 + temp<em> * u3_w;
u3_w = u3_w + 1;
line3<em> = void;
end
else
begin
u3_sum2 = u3_sum2 + temp<em> * u3 - u3_sum;
u3_sum = u3_sum + temp<em> - temp[i+u3];
line3<em> = (u3_sum2/u3_wsum)*TickSize();
end
end
//---------------------------------
// Create markeru, markerd
//--------------------------------
for i = FinalBarIndex() downto 0
begin
markeru<em> = void;
markerd<em> = void;
if line3<em> > line3[i+1] then
begin
markeru[i+1] = line3[i+1];
markeru<em> = line3<em>;
end
else
if line3<em> <> line3[i+1] then
begin
markerd[i+1] = line3[i+1];
markerd<em> = line3<em>;
end
else
if line3[i+1] > line3[i+2] then
begin
markeru[i+1] = line3[i+1];
markeru<em> = line3<em>;
end
else
begin
markerd[i+1] = line3[i+1];
markerd<em> = line3<em>;
end
end
end
interpretation
begin
end
plot(markeru, green, 2);
plot(markerd, red, 2);
//plot (line1,lightblue,2);
//plot (line2,blue,2);
//plot (line3,red,2);
//plot (temp,blue,2);
//plot (Y,blue,2);//@@@cs:1161303-3910376-819054_cs@@@
</blockquote><hr />
@ camillo
Bonjour Camillo je cherche à faire tourner la HMA , comme sur le graphique ci dessous , mais il y a un bug
Si un de vous a une idée
<center><img src='http://www.pro-at.com/forums-bourse/0712/40912_231042.png' alt='' /></center>
Commentaire
-
<blockquote><strong>Citation de : JB</strong> <em>(au 23-07-2012 10:42:57)</em>
<blockquote><strong>Citation de : camillo</strong> <em>(au 17-12-2011 11:18:04)</em>
Express Hull_Moving_Average_110714
vars
series
markeru, markerd,
Y, line1, line2, line3, temp;
numeric
i, j, sum, sum2, w, wsum,
u1, u1_sum, u1_sum2, u1_w(1), u1_wsum,
u2, u2_sum, u2_sum2, u2_w(1), u2_wsum,
u3, u3_sum, u3_sum2, u3_w(1), u3_wsum,
numerator,denominator;
input
$N(1,100,10);
calculation
//------------------------------
// Calculate fixed parameters
//------------------------------
if IsFirstBar() then
begin
u1 = round(($N/2),0);
u2 = $N;
u3 = round(SquareRoot($N),0);
u1_wsum = (u1 + 1) * u1 / 2;
u2_wsum = (u2 + 1) * u2 / 2;
u3_wsum = (u3 + 1) * u3 / 2;
end
// Conversion of the close in ticks = It is better to work with integer
// to avoid issues of errors due to rounding numbers
Y = round(close/TickSize(),0);
//---------------------------------
// First WMA
//---------------------------------
line1 = void;
if CurrentBarIndex() <= (u1-1) then
begin
u1_sum = u1_sum + Y;
u1_sum2 = u1_sum2 + Y * u1_w;
u1_w = u1_w + 1;
end
else
begin
u1_sum2 = u1_sum2 + Y * u1 - u1_sum;
u1_sum = u1_sum + Y - Y[u1];
line1 = (u1_sum2/u1_wsum)*TickSize();
end
//---------------------------------
// Second WMA
//---------------------------------
line2 = void;
if CurrentBarIndex() <= (u2-1) then
begin
u2_sum = u2_sum + Y;
u2_sum2 = u2_sum2 + y * u2_w;
u2_w = u2_w + 1;
end
else
begin
u2_sum2 = u2_sum2 + y * u2 - u2_sum;
u2_sum = u2_sum + y - y[u2];
line2 = (u2_sum2/u2_wsum)*TickSize();
end
//---------------------------------
// Calculate temp = 2*First WMA - Second WMA
//---------------------------------
temp = round((2*(u1_sum2/u1_wsum) - u2_sum2/u2_wsum),0);
//---------------------------------
// Third WMA
//---------------------------------
if IsFinalBar() then
begin
for i = FinalbarIndex() downto 0
begin
if i >= (FinalbarIndex()-(u2-1)) then
begin
line3<em> = void;
end
else
if i >= (FinalbarIndex()-u2-(u3-1)) then
begin
u3_sum = u3_sum + temp<em>;
u3_sum2 = u3_sum2 + temp<em> * u3_w;
u3_w = u3_w + 1;
line3<em> = void;
end
else
begin
u3_sum2 = u3_sum2 + temp<em> * u3 - u3_sum;
u3_sum = u3_sum + temp<em> - temp[i+u3];
line3<em> = (u3_sum2/u3_wsum)*TickSize();
end
end
//---------------------------------
// Create markeru, markerd
//--------------------------------
for i = FinalBarIndex() downto 0
begin
markeru<em> = void;
markerd<em> = void;
if line3<em> > line3[i+1] then
begin
markeru[i+1] = line3[i+1];
markeru<em> = line3<em>;
end
else
if line3<em> <> line3[i+1] then
begin
markerd[i+1] = line3[i+1];
markerd<em> = line3<em>;
end
else
if line3[i+1] > line3[i+2] then
begin
markeru[i+1] = line3[i+1];
markeru<em> = line3<em>;
end
else
begin
markerd[i+1] = line3[i+1];
markerd<em> = line3<em>;
end
end
end
interpretation
begin
end
plot(markeru, green, 2);
plot(markerd, red, 2);
//plot (line1,lightblue,2);
//plot (line2,blue,2);
//plot (line3,red,2);
//plot (temp,blue,2);
//plot (Y,blue,2);//@@@cs:1161303-3910376-819054_cs@@@
</blockquote><hr />
@ camillo
Bonjour Camillo je cherche à faire tourner la HMA , comme sur le graphique ci dessous , mais il y a un bug
Si un de vous a une idée
<center><img src='http://www.pro-at.com/forums-bourse/0712/40912_231042.png' alt='' /></center>
</blockquote><hr />
@JB
<font color='#0000FF'><strong>Bonjour JB,
Juste une toute petite idée.
Je mettrais les couleurs entre guillemets dans les lignes "Plot".</strong></font>
<strong>interpretation
begin
end
plot(markeru, <font color='#FF0000'>"</font>green<font color='#FF0000'>"</font>, 2);
plot(markerd, <font color='#FF0000'>"</font>red<font color='#FF0000'>"</font>, 2);</strong>
Commentaire
-
Bonjour,
Le programme installé est bien celui du message? parce que sur le graphe joint il y a deux indicateurs installés :
HMA-WHS(40) et HMA-WHSS (120)
Si ce sont les mêmes je conseille de donner le même nom au titre du programme et au nom du fichier sous lequel il est enregistré;sinon on ne s'y retrouve plus, surtout lorsque l'on fait appel à un autre indicateur dans un programme d'indicateur.
Ouvrir dans l'éditeur (double clique droit) le programme en défaut puis cliquer sur Appliquer et nous transmettre le message qui s'affiche, cela devrait aider à voir le problème
@ plus
Commentaire
-
Bjr mpcdmu
Bjr Bernard
les "" ne semble pas interagir
je suis mauvais en programmation , et je ne trouve pas la fonction qui appellerait un second indicateur bien trop compliqué pour un petit gas comme moi
Trop fort (Don) Camillo , dommage qu'il soit en vacances j'aurais pu lui expliquer comment gagner 1M€ avec son indicateur <img src='http://www.pro-at.com/style/images/icones/icon_smile_clown.gif' border='0' alt='' title='' align='middle' />
<center><img src='http://www.pro-at.com/forums-bourse/0712/40912_241343.png' alt='' /></center>
va falloir sérieusement que je me mette à bosser ,( pas normal que je ne fasse pas d'effort )
A+ time to run , le soleil m'appelle , bons trades
Commentaire
Commentaire