boing9267 : İyi akşamlar, komut dosyasını çalıştırırken, günlüklerdeki hata şudur: uninit sebep 0 ... Lütfen bana neyin yanlış olduğunu söyler misiniz?
Vlad143 : 8 adede kadar ondalık ondalık basamak vardır, istediğiniz gibi düzeltin.
// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнее
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
Kaynak kodunda daha kısa, yürütmede daha uzun. Ben tüm yürütme hızı için varım. Karşılaştırma komut dosyasını çalıştırın, 6 saniye 11 saniyem var. Bir sayıyı bir dizgeye dönüştürme işlemi suçlamaktır, bir kez yapmak daha iyidir.
#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), "сек" );
}
Her şeyin yolunda gittiğini nasıl anlarız? İki yatay çizgi mi oluşturuldu? Şu anda günlükte hiçbir hatam yok, ancak komut dosyasını çalıştırdıktan sonra satırlar görünmüyor
Garip olsa da AUDCAD üzerinde çalıştı, çizgiler oluşturdu ama AUDCHF ve EURUSD üzerinde olmadı...
Sanırım anladım... Halihazırda yatay çizgilerin olduğu grafiklerde görüntülenmiyor. Bunları siler ve komut dosyasını çalıştırırsanız, çizgiler görünür. Ama bu neden oluyor? Soru.
Başka bir soru, fazladan sıfırların nasıl kesileceğidir?
ne olurdu 0.2
ps ondalık noktadan sonraki basamak sayısı her zaman farklı kullanılacaktır
Başka bir soru, fazladan sıfırların nasıl kesileceğidir?
ne olurdu 0.2
ps ondalık noktadan sonraki basamak sayısı her zaman farklı kullanılacaktır
8 adede kadar ondalık basamak vardır, ihtiyacınıza göre ayarlayın.
Bunu böyle değiştirdi - her şey yolunda
Kaynak kodunda daha kısa, yürütmede daha uzun. Ben tüm yürütme hızı için varım. Karşılaştırma komut dosyasını çalıştırın, 6 saniye 11 saniyem var. Bir sayıyı bir dizgeye dönüştürme işlemi suçlamaktır, bir kez yapmak daha iyidir.
Bunu böyle değiştirdi - her şey yolunda
Her şeyin yolunda gittiğini nasıl anlarız? İki yatay çizgi mi oluşturuldu? Şu anda günlükte hiçbir hatam yok, ancak komut dosyasını çalıştırdıktan sonra satırlar görünmüyor
Garip olsa da AUDCAD üzerinde çalıştı, çizgiler oluşturdu ama AUDCHF ve EURUSD üzerinde olmadı...
Sanırım anladım... Halihazırda yatay çizgilerin olduğu grafiklerde görüntülenmiyor. Bunları siler ve komut dosyasını çalıştırırsanız, çizgiler görünür. Ama bu neden oluyor? Soru.
Aynı ada sahip bir satırı ve hatta başka bir nesneyi yeniden oluşturmak yasaktır
Her nesnenin bir adı vardır. Grafiğe sağ tıklayın --> Nesnelerin listesi
Zaman yatay satır adında saklanabilir