Hatalar, hatalar, sorular - sayfa 106

 
Rosh :

Bu muhtemelen MarketWatch'ta olmayan semboller içindir, çünkü SymbolName şöyle der:

Beklenmeyen sonucun elde edildiği sembolün adını yazdırın ve MarketWatch'taki listeyle karşılaştırın.
Tüm semboller MarketWatch'ta mevcuttur, özellikle #AA tipi araçlar için sıfır döndürür, komut dosyasında özellikle false olarak ayarlanmıştır
 string symbol= SymbolName (i,false);
başka bir şey keşfettim, MarketWatch penceresinde herhangi bir sembol yoksa, o zaman fonksiyon
 if ( SymbolInfoTick (symbol,last_tick))
4302 hatasını döndürür, yardım, bu işlevin başarılı bir şekilde çalışması için MarketWatch penceresinde sembolün bulunması gerektiğini göstermez
 
sergey1294 :
...yardımda, bu işlevin başarılı bir şekilde çalışması için MarketWatch penceresinde enstrümanın bulunmasının gerekli olduğu belirtilmemiştir.

Yardımın gerçekten normal örneklerle tamamlanması ve "darboğazlar" belirtilmesi gerekiyor.

not

Ayrıca, dilde değişiklik yaptıktan sonra veritabanındaki bazı uzmanların çalışmayı durdurduğu (veya derleme sırasında hata verdiği) durumlar sıklıkla ortaya çıkar.

 

Bugün fark edildi...MT5(access.metatrader5.com:443)

EUR/JPY Günlük:

örneğin GBPJPY, Günlük: Burada her şey yolunda.

Ve işte EURJPY, Daily one DC MT4 ekranı:

Fark çıplak gözle görülebilir....

Nasıl düzeltilir?

 
Rosh :

Bu muhtemelen MarketWatch'ta olmayan semboller içindir, çünkü SymbolName şöyle der:

Beklenmeyen sonucun elde edildiği sembolün adını yazdırın ve MarketWatch'taki listeyle karşılaştırın.

MarketWatch'ta olmayan semboller için SymbolInfoTick() işlevi, ERR_MARKET_SELECT_ERROR " MarketWatch'ta sembol seçilmedi" (kod 4302) hatasını döndürür. MarketWatch'ta yalnızca EURUSD ve GBPUSD seçili. Bir temel çalıştırma, seçilmemiş semboller için SymbolInfoTick() öğesinin bir ERR_MARKET_SELECT_ERROR hatası döndürdüğünü gösterir :

IS       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
MF       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - EURUSD
RR       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
RG       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = EUR
QM       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = EUR
CH       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для покупки = 1271.23
QG       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для продажи = 1271.05
CQ       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
JQ       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - GBPUSD
HQ       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
EH       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = GBP
RN       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = GBP
MI       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для покупки = 1553.53
DP       0        1 (EURUSD,M15)   01 : 53 : 21         Маржа для продажи = 1553.25
MG       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
LR       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - USDCHF
NG       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
NJ       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = USD
EQ       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = USD
RI       0        1 (EURUSD,M15)   01 : 53 : 21          SymbolInfoTick () failed, error = 4302
GL       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************
PE       0        1 (EURUSD,M15)   01 : 53 : 21         Инструмент - USDJPY
DL       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта депозита = USD
DF       0        1 (EURUSD,M15)   01 : 53 : 21         Базовая валюта = USD
OL       0        1 (EURUSD,M15)   01 : 53 : 21         Валюта маржи = USD
HL       0        1 (EURUSD,M15)   01 : 53 : 21          SymbolInfoTick () failed, error = 4302
QH       0        1 (EURUSD,M15)   01 : 53 : 21         ************************************************

...

Bu arada, günlükteki son veri bloğu sergey1294 diğerlerinden farklıdır: birincisi, SymbolInfoTick() bu sefer aynı hata kodunu döndürür ve ikincisi, bu veri bloğundaki enstrüman, temel para birimi ve marj para biriminin bazı garip isimleri olduğunu düşünmüyor musunuz?

Bu bir hata mı? Bu tuhaflığı hiç fark ettiniz mi?

CE       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         ************************************************
IG       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Инструмент - 
LS       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Валюта депозита = USD
DD       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Базовая валюта = 
CL       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27         Валюта маржи = 
RG       0        OrderCalcMargin (EURUSD,M1)     20 : 44 : 27          SymbolInfoTick () failed, error = 4302
 
Son veri bloğuna gelince, bu sadece yineleme döngüsü biraz bozuldu ve son veri talebinde var olmayan bir araca erişildi, bu nedenle para yatırma para birimi dışındaki tüm alanlar boş
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
sergey1294 :
Son veri bloğuna gelince, bu sadece yineleme döngüsü biraz bozuldu ve son veri talebinde var olmayan bir araca erişildi, bu nedenle para yatırma para birimi dışındaki tüm alanlar boş

Neye benziyor? Yani log, verilen kodun versiyonundan değil mi?

Koda bakılırsa, orada her şey yolunda.

Veya SymbolsTotal() bir değer döndürdü ve komut dosyası çalıştırması sırasında, döngünün ortasında bir yerde, korkunç bir kazayla, aracı, sunucu bölümünü ayarladı, mevcut olanlardan bir sembolü kaldırdı ve SymbolsTotal() işlevi - betiğini talep et - yeni bir değer bir eksik döndürürdü, ancak döngü sonlandırma koşulu toplam değişkende depolanan eski değere dayandığından, karşılık gelen işlevler şimdi var olmayan bir değere erişirken son yinelemede boş dizeler döndürdü mü? karakter? :)

Şimdiye kadar, bunun gerçekleşmesi için sadece böyle bir senaryo düşünüldü. :)

 
Nasıl oldu bilmiyorum ama bir daha olmayacak
 
simpleton :

... Ardından, hesaplanan değer açıkça ulong türünde bir değere dönüştürülür. Tam olarak ulong'a, çünkü verilen değerin negatif olmadığına dair bir garanti var.

Bir tamsayı tipine döküm sürecinde, gerçek tipin kesirli kısmı atılır. En yakına yuvarlama değil, serbest marjın izin verdiği lotların maksimum değerinin artmayacağını garanti eden kesirli kısmın silinmesidir. Yani, tam olarak ihtiyacımız olan şey.

simpleton , ben de benzer bir yol izledim, ancak int yazmak için açık bir döküm kullandım. Mümkün olan maksimum lot büyüklüğünün ya komisyoncu/bayi tarafından ya da özkaynak büyüklüğü ile sınırlandırılacağı gerçeğinden yola çıktım. Bu bağlamda int kullanımı yeterli olacaktır. Bu yaklaşımla ilgili herhangi bir tuzak olduğunu düşünüyor musunuz ("aşağıdan" int ile yuvarlama)?
 

geliştiriciler

Ve parametrelerin komut dosyalarında görünmesi için nasıl yapılır (aksi takdirde kodu sürekli olarak yeni koşullara uyacak şekilde değiştirmek çok tembel olur)?...

 
Interesting :

geliştiriciler

Ve parametrelerin komut dosyalarında görünmesi için nasıl yapılır (aksi takdirde kodu sürekli olarak yeni koşullara uyacak şekilde değiştirmek çok tembel olur)?...


 #property script_show_inputs