Hatalar, hatalar, sorular - sayfa 2101
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Merhaba! https://www.mql5.com/ru/articles/100 adresinden MQL5 öğrenmeye başladım. Kodu çalıştırdım, 4756 hatası aldım, belgelere baktım - daha kolay olmadı. Tamam, basit bir taneyle başlamayı düşündüm (Uyarı/Yazdır...). En önemli işlevlerden biri OrderSend'dir. OrderSend'in nasıl kullanılacağına dair forum\belgeleri aramaya başladım. Satın alma pozisyonu açmak için bir kod gördüğüm https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions bu makaleye rastladım. 4756 hatası alındı ve 10030 retcode kodu alındı. 10030 - bunun OrderSend özelliği olduğunu fark ettim, ancak bu özelliğin nasıl kullanılacağını anlamadım (başka birinin koduna baktım) ve en önemlisi ne için olduğunu. Sonra https://www.mql5.com/ru/docs/trading/ordersend dosyasını açtım, kodu kopyaladım, çalıştırdım, her şey yolundaydı, çalıştı.
Ama hala 4756 hatasının neden ortaya çıktığını ve 10030'un yanı sıra ondan nasıl kurtulacağını anlamıyorum.
Aradaki koda baktım
ve bu
Bence neredeyse aynılar, bu hataların ortaya çıktığı yerleri göremiyorum (4756 ve 10030). Parmağınızı gösterin ve açıklayın lütfen
Anında infaz
Anında Yürütme modunda (akış fiyatlarında işlem modu) bir pozisyon açmak için bir işlem emri. 9 alan zorunludur:
Sihir ve yorum alanlarını da ayarlayabilirsiniz.
Piyasa yürütme
Piyasa Yürütme modunda (piyasada işlem emirlerinin yürütülme modu) bir pozisyon açmak için bir işlem emri. 5 alan gereklidir:
Sihir ve yorum alanlarını da ayarlayabilirsiniz.
ne tür bir güncelleme geldi, 1736, içinde neler var, nerede okumalı?
Grafikte hangi gösterge arabelleğinin çizileceğini programlı olarak belirleme fırsatı vermeyi öneriyorum.
Bir tüccarın göstergelerini başlattığını varsayalım, hesaplama için kaç tampon kullanıldığını ve göstergeyi grafikte çizmek için kaç tane tampon kullanıldığını bilmiyoruz.
aracılığıyla özel göstergelere atıfta bulunarak
int ChartIndicatorGet (
uzun chart_id , // grafik kimliği
int alt_pencere // alt pencere numarası
const dize gösterge_kısa isim // göstergenin kısa adı
);
Ayrıca bir dizi çizim arabelleği talep edebiliriz
int ChartIndicatorGet (
uzun chart_id , // grafik kimliği
int alt_pencere // alt pencere numarası
const dize gösterge_kısa isim // göstergenin kısa adı
int & IndicatorVisualBuffer[] // çizim arabelleklerinin sayısı... );
Bu, çizelgede yüklü olan bilinmeyen göstergelerle çalışma yeteneğini genişletecektir.
Grafikte hangi gösterge arabelleğinin çizileceğini programlı olarak belirleme fırsatı vermeyi öneriyorum.
Bir tüccarın göstergelerini başlattığını varsayalım, hesaplama için kaç tampon kullanıldığını ve göstergeyi grafikte çizmek için kaç tane tampon kullanıldığını bilmiyoruz.
aracılığıyla göstergeye atıfta bulunarak
int ChartIndicatorGet (
uzun chart_id , // grafik kimliği
int alt_pencere // alt pencere numarası
const dize gösterge_kısa isim // göstergenin kısa adı
);
Ayrıca bir dizi çizim arabelleği talep edebiliriz
int ChartIndicatorGet (
uzun chart_id , // grafik kimliği
int alt_pencere // alt pencere numarası
const dize gösterge_kısa isim // göstergenin kısa adı
int & IndicatorVisualBuffer[] // çizim arabelleklerinin sayısı... );
Bu, çizelgede yüklü olan bilinmeyen göstergelerle çalışma yeteneğini genişletecektir.
Ne döndürür
ve eklemek ne işe yarar? Bir giriş parametresi eklemenizi ve yanıt olarak aynı gösterge tanıtıcısını almanızı önerirsiniz ...
Ve eğer zorlaştırmıyorsa, böyle bir ihtiyaç hangi amaçlarla ortaya çıktı? İroni olmayan bir soru. Sonuçta, eğer bir şey teklif edildiyse, o zaman, bence, önerilenin gerekliliği konusunda ikna edici argümanlar getirmek gerekir.
Ne döndürür
ve eklemek ne işe yarar? Bir giriş parametresi eklemenizi ve yanıt olarak aynı gösterge tanıtıcısını almanızı önerirsiniz ...
Ve eğer zorlaştırmıyorsa, böyle bir ihtiyaç hangi amaçlarla ortaya çıktı? İroni olmayan bir soru. Sonuçta, eğer bir şey teklif edildiyse, o zaman, bence, önerilenin gerekliliği konusunda ikna edici argümanlar getirmek gerekir.
Kullanıcı herhangi bir gösterge koyar.
EA otomatik olarak onu bulur ve bir sinyal almak için arabellek verilerini alır.
Bunu şimdi uygulamak için iCustom almanız gerekir ve eğer bir şekilde bir parametre listesi yazabilirsek, o zaman arabelleklerde bir sorun var ....
Kopyalamayı kullanarak arabellek sayısını programlı olarak hesaplayabilirsiniz, ancak hangisinin programlı olarak çizdiğini anlamak imkansızdır ...
Kullanıcı herhangi bir gösterge koyar.
EA otomatik olarak onu bulur ve bir sinyal almak için arabellek verilerini alır.
Bunu şimdi uygulamak için, iCustom almamız gerekiyor ve bir şekilde bir parametre listesi yazabilirsek, o zaman arabelleklerde bir sorun var ....
Kopyalamayı kullanarak arabellek sayısını programlı olarak hesaplayabilirsiniz, ancak hangisinin programlı olarak çizdiğini anlamak imkansızdır ...
Neden imkansız? INDICATOR_CALCULATIONS arabelleğini iCustom() aracılığıyla almak mümkün müdür?
İlginç bir soru, ancak bu konuda tartışmak için değil. Şahsen, bunun programcının çalışmasını bir şekilde iyileştirebileceği veya kolaylaştırabileceği konusunda şüphelerim var. Uygulamaları için çok farklı göstergeler ve çok farklı koşullar mevcuttur. Ardından , grafik yapının türünü ve ardından başka bir şeyi belirleyebilmeyi ve İstek Listesinin bir kartopu gibi nasıl büyüyeceğini sormalısınız.
Neden imkansız? INDICATOR_CALCULATIONS arabelleğini iCustom() aracılığıyla almak mümkün müdür?
İlginç bir soru, ancak bu konuda tartışmak için değil. Şahsen, bunun programcının çalışmasını bir şekilde iyileştirebileceği veya kolaylaştırabileceği konusunda şüphelerim var. Uygulamaları için çok farklı göstergeler ve çok farklı koşullar mevcuttur. Ardından , grafik yapının türünü ve ardından başka bir şeyi belirleyebilmeyi ve İstek Listesinin bir kartopu gibi nasıl büyüyeceğini sormalısınız.
Teorik olarak indikatöre varsayılan olarak ne konuyor, şimdi programcının kodundan bahsetmiyorum, dışarıdan temin edilebilir olmalı... Tamponlar, sayıları, yapım şekli, rengi ve diğer standartlar...
İşte karşılaştığım sorun:
Grafik kimliğini 1000 veya 10000'e bölmenin geri kalanını sihir olarak kullanmaya karar verdim, genel olarak önemli değil.
Ama bazı nedenlerden dolayı, farklı ChartID() ile, bölümün geri kalanı birdenbire aynı çıkıyor. soru: neden?
Komut dosyasını kontrol edin
Sonuç
Sırasıyla 74907 ve 74908 görmesi bekleniyordu, çünkü bölümün geri kalanı tam olarak bu olmalı.
Ve bu sorunun cevabını duymak isterim.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
Hatalar, hatalar, sorular
Alexey Viktorov , 2018.01.09 14:21
MT5 test cihazında "Düzenleme alanı" OBJ_EDIT nesnesi, içerdiği değerin düzenlenmesine izin vermiyor. Bu tasarımdan mı yoksa bir hata mı?
Terminallerde ve test cihazında MT4 düzenlenir, ancak test cihazında MT5 istemez , nesneyi oluştururken programlı olarak girilen değer tamamen kaybolur.
Ama bazı nedenlerden dolayı, farklı ChartID() ile, bölümün geri kalanı aniden aynı çıkıyor. soru: neden?
Çünkü fmod girişi çifttir. double çok sayıda tamsayı depolayamaz. Örneğin, durumunuz:
böyle yap
Örnek olarak float kullanarak, double özelliğini hızlıca anlayabilirsiniz.
Sonuç
ZY double, tüm int-aralığın bilgisini kaybetmez, uzun süre öyle değildir.
Çünkü fmod girişi çifttir. double çok sayıda tamsayı depolayamaz. Örneğin, durumunuz:
böyle yap
Tabii ki, şimdi önerilen seçeneği kontrol edeceğim, ancak böyle bir doğrulama kodum da vardı.
sonuç
Bu, değer kesmenin gerçekleşmemesi gerektiğini gösterir.
Ancak önerilen seçeneği biraz değiştirerek bu seçeneği işaretledim.
ve beklenen seçeneği aldım
başka bir soru belirir
MathMod fmod ile aynıysa , iki sayının bölümünden kalan gerçek değeri döndürür. Ve belgelere göre %
Kalan dakika = süre % 60 ;
o zaman neden fark?