[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 364
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
SW. alsu, 'n' değişkeni kodunuzda net değil. Bu alanların sayısıysa, önceden bilinmiyorsa nasıl bulunur?
ama sonuçta bir dosyaya bir şey mi yazacaksınız? Yoksa CSV yapısının önceden bilinmediğini mi kastediyorsunuz? O zaman, alanların sayısını veya türlerini (dize, tamsayı, kayan, zaman) veya anlamsal yükü bilmiyorsak, buna eklemenin anlamı nedir?
ama sonuçta bir dosyaya bir şey mi yazacaksınız? Yoksa CSV yapısının önceden bilinmediğini mi kastediyorsunuz? O zaman, alanların sayısını veya türlerini (dize, tamsayı, kayan, zaman) veya anlamsal yükü bilmiyorsak, buna eklemenin anlamı nedir?
Görevim basit - mevcut enstrümanın alıntılarını başka bir uygulamaya aktarmak için bir csv dosyasına yazmak. (int i=Bars-1; i>=0; i--) için veri toplama döngüsü koşulu altında her şey başarıyla yazılmıştır. Ancak aşağıdakileri kullanarak kodu optimize ederseniz:
int counted_bars=IndicatorCounted(), limit;
if (counted_bars==0) limit=Bars-1;
if (counted_bars>0) limit=Bars-counted_bars-1;
for(int i=limit; i>=0; i--), ile
ve int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_WRITE, ","); yerine
insert int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_READ|FILE_WRITE, ",");
daha sonra dosyanın başına sıfır çubuğu yazılır. FileSeek() kullanırsanız, satırlar her onay işaretiyle eklenir, ancak mevcut çubukta dosyanın son satırının üzerine yazılması gerekir.
Umarım şimdi her şey açıktır. Ancak her ihtimale karşı, optimize edilmemiş çalışma kodunun tamamı:
Görevim basit - mevcut enstrümanın alıntılarını başka bir uygulamaya aktarmak için bir csv dosyasına yazmak. (int i=Bars-1; i>=0; i--) için veri toplama döngüsü koşulu altında her şey başarıyla yazılmıştır. Ancak aşağıdakileri kullanarak kodu optimize ederseniz:
int counted_bars=IndicatorCounted(), limit;
if (counted_bars==0) limit=Bars-1;
if (counted_bars>0) limit=Bars-counted_bars-1;
for(int i=limit; i>=0; i--), ile
ve int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_WRITE, ","); yerine
insert int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_READ|FILE_WRITE, ",");
daha sonra dosyanın başına sıfır çubuğu yazılır. FileSeek() kullanırsanız, satırlar her onay işaretiyle eklenir, ancak mevcut çubukta dosyanın son satırının üzerine yazılması gerekir.
Umarım şimdi her şey açıktır. Ancak her ihtimale karşı, optimize edilmemiş çalışma kodunun tamamı:
dosyanın başındaki mevcut konumu hatırlamak yerine.
Bir çubuk değişikliği ile değiştirin.
dosyanın başındaki mevcut konumu hatırlamak yerine.
Bir çubuk değişikliği ile değiştirin.
Sizin için zor değilse, kodda nasıl görünecek?
Ancak, mevcut komut dosyasından diğer çizelgelerde asılı olan tüm komut dosyalarını devre dışı bırakmak için böyle bir özellik olup olmadığını söyleyebilir misiniz? Ya da daha iyisi, terminali tamamen kesin.
Aslında bu, içerilen betiklerden biri bir kerdyk'in yaklaştığını "fark ederse" hem kendisinin hem de diğer herkesin işini durdurması amacıyla yapılır. Yukarıdaki durumların uygulanması hala imkansızsa, bu nasıl yapılabilir?
Görevim basit - mevcut enstrümanın alıntılarını başka bir uygulamaya aktarmak için bir csv dosyasına yazmak. (int i=Bars-1; i>=0; i--) için veri toplama döngüsü koşulu altında her şey başarıyla yazılmıştır. Ancak aşağıdakileri kullanarak kodu optimize ederseniz:
int counted_bars=IndicatorCounted(), limit;
if (counted_bars==0) limit=Bars-1;
if (counted_bars>0) limit=Bars-counted_bars-1;
for(int i=limit; i>=0; i--), ile
ve int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_WRITE, ","); yerine
insert int f=FileOpen(Symbol()+" "+Period()+".csv", FILE_CSV|FILE_READ|FILE_WRITE, ",");
daha sonra dosyanın başına sıfır çubuğu yazılır. FileSeek() kullanırsanız, satırlar her onay işaretiyle eklenir, ancak mevcut çubukta dosyanın son satırının üzerine yazılması gerekir.
Umarım şimdi her şey açıktır. Ancak her ihtimale karşı, optimize edilmemiş çalışma kodunun tamamı:
sorun ne anlamıyorum
İşte metninizden bir alıntı, kenar boşluklarını sayın:
Sembol, dönem, tarih, saat, OHLCV - CSV'de toplam 9 alan. Yukarıda verdiğim listede, hepsi bir dizi olarak okunuyor, ancak bunun bir önemi yok, çünkü bizim için önemli olan değerleri değil, bir satırdaki sayılarıdır.
n yerine 9 koyun ve kullanın, alt program evrenseldir.
Aynı zamanda, Sorento'nun haklı olarak belirttiği gibi, her girişten önce işaretçinin konumunu hatırlayacak bir değişken girebilirsiniz, ardından bir sonrakinden önce, gerekirse imleci son girişin başlangıcına taşıyabilirsiniz ve üzerine yaz. Bu durumda, dosyanın açılışını sırasıyla init () ve kapanışını deinit () konumuna taşımanız gerektiğini unutmayın. f değişkeni global düzeyde bildirilmelidir.
Her şey mümkün olduğunca ayrıntılı görünüyor. bence ödev :)
Ancak, mevcut komut dosyasından diğer çizelgelerde asılı olan tüm komut dosyalarını devre dışı bırakmak için böyle bir özellik olup olmadığını söyleyebilir misiniz? Ya da daha iyisi, terminali tamamen kesin.
Aslında bu, içerilen betiklerden biri bir kerdyk'in yaklaştığını "fark ederse" hem kendisinin hem de diğer herkesin işini durdurması amacıyla yapılır. Yukarıdaki durumların uygulanması hala imkansızsa, bu nasıl yapılabilir?
Kerdyk'i "ateşleyen" komut dosyasından, diğer komut dosyalarının okuyabileceği ve zamanında ellerini yıkayabileceği global bir değişken biçiminde bir bayrak ayarlardım.
alsu писал(а) >>
Her şey mümkün olduğunca ayrıntılı görünüyor. bence ödev :)
Cevap için teşekkürler deneyip sonuçları yazacağım.