Güzel gün. Dosya işaretçisi hakkında bir soru... MQL4'te bulunan MQL 4 hakkındaki kitapta. "Standart işlevler " bölümünde, "Dosya işlemleri" bölümünde, bir dosyadan veri okumak ve sembol penceresinde grafik nesneleri görüntülemek için tasarlanmış timetablenews.mq4 komut dosyasının bir örneği vardır:
//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name= "News.csv" , // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
Handle= FileOpen (File_Name, FILE_CSV | FILE_READ , ";" ); // Открытие файлаif (Handle< 0 ) // Неудача при открытии файла
{
if ( GetLastError ()== 4103 ) // Если файла не существует,..Alert ( "Нет файла с именем " ,File_Name); //.. извещаем трейдера else// При любой другой ошибке..Alert ( "Ошибка при открытии файла " ,File_Name); //..такое сообщPlaySound ( "Bzrrr.wav" ); // Звуковое сопровождениеreturn ; // Выход из start()
}
//--------------------------------------------------------------- 4 --while ( FileIsEnding (Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm = FileReadString (Handle); // Дата и время события(дата)
Text = FileReadString (Handle); // Текст описания событияif ( FileIsEnding (Handle)==true) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm = StrToTime (Str_DtTm); // Преобразование типа данных
Instr = StringSubstr (Text, 0 , 3 ); // Извлекаем первые 3 символа
One= StringSubstr ( Symbol (), 0 , 3 ); // Извлекаем первые 3 символа
Two= StringSubstr ( Symbol (), 3 , 3 ); // Извлекаем вторые 3 символа
Stl= STYLE_DOT ; // Для всех - стиль пунктир
Col= DarkOrange ; // Для всех - цвет такойif (Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl= STYLE_SOLID ; // .. такой стиль..
Col= Red ; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name= "News_Line " +Str_DtTm; // Имя объектаObjectCreate (Obj_Name, OBJ_VLINE , 0 ,Dat_DtTm, 0 ); //Создаем объект..ObjectSet (Obj_Name, OBJPROP_COLOR , Col); // ..и его цвет,..ObjectSet (Obj_Name, OBJPROP_STYLE , Stl); // ..стиль..ObjectSetText (Obj_Name,Text, 10 ); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose ( Handle ); // Закрываем файлPlaySound ( "bulk.wav" ); // Звуковое сопровождениеWindowRedraw (); // Перерисовываем объектыreturn ; // Выход из start()
}
//--------------------------------------------------------------- 9 --
Aşağıda, MQL 4'teki Kitapta bu komut dosyası analiz edilirken, şu ifade verilir: " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulur. Ve ancak bundan sonra while döngüsü sonlandırma koşulu çalışacak ve kontrol 8-9" bloğuna aktarılacaktır.
Doğru mu anladım???... Dosya işaretçisi METİN KARAKTERLERİ ARASINDA DEĞİLDİR (örn: tek | st, burada|bir dosya işaretçisidir), ancak AYRIŞTIRMALI bir işaretçidir, örneğin: te k st , burada k , dosya işaretçisi tarafından vurgulanan " k " karakteridir. Bu, hatların varlığının gerekliliğini açıklar (bkz. s. 164):
if (FileIsEnding(Handle)== true ) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Gerçekten. Sondan bir önceki yinelemede, LAST nesnesinin oluşturulmasından sonra
(burada o , dosya işaretçisi tarafından vurgulanan " o " sembolüdür). Ardından, while ifadesinin başına denetimi aktarırken, FileIsEnding(handle) işlevi açıkçatrue değerini döndürür ,çünkü dosya işaretçisi dosyanın SONUNDA DEĞİL, o dosyanın SON KARAKTERİNDEDİR. Ardından, ilk iki satır yürütüldüğünde, dosya işaretçisi BOŞ bir yere gidecek ve satır yoksa
if (FileIsEnding(Handle)== true ) // Файловый указатель в концеbreak ; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
komut dosyası, boş bir açıklama ve 0'a karşılık gelen bir zaman koordinatıyla bir grafik (yani bir satır) oluşturacaktır. " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. " ifadesinde kastedilen budur.
Soru : Doğru mu anladım:
a) bir dosya işaretçisinin tanımlanması;
b) " ifadesinin anlamı, eğer belirtilen kontrol (5. bloktaki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. Ve ancak bundan sonra while döngüsü sonlandırma koşulu olacaktır. iş ve kontrol 8-9 bloğa aktarılacak "
P.S. forumu kirletmemek adına şimdiden teşekkürler
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Merhaba.
Lütfen kodda hangi değişikliklerin yapılması gerektiğini bana bildirin. Böylece histogram sadece düşüş çubukları için değerler görüntüler.
Göstergenin kendisi https://www.mql5.com/ru/code/8920
Güzel gün. Dosya işaretçisi hakkında bir soru... MQL4'te bulunan MQL 4 hakkındaki kitapta. "Standart işlevler " bölümünde, "Dosya işlemleri" bölümünde, bir dosyadan veri okumak ve sembol penceresinde grafik nesneleri görüntülemek için tasarlanmış timetablenews.mq4 komut dosyasının bir örneği vardır:
Aşağıda, MQL 4'teki Kitapta bu komut dosyası analiz edilirken, şu ifade verilir: " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulur. Ve ancak bundan sonra while döngüsü sonlandırma koşulu çalışacak ve kontrol 8-9" bloğuna aktarılacaktır.
Doğru mu anladım???... Dosya işaretçisi METİN KARAKTERLERİ ARASINDA DEĞİLDİR (örn: tek | st , burada | bir dosya işaretçisidir), ancak AYRIŞTIRMALI bir işaretçidir, örneğin: te k st , burada k , dosya işaretçisi tarafından vurgulanan " k " karakteridir. Bu, hatların varlığının gerekliliğini açıklar (bkz. s. 164):
Gerçekten. Sondan bir önceki yinelemede, LAST nesnesinin oluşturulmasından sonra
2007.05.11 18:30; JPY Endüstriyel üretim
dosya işaretçisi son nesnenin konumundadır, yani:
2007.05.11 18:30; JPY Endüstriyel üretim
(burada o , dosya işaretçisi tarafından vurgulanan " o " sembolüdür). Ardından, while ifadesinin başına denetimi aktarırken, FileIsEnding ( handle ) işlevi açıkça true değerini döndürür , çünkü dosya işaretçisi dosyanın SONUNDA DEĞİL, o dosyanın SON KARAKTERİNDEDİR. Ardından, ilk iki satır yürütüldüğünde, dosya işaretçisi BOŞ bir yere gidecek ve satır yoksa
komut dosyası, boş bir açıklama ve 0'a karşılık gelen bir zaman koordinatıyla bir grafik (yani bir satır) oluşturacaktır. " Belirtilen kontrol (blok 5-6'daki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. " ifadesinde kastedilen budur.
Soru : Doğru mu anladım:
a) bir dosya işaretçisinin tanımlanması;
b) " ifadesinin anlamı, eğer belirtilen kontrol (5. bloktaki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. Ve ancak bundan sonra while döngüsü sonlandırma koşulu olacaktır. iş ve kontrol 8-9 bloğa aktarılacak "
P. S. forumu kirletmemek adına şimdiden teşekkürler
İnsanlar!!! Lütfen saatlik çubuğu açma işlevini verin (önceki mumun Açılışını belirlemek gereklidir), aksi takdirde (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) için nedense çalışmıyor, m=1 n=1 koyuyorum, kusura bakmayın, kusura bakmayın...
https://docs.mql4.com/ru/series
cevap için teşekkürler, ancak saatlik mumun açıldığını öğrenmek için hangi fonksiyonun yardımıyla anlamadım ....
iZaman
iZaman
Danışman her zaman 0 hatası veriyor, söyle bana - neden verdiğini nasıl kontrol edeceğim, burayı nasıl bulacağım?
Hata 0, hata olmamasıdır.
Yazdırmayı bırak (uyarı) =)
Bir denklem birkaç kez tekrarlanırsa formülün yazımı nasıl kısaltılır?