MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 175

 
-Aleks- :

Bir çubuğa karşılık gelen bir kaydınız var mı, yok mu?

Evet, 29 Mart'taki çubukta PERIOD_D1'deki histogramın bir çubuğu olacak.

03/29/2017. 574391

 

Tarihi böyle yazarsam histogram çubuğu doğru ayarlanmış

 int shift= iBarShift ( Symbol (), PERIOD_D1 , "29.03.2017" );
Range_Buffer[shift]= str_b1;

ama öyle ise kurulmamış

str_dat1= StringSubstr (str, 0 , 10 ); //

int shift= iBarShift ( Symbol (), PERIOD_D1 ,str_dat1);

Range_Buffer[shift]= str_b1;

tarih ( str _ dat 1) doğru yazdırıldı.

nedeni nedir ?



 
mila.com :

while döngüsünü kaldırdım, ilk satırı şöyle alıyorum

lütfen bana neyin yanlış olduğunu söyle.

str_dat1 değişkeninde ne olduğunu kontrol etmemiz gerekiyor

Genellikle iBarShift türünde datetime satırı yerine tarihin aktarılması gerekir. Can saf bir çizgi şeklinde tarih olarak kabul eder ve bir değişkeni kabul etmek istemez mi???

Ortaya çıkan dizeyi bir tarih saat türüne çevirmek daha iyidir.


ps Ve kontrol etmek için böyle yazmak tamamen çılgınca bir fikir

 int shift= iBarShift ( Symbol (), PERIOD_D1 , (string)str_dat1);

Ancak bu tamamen mql4'ün isteğe bağlılığına dayanmaktadır.

 
mila.com :

Tarihi böyle yazarsam histogram çubuğu doğru ayarlanmış

ama öyle ise kurulmamış

tarih ( str _ dat 1) doğru yazdırıldı.

nedeni nedir ?




Bunun nedeni, datetime değişkeninin türünü iBarShift() işlevine iletmeniz gerektiği ve tür dizesini geçiyorsunuz, bunu deneyin

 datetime   str_dat1= StringToTime ( StringSubstr (str, 0 , 10 )); // это дата
double str_b1= StringToDouble ( StringSubstr (str, 12 , 6 )); // это значение

int shift= iBarShift ( Symbol (), PERIOD_D1 ,str_dat1);

Range_Buffer[shift]=str_b1;

...

 
Alexey Viktorov :
Ortaya çıkan dizeyi tarih saat türüne çevirmek daha iyidir.

Teşekkürler, bir sütun koyun.

Dosyanın tüm satırları için bir histogramın nasıl oluşturulacağı sorusu ortaya çıktı.

Bulundu   bir sonraki satıra atlamaya yardım et FileSeek()

Ama bir sonraki satıra nasıl geçeceğimi bilmiyorum.

 
mila.com :

Teşekkürler, bir sütun koyun.

Dosyanın tüm satırları için bir histogramın nasıl oluşturulacağı sorusu ortaya çıktı.

Bulundu   bir sonraki satıra atlamaya yardım et FileSeek()

Ama bir sonraki satıra nasıl gideceğimi bilmiyorum.

Şimdiye kadar, sadece bir sütun koyar


Yardım)

Dosyayı döngüden önce açar ve kapatmadan sonuna kadar okursanız, döngünün her yinelemesinde bir sonraki satır okunur. Ve döngü tamamlandıktan sonra kapatabilirsiniz .

FileSeek(), işaretçiyi bir sonraki satıra değil, dosyanın başından, sonundan veya işaretçinin geçerli konumundan belirtilen bayt sayısına taşır.

Doğru şekilde taşımak için, kaydedilen dosyada bir satırın kaç bayt kapladığını bilmeniz gerekir.

 
mila.com :

Teşekkürler, bir sütun koyun.

Dosyanın tüm satırları için bir histogramın nasıl oluşturulacağı sorusu ortaya çıktı.

Bulundu   bir sonraki satıra atlamaya yardım et FileSeek()

Ama bir sonraki satıra nasıl gideceğimi bilmiyorum.

Şimdiye kadar, sadece bir sütun koyar


Yardım)

Tüm bunların örneklerle anlatıldığı bir makalenin linkini verdim. Okumamış gibiydi...
 
Sergey Gritsay :


Bunun nedeni, datetime değişkeninin türünü iBarShift() işlevine iletmeniz gerektiği ve tür dizesini geçiyorsunuz, bunu deneyin

...

Teşekkürler, bunu yapacağım.

 
Alexey Viktorov :

Dosyayı döngüden önce açar ve kapatmadan sonuna kadar okursanız, döngünün her yinelemesinde bir sonraki satır okunur. Ve döngü tamamlandıktan sonra kapatabilirsiniz .


Çalışıyor, teşekkürler.

 
Artyom Trishkin :
Tüm bunların örneklerle anlatıldığı bir makalenin linkini verdim. Okumamış gibiydi...

Okudum ama dosyayı döngüden önce açacağımı asla tahmin edemezdim)

Belki yanlış okumuşumdur)