per renderlo 0,2. ps il numero di cifre dopo il punto decimale sarà sempre usato in modo diverso
Ci sono fino a 8 cifre decimali frazionarie, da correggere come necessario.
// Переводит в строку курс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: Qui ci sono fino a 8 cifre decimali frazionarie, correggete come volete.
// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнее
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
Più breve nel codice sorgente, più lungo nell'esecuzione. Sono a favore di un'esecuzione rapida. Eseguendo lo script di confronto, ho ottenuto 6 secondi e 11 secondi. Colpa dell'operazione da numero a stringa, è meglio farlo una volta sola.
#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),"сек");
}
Come si capisce che sta andando? Si stanno creando le due linee orizzontali? Non ci sono errori nel mio log ma le linee non appaiono dopo l'inizio dello script
È strano, però - ha funzionato e creato linee su AUDCAD, ma non ha funzionato su AUDCHF e EURUSD...
Credo di aver capito... Non appare sui grafici che hanno già linee orizzontali. Se li rimuovo ed eseguo lo script, le linee appaiono. Ma perché appaiono? Domanda.
LRA: Il tempo può essere salvato nel nome della linea orizzontale
Grazie, ma il nome è occupato da un commento, la linea di tendenza è più adatta entrambi i prezzi sono lo stesso tempo il primo tempo è 0 e il secondo è quello giusto ... questo è probabilmente il più ragionevole
Un'altra domanda è come tagliare gli zeri extra?
per ottenere 0,2
ps il numero di cifre dopo il punto decimale sarà sempre usato in modo diverso
Un'altra domanda è come tagliare gli zeri extra?
per renderlo 0,2.
ps il numero di cifre dopo il punto decimale sarà sempre usato in modo diverso
Ci sono fino a 8 cifre decimali frazionarie, da correggere come necessario.
Rielaborato in questo modo - tutto va
Più breve nel codice sorgente, più lungo nell'esecuzione. Sono a favore di un'esecuzione rapida. Eseguendo lo script di confronto, ho ottenuto 6 secondi e 11 secondi. Colpa dell'operazione da numero a stringa, è meglio farlo una volta sola.
Rielaborato in questo modo - sta andando
Come si capisce che sta andando? Si stanno creando le due linee orizzontali? Non ci sono errori nel mio log ma le linee non appaiono dopo l'inizio dello script
È strano, però - ha funzionato e creato linee su AUDCAD, ma non ha funzionato su AUDCHF e EURUSD...
Credo di aver capito... Non appare sui grafici che hanno già linee orizzontali. Se li rimuovo ed eseguo lo script, le linee appaiono. Ma perché appaiono? Domanda.
È vietato ricreare una linea o anche un altro oggetto con lo stesso nome
Qualsiasi oggetto ha un nome. Cliccate con il tasto destro del mouse sul grafico --> Elenco degli oggetti
Il tempo può essere salvato nel nome della linea orizzontale