Average day range
Posted: 12 Jun 2014 09:02
Bonjour.
Je dois écrire un indicateur qui me donne :
- le range du jour (écart + haut / + bas)
- le range de la veille
- la moyenne mobile des ranges quotidiens sur un nombre de périodes paramétrables
Je me suis inspiré de deux de vos indicateurs :
- Daily_HiLoOpen
- PreviousDayHighLowCloseOpen
Tout fonctionnerait très bien sur les futures.
Mon problème est que, travaillant sur le Forex, les calculs sont perturbés par les données du dimanche soir de 23h00 à 24h00 lors de l'ouverture du marché.
Je dois donc :
- le lundi, prendre comme données de la veille celles du vendredi et non celles du dimanche soir
- agréger les données du dimanche soir dans celles de la journée du lundi pour le calcul du range de ce jour
- le mardi, prendre les données du dimanche soir et du lundi comme données de la veille.
Le bricolage rapide que j'ai fait ci-dessous ne me donne pas satisfaction et ne fonctionne pas sur tous les time frames.
Quelle solution me proposeriez-vous ?
En vous remerciant par avance de votre aide.
Bien cordialement.
_____________________________________________________________________________
Express GT_DailyRange
Vars
series
lower,
upper,
DailyRange,
MADailyRange,
xMinLo,
xMaxHi,
xRange;
Numeric
MinLo,
MaxHi,
topen;
input $MAADR(1, 1000, 96);
Calculation
CalculateAtEveryTick(false);
if h > MaxHi then MaxHi = h;
else MaxHi = MaxHi;
xMaxHi = MaxHi;
if l < MinLo then MinLo = l;
else MinLo = MinLo;
xMinLo = MinLo;
If IsNewDay() then begin
MaxHi = h;
MinLo = l;
xMaxHi = void;
xMinLo = void;
end
xRange = xMaxHi - xMinLo;
if IsFirstBar() then lower = void;
lower = lower[1];
lower = PrevDayLow();
upper = upper[1];
upper = PrevDayHigh();
DailyRange = upper - lower;
if DayOfWeek(date) = 0 then DailyRange = upper[2]-lower[2];
if DayOfWeek(date) = 1 then DailyRange = upper[24]-lower[24];
MovingAverage(DailyRange, MADailyRange,$MAADR);
interpretation
begin
end
plot (xRange, LightGreen, 2);
plot(DailyRange, LightBlue, 2);
plot(MADailyRange, LightRed, 2);
Je dois écrire un indicateur qui me donne :
- le range du jour (écart + haut / + bas)
- le range de la veille
- la moyenne mobile des ranges quotidiens sur un nombre de périodes paramétrables
Je me suis inspiré de deux de vos indicateurs :
- Daily_HiLoOpen
- PreviousDayHighLowCloseOpen
Tout fonctionnerait très bien sur les futures.
Mon problème est que, travaillant sur le Forex, les calculs sont perturbés par les données du dimanche soir de 23h00 à 24h00 lors de l'ouverture du marché.
Je dois donc :
- le lundi, prendre comme données de la veille celles du vendredi et non celles du dimanche soir
- agréger les données du dimanche soir dans celles de la journée du lundi pour le calcul du range de ce jour
- le mardi, prendre les données du dimanche soir et du lundi comme données de la veille.
Le bricolage rapide que j'ai fait ci-dessous ne me donne pas satisfaction et ne fonctionne pas sur tous les time frames.
Quelle solution me proposeriez-vous ?
En vous remerciant par avance de votre aide.
Bien cordialement.
_____________________________________________________________________________
Express GT_DailyRange
Vars
series
lower,
upper,
DailyRange,
MADailyRange,
xMinLo,
xMaxHi,
xRange;
Numeric
MinLo,
MaxHi,
topen;
input $MAADR(1, 1000, 96);
Calculation
CalculateAtEveryTick(false);
if h > MaxHi then MaxHi = h;
else MaxHi = MaxHi;
xMaxHi = MaxHi;
if l < MinLo then MinLo = l;
else MinLo = MinLo;
xMinLo = MinLo;
If IsNewDay() then begin
MaxHi = h;
MinLo = l;
xMaxHi = void;
xMinLo = void;
end
xRange = xMaxHi - xMinLo;
if IsFirstBar() then lower = void;
lower = lower[1];
lower = PrevDayLow();
upper = upper[1];
upper = PrevDayHigh();
DailyRange = upper - lower;
if DayOfWeek(date) = 0 then DailyRange = upper[2]-lower[2];
if DayOfWeek(date) = 1 then DailyRange = upper[24]-lower[24];
MovingAverage(DailyRange, MADailyRange,$MAADR);
interpretation
begin
end
plot (xRange, LightGreen, 2);
plot(DailyRange, LightBlue, 2);
plot(MADailyRange, LightRed, 2);