double bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab=((askP+bidP)*1)/2.0;
Print("askP="+askP+" bidP="+bidP+" Averab="+Averab+" MathFloor((int)Averab)="+MathFloor((int)Averab));
à l'écart=2
askP=105143 bidP=105141 Averab=105142 MathFloor((int)Averab)=105142
à l'écart=3
askP=105144 bidP=105141 Averab=105142.5 MathFloor((int)Averab)=105142
à 4 !!!! propagation
askP=105545 bidP=105141 Averab=105143 MathFloor((int)Averab)=105142
Pourquoi ?
Bonjour à tous, je commence à en avoir assez de l'exactitude des citations. Normalisations, etc.
Vous devriez être capable de comprendre ce que sont un double et un int. Comment fonctionne la conversion de type.
Je n'ai jamais utilisé MathMod et MathFloor. Votre code indique clairement que vous ne comprenez pas du tout ce qui se cache derrière ce que vous avez écrit.
L'impression du double numéro ne représente rien. Si vous voulez imprimer la valeur réelle d'un double, vous devez regarder ses octets.
l'amorçage uniquement pour éviter de devoir l'écrire manuellement,
La variable elle-même ne donne pas le résultat que j'attends d'elle.
Lemoulage de type, la normalisation des int et le doublage sont ce que j'ai fait sans aide.
En ce moment, je suis désespéré car j'ai essayé toutes les options et j'ai mis en place un morceau de code 1 sur 1000 qui ne fonctionne pas comme il le devrait.
Mais merci pour l'aide.
Essayez de faire ce que je veux : ne me montrez pas le code après coup, dites-moi seulement si ça marche ou pas.
Prenez les demandes et les offres.
et calculer le prix moyen.
Si l'écart est impair (3,5,7,9, etc.), alors le prix moyen est plus proche de l'offre.
Par exemple :
Bid=1.55555 Ask=1.55557 Prix moyen=1.55556 Spread=2
Bid=1.5555 Ask=1.55558 Prix moyen=1.55556 Spread=3
et vous y arriverez.
Mais lorsque l'écart est de 4,5,6,7 - vous aurez cette précision en allant vers l'inconnu. Et les chiffres nageront dans le mauvais sens.
double bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab=((askP+bidP)*1)/2.0;
Print("askP="+askP+" bidP="+bidP+" Averab="+Averab+" MathFloor((int)Averab)="+MathFloor((int)Averab));
à l'écart=2
askP=105143 bidP=105141 Averab=105142 MathFloor((int)Averab)=105142
à l'écart=3
askP=105144 bidP=105141 Averab=105142.5 MathFloor((int)Averab)=105142
à 4 !!!! propagation
askP=105545 bidP=105141 Averab=105143 MathFloor((int)Averab)=105142
Pourquoi ?
J'ai vécu une situation similaire une fois - mon esprit bouillonnait d'indignation à ce moment-là. Remplacer double par float a aidé , je ne sais toujours pas pourquoi.
Merci, je vais essayer........ je suis en train de m'en mettre plein la vue aussi.
OUI ! !! C'est exactement comme ça que ça marche ! C'est bon.
float bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
float Averab=((askP+bidP))/2.0;
Merci ! !! Je ne sais plus ce que je ferais. ........
int askP = (int)(Ask / Point + ALPHA);
int bidP = (int)(Bid / Point + ALPHA);
Voici comment fonctionne MathFloor
{
return((int)((Num > 0) ? Num : Num - 1));
}
pour différents écarts ? y compris 2,3,4,5,6,7 ?
Parce que j'ai déjà essayé votre méthode (sans+ ALPHA). L'écart 2,3 est correct, mais 4,5 est déjà un problème.
Normalisation, c'est la première chose que j'ai fait dans la fonction, mais malheureusement à certains écarts, il commence à se bloquer.
la normalisation est la première chose que j'ai faite dans la fonction, mais malheureusement, à certains écarts, elle commence à faire des siennes
prendre la demande et l'offre.
et calculer le prix moyen.
Si l'écart est impair (3, 5, 7, 9, etc.), il faut considérer que le prix moyen est plus proche de l'offre.
int DoubleToInt( const double Num )
{
return((int)(Num + ALPHA));
}
void OnStart()
{
double NewPrice = DoubleToInt((Ask + Bid) / (2 * Point)) * Point;
Print(NewPrice);
}

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour à tous, je commence à en avoir assez de l'exactitude des citations. Normalisation et ainsi de suite.
float askP=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
float bidP=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
float Averab=((askP+bidP))/2.0;
AUTOPRICE=MathFloor(Averab)*Point;
Print("FLOAT "+" askP="+askP+" bidP="+bidP+" Averab="+DoubleToString(Averab,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE,10));
double AUTOPRICE2;
double askP2=NormalizeDouble(Ask,Digits)/NormalizeDouble(Point,Digits);
double bidP2=NormalizeDouble(Bid,Digits)/NormalizeDouble(Point,Digits);
double Averab2=((askP2+bidP2))/2.0;
AUTOPRICE2=MathFloor(Averab2)*Point;
Print("DOUBLE "+" askP2="+askP2+" bidP2="+bidP2+" Averab2="+DoubleToString(Averab2,10)+" AUTOPRICE="+DoubleToString(AUTOPRICE2,10));
écarté : 2
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :DOUBLE askP2=105143 bidP2=105141 Averab2=105142.000000 AUTOPRICE=1.0514200000
2017.02.26 09:56:54.475 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :FLOAT askP=105143 bidP=105141 Averab=105142.0000000000 AUTOPRICE=1.0514199734
écarté : 3
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :DOUBLE askP2=105144 bidP2=105141 Averab2=105142.5000000000 AUTOPRICE=1.0514200000
2017.02.26 09:57:47.832 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :FLOAT askP=105144 bidP=105141 Averab=105142.5000000000 AUTOPRICE=1.0514199734
écarté : 4
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :DOUBLE askP2=105145 bidP2=105141 Averab2=105143.000000 AUTOPRICE=1.0514200000
2017.02.26 09:58:05.813 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :FLOAT askP=105145 bidP=105141 Averab=105143.0000000000 AUTOPRICE=1.0514299870
écarté : 5
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30 :DOUBLE askP2=105146 bidP2=105141 Averab2=105143.5000000000 AUTOPRICE=1.0514300000
2017.02.26 09:58:39.495 2017.01.02 00:03:00 Exp - DOUBLE TEST MATHFLOOR EURUSD,M30:FLOATaskP=105146 bidP=105141 Averab=105143.5000000000 AUTOPRICE=1.0514299870
Ces panneaux supplémentaires se trouvent quelque part au bout du tunnel...........