Une autre question est de savoir comment couper les zéros supplémentaires ?
pour qu'il soit de 0,2. ps le nombre de chiffres après le point décimal sera toujours utilisé différemment
Il y a jusqu'à 8 chiffres décimaux fractionnels, à corriger selon vos besoins.
// Переводит в строку курсstring KursS(double Ku) {
int k, i;
string S; // 8 дробных цифр для составного курса открытия позиции в MT5
S=DoubleToString(NormalizeDouble(Ku,8),8); // Уберем концевые нули
i=StringLen(S)-1;
if (StringSubstr(S,i,1)!="0") return(S); // Их нетfor (k=i-1;k>0;k--) if (StringSubstr(S,k,1)!="0") {S=StringSubstr(S,0,k+1); break;}
i=StringLen(S)-1; // Уберем концевую точкуif (StringSubstr(S,i,1)==".") S=StringSubstr(S,0,i);
return (S);
} // KursS
Vlad143: Il y a jusqu'à 8 chiffres décimaux fractionnels ici, corrigez comme vous le souhaitez.
// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнее
string Kurs(double Ku)
{
string S="0"; int n=8; // Количество знаков дробной части
while(S[StringLen(S)-1]=='0' && n>=0)
{
S=DoubleToString(Ku,n); // n дробных цифр
n--;
}
return (S);
} // Kurs
Plus court dans le code source, plus long dans l'exécution. Je suis pour une exécution rapide. En exécutant le script de comparaison, j'ai obtenu 6 secondes et 11 secondes. C'est la faute de l'opération nombre à chaîne, il vaut mieux la faire une fois.
#property copyright"Copyright 2016, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict// Переводит в строку курсstring KursS(double Ku) {
int k, i;
string S; // 8 дробных цифр для составного курса открытия позиции в MT5
S=DoubleToString(NormalizeDouble(Ku,8),8); // Уберем концевые нули
i=StringLen(S)-1;
if (StringSubstr(S,i,1)!="0") return(S); // Их нетfor (k=i-1;k>0;k--) if (StringSubstr(S,k,1)!="0") {S=StringSubstr(S,0,k+1); break;}
i=StringLen(S)-1; // Уберем концевую точкуif (StringSubstr(S,i,1)==".") S=StringSubstr(S,0,i);
return (S);
} // KursS// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнееstring Kurs(double Ku)
{
string S="0"; int n=8; // Количество знаков дробной частиwhile(S[StringLen(S)-1]=='0' && n>=0)
{
S=DoubleToString(Ku,n); // n дробных цифр
n--;
}
return (S);
} // Kurs voidOnStart() {
string S;
datetime TBeg,T1, T2;
double x;
int N,i;
N=10000000; x=0.2;
TBeg=TimeLocal();
for (i=0;i<N;i++) S=KursS(x);
T1=TimeLocal()-TBeg;
TBeg=TimeLocal();
for (i=0;i<N;i++) S=Kurs(x);
T2=TimeLocal()-TBeg;
Alert ("KursS -",(long)(T1),"сек Kurs - ",(long)(T2),"сек");
}
Comment comprenez-vous que ça se passe ? Les deux lignes horizontales sont-elles créées ? Il n'y a pas d'erreurs dans mon journal, mais les lignes n'apparaissent pas après le début du script.
C`est étrange, cependant - cela a fonctionné et a créé des lignes sur AUDCAD, mais cela n`a pas fonctionné sur AUDCHF et EURUSD....
Je crois que je comprends... Il n'apparaît pas sur les graphiques qui ont déjà des lignes horizontales. Si je les supprime et que j'exécute le script, des lignes apparaissent. Mais pourquoi apparaissent-ils ? Question.
LRA: Le temps peut être enregistré dans le nom de la ligne horizontale
Merci, mais le nom est occupé par un commentaire, la ligne de tendance est mieux adaptée les deux prix sont le même temps le premier temps est 0 et le second est le bon ... c'est sans doute le plus raisonnable.
Une autre question est de savoir comment couper les zéros supplémentaires ?
pour obtenir 0,2
ps le nombre de chiffres après le point décimal sera toujours utilisé différemment
Une autre question est de savoir comment couper les zéros supplémentaires ?
pour qu'il soit de 0,2.
ps le nombre de chiffres après le point décimal sera toujours utilisé différemment
Il y a jusqu'à 8 chiffres décimaux fractionnels, à corriger selon vos besoins.
Je l'ai retravaillé comme ça - tout va
Plus court dans le code source, plus long dans l'exécution. Je suis pour une exécution rapide. En exécutant le script de comparaison, j'ai obtenu 6 secondes et 11 secondes. C'est la faute de l'opération nombre à chaîne, il vaut mieux la faire une fois.
Je l'ai retravaillé comme ça - ça va...
Comment comprenez-vous que ça se passe ? Les deux lignes horizontales sont-elles créées ? Il n'y a pas d'erreurs dans mon journal, mais les lignes n'apparaissent pas après le début du script.
C`est étrange, cependant - cela a fonctionné et a créé des lignes sur AUDCAD, mais cela n`a pas fonctionné sur AUDCHF et EURUSD....
Je crois que je comprends... Il n'apparaît pas sur les graphiques qui ont déjà des lignes horizontales. Si je les supprime et que j'exécute le script, des lignes apparaissent. Mais pourquoi apparaissent-ils ? Question.
Il est interdit de recréer une ligne ou même un autre objet portant le même nom.
Tout objet a un nom. Clic droit sur le graphique --> Liste d'objets
Le temps peut être enregistré dans le nom de la ligne horizontale