[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 279

 
snail09:
Jetez l'algorithme, en mots, parce que c'est un peu flou...

Approximativement comme suit :

//déterminer le nombre total de jours de négociation.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY) ;

Jours=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1) ;

puis, pour la période donnée, calculer le bénéfice/jours = %/jour

Je dois calculer les jours de week-end pour toute cette période et les exclure du calcul :

bénéfice/(jours de congé)

 

forexnew:

Approximativement comme suit :

//déterminer le nombre total de jours de négociation.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY) ;

Jours=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1) ;

puis, pour la période donnée, calculer le bénéfice/jours = %/jour

Je dois calculer les jours de week-end pour toute cette période et les exclure du calcul :

bénéfice/(jours de congé)



Vérifiez que vous disposez de l'historique nécessaire pour la période et calculez votre "bénéfice/jours". Il suffit de ne pas utiliser de calendrier (constantes dans votre formule) et c'est tout. Seuls les jours ouvrables sont pris en compte dans l'historique (il y a aussi des jours fériés). Liez vous aux barres quotidiennes, par exemple.

Si vous souhaitez spécifiquement utiliser un calendrier (grégorien ou julien, par exemple). C'est quoi le truc, il y a un nouveau bar, il y a une nouvelle chanson ?

 
forexnew:

Approximativement comme suit :

//déterminer le nombre total de jours de négociation.

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY) ;

Jours=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1) ;

puis, pour la période donnée, calculer le bénéfice/jours = %/jour

Je dois calculer les jours de week-end pour toute cette période et les exclure du calcul :

bénéfice/(jours de congé)



Vous pouvez calculer le nombre de barres quotidiennes depuis la date de début du test.

Vous pouvez compter le nombre de barres quotidiennes de plus de 20 heures (pour exclure les jours de congé partiel). Vous pouvez suivre un nouveau jour comme si une nouvelle barre était apparue, et ainsi de suite (comme lire l'historique complet des transactions et calculer des dates uniques).

 
splxgf:

Vous pouvez compter le nombre de barres quotidiennes depuis la date de début du test.

Vous pouvez compter le nombre de barres quotidiennes de plus de 20 heures (pour exclure les week-ends incomplets). Vous pouvez suivre un nouveau jour lorsqu'une nouvelle barre apparaît, et ainsi de suite (comme si vous lisiez l'historique complet des transactions et comptiez les dates uniques).

Dans tous les cas,"(3600*24) + 1)" n'est pas une construction adéquate, nous devrions partir du nombre de barres.
 
snail09:

Vérifiez que vous disposez de l'historique nécessaire pour la période et comptez vos "bénéfices/jours". Il suffit de ne pas utiliser les calendriers (constantes dans votre formule) et c'est tout. Seuls les jours ouvrables sont inclus dans l'historique (il y a aussi les jours fériés). Liez vous aux barres quotidiennes, par exemple.

Si vous souhaitez spécifiquement utiliser un calendrier (grégorien ou julien, par exemple). C'est quoi le truc, il y a un nouveau bar, il y a une nouvelle chanson ?

Je l'ai fait de cette façon :

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY) ;
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24)) ;
for(i=0 ; i<Days ; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++ ;
}
Jours-=Jours3 ;

 
forexnew:

J'ai fait ça :

OrderSelect(0,SELECT_BY_POS,MODE_HISTORY) ;
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24)) ;
for(i=0 ; i<Days ; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++ ;
}
Jours-=Jours3 ;

non, avec cet orderselect vous sélectionnez les ordres dans l'historique (UNE fois), puis vous n'en choisissez qu'un seul (le dernier). Rien n'est confus ?

Faites une recherche de commande dans la boucle, et appliquez vos conditions à chaque commande.

// Rechercher toutes les commandes dans la boucle

for(int i=0;i<=OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Si le symbole et le numéro magique correspondent, la commande est à nous.

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

// Vérifiez ici.

}

}

}

 
snail09:

Non, avec cet orderselect, vous sélectionnez les commandes dans l'historique (UNE fois), puis vous n'allez qu'à une seule (la dernière). N'y a-t-il pas quelque chose de déroutant ?

Passez en revue les commandes dans la boucle, et appliquez vos propres conditions à chaque commande.

// Rechercher toutes les commandes dans la boucle

for(int i=0;i<=OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))

{

// Si le symbole et le numéro magique correspondent, la commande est à nous.

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)

{

// Vérifiez ici.

}

}

}

Pourquoi ai-je besoin de mandats ? J'ai juste besoin d'identifier les jours uniques de la semaine qui ne sont pas commerciaux, c'est-à-dire le samedi et le dimanche soustraits du nombre total de jours.
 

Bien sûr, je me suis trompé :

TimeDayOfWeek(CurTime()-i*24*3600)==7

au lieu de 7, ce devrait être 0.

Vérifié, sur les comptes qui ont plus d'une semaine. Il semble s'afficher correctement.

 

Comment est calculé l'iMA ?


avatar
90
Eugene1 20.10.2011 16:34

Y a-t-il un endroit où je peux trouver comment la fonction iMA est calculée (ou est-elle classée) ?

Je m'intéresse particulièrement à MODE_LWMA.

Je veux regarder et tweak à mon goût, mais quelque chose googlé le code source n'a pas obtenu

 
forexnew:

Bien sûr, je me suis trompé :

TimeDayOfWeek(CurTime()-i*24*3600)==7

au lieu de 7, ce devrait être 0.

Vérifié, sur les comptes qui ont plus d'une semaine. Il semble s'afficher correctement.

Eh bien, ne le faites pas, alors ne le faites pas. Si votre expert ne contrôle pas ses ordres, que fait-il de toute façon ? ...Faire appel à un testeur ?
Raison: