para que seja 0,2. ps o número de dígitos após o ponto decimal será sempre usado de forma diferente
Há até 8 dígitos decimais fracionários, corretos conforme sua necessidade.
// Переводит в строку курс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: Há até 8 dígitos decimais fracionários aqui, corretos como você desejar.
// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнее
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
Mais curto no código fonte, mais longo na execução. Eu sou a favor da execução rápida. Execute o roteiro de comparação, eu tenho 6 segundos e 11 segundos. Culpe o número para a operação de cordas, é melhor fazer isso uma vez.
#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),"сек");
}
Como você entende o que está acontecendo? As duas linhas horizontais estão sendo criadas? Não há erros no meu registro, mas as linhas não aparecem após o início do roteiro
É estranho, porém - funcionou e criou linhas no AUDCAD, mas não no AUDCHF e EURUSD...
Acho que entendo... Ela não aparece nos gráficos que já têm linhas horizontais. Se eu os remover e executar o roteiro, aparecerão linhas. Mas por que eles aparecem? Pergunta.
LRA: O tempo pode ser economizado em nome da linha horizontal
Obrigado, mas o nome é ocupado por um comentário , a linha de tendência é mais adequada ambos os preços são ao mesmo tempo a primeira vez é 0 e a segunda é a correta ... esta é provavelmente a mais razoável
Outra questão é como cortar os zeros extras?
para obter 0,2
ps o número de dígitos após o ponto decimal será sempre usado de forma diferente
Outra questão é como cortar os zeros extras?
para que seja 0,2.
ps o número de dígitos após o ponto decimal será sempre usado de forma diferente
Há até 8 dígitos decimais fracionários, corretos conforme sua necessidade.
Reformulou assim - tudo vai
Mais curto no código fonte, mais longo na execução. Eu sou a favor da execução rápida. Execute o roteiro de comparação, eu tenho 6 segundos e 11 segundos. Culpe o número para a operação de cordas, é melhor fazer isso uma vez.
Reformulou assim - está indo
Como você entende o que está acontecendo? As duas linhas horizontais estão sendo criadas? Não há erros no meu registro, mas as linhas não aparecem após o início do roteiro
É estranho, porém - funcionou e criou linhas no AUDCAD, mas não no AUDCHF e EURUSD...
Acho que entendo... Ela não aparece nos gráficos que já têm linhas horizontais. Se eu os remover e executar o roteiro, aparecerão linhas. Mas por que eles aparecem? Pergunta.
É proibido recriar uma linha ou mesmo outro objeto com o mesmo nome
Qualquer objeto tem um nome. Clique com o botão direito do mouse sobre o gráfico --> Lista de objetos
O tempo pode ser economizado em nome da linha horizontal