Hatalar, hatalar, sorular - sayfa 3079

 
Ekran görüntüsü markette yüklenmiyor. İki tarayıcı ile denendi.
 
Dmitry Fedoseev # :
Ekran görüntüsü markette yüklenmiyor. İki tarayıcı ile denendi.

Ben de..

 

Tünaydın! Ne yanlış olabilir? SQL Server'a yazmak için dll kullanıyorum ( https://www.mql5.com/ru/articles/2895 makalesinden bir örnek).

En fazla 5 iş parçacığı kullanırsam, veriler doğru şekilde kaydedilir. Daha fazla iş parçacığı kullanıyorum, hemen "İşlenmeyen istisna 0xE0434352" hatası

Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
Интеграция эксперта на MQL и базы данных (SQL Server, .NET и C#)
  • www.mql5.com
Статья описывает, как добавить в экспертов на MQL5 возможность работы с сервером баз данных Microsoft SQL Server. Используется импорт функций из DLL. Для создания DLL применяется платформа Microsoft .NET и язык C#. Используемые в статье методы с незначительными изменениями подходят и для экспертов, написанных на MQL4.
Dosyalar:
SQL.mqh  19 kb
OHLC_1.mq5  5 kb
 
SEM # :

Tünaydın! Ne yanlış olabilir? SQL Server'a yazmak için dll kullanıyorum ( https://www.mql5.com/ru/articles/2895 makalesinden bir örnek).

En fazla 5 iş parçacığı kullanırsam, veriler doğru şekilde kaydedilir. Daha fazla iş parçacığı kullanıyorum, hemen "İşlenmeyen istisna 0xE0434352" hatası

HER ŞEYİ tüm arabirim DLL işlevlerinde bir deneyin yakalamaya sarın, "işlenmeyen özel durum" un arkasında ne olduğunu yakalayın ve günlüğe yazın ..

tüm istisnaları yakalamak, tüm artı çağrıları denemeye sarmak genellikle iyi bir fikirdir. MQL belgeleri bile doğrudan diyor ki - DLL'ler istisna atmamalı, C++ değil

özellikle, conn.Close makalesinde ve yeni SqlConnection , "istisnaların yakalanması" kapsamına girmez ve potansiyel olarak onu atabilir

 
Dmitry Fedoseev # :
Ekran görüntüsü markette yüklenmiyor. İki tarayıcı ile denendi.
Yuri Emeliyanov # :

Ben de..

Basit sürükle ve bırak denediniz mi?

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Pazar ve matematik

Alexey Viktorov , 2021.08.19 21:01

Resmi metnin içine sürükleyerek bir resim eklemeyi deneyin.

Ben sadece danışmanda vitrinden gizlenmiş değişiklikler yapmaya çalıştım, karşıma çıkan ilk resmi sürükledim, işe yaradı.



 
Alexey Viktorov # :

Basit bir sürükle ve bırak yöntemi denediniz mi?


5 resimden sadece biri eklendi

 
Andrei Trukhanovich # :

Uzun zamandır böyle. mql dizeleri, işlevlerde de bir dize içindeki ve değişmez değerlerdeki boş karakterleri gerçekten sevmez.

Tek mantıklı yol, boş sonlandırılmış üç diziyi bir diziye dökmektir.

Onlar. bu davranış şimdi olduğu gibi birkaç yıl önce kasıtlı olarak yapıldı. Nedenlerini bilmiyorum.

Her yerde düşmanlar

 
Maxim Kuznetsov # :

HER ŞEYİ tüm arabirim DLL işlevlerinde bir deneyin yakalamaya sarın, "işlenmeyen özel durum" un arkasında ne olduğunu yakalayın ve günlüğe yazın ..

tüm istisnaları yakalamak, tüm artı çağrıları denemeye sarmak genellikle iyi bir fikirdir. MQL belgeleri bile doğrudan diyor ki - DLL'ler istisna atmamalı, C++ değil

özellikle, conn.Close makalesinde ve yeni SqlConnection , "istisnaların yakalanması" kapsamına girmez ve potansiyel olarak onu atabilir

Teşekkür ederim! Kontrol edildi, paylaşılan değişkenlere erişilirken hata oluştu. Yazar da bu konuda yazdı

Demo projesinin çok önemli bir sınırlaması olduğuna dikkat edilmelidir: bir MetaTrader terminalinde veritabanı ile çalışan yalnızca bir Uzman Danışman çalıştırmanıza izin verir. Mesele şu ki, tüm Uzman Danışmanlar yüklenen DLL'nin bir kopyasını kullanıyor. Sınıfımız statik yapıldığından, çalışan tüm Expert Advisor'lar için aynı olacaktır. Değişkenler de paylaşılacaktır. Birkaç uzman çalıştırırsanız, hepsi aynı bağlantıyı ve hepsi için tek bir komut nesnesini kullanır. Birkaç uzman aynı anda bu nesnelere erişmeye çalışırsa, sorunlar ortaya çıkabilir.


Soru: Bir dll'ye çok iş parçacıklı erişimi nasıl uygulayabilirim (her işlev çağrısı için ayrı bir örnek ve her çağrı için yerel değişkenler)?

 
2020.08 . 17 01 : 22 : 44    9842 : 0.8953065 > 0.92137
2020.08 . 17 01 : 22 : 44    9843 : 0.8953065 > 0.92106
2020.08 . 17 01 : 22 : 44    9844 : 0.8953065 > 0.92075
2020.08 . 17 01 : 22 : 44    9845 : 0.8953065 > 0.92045
2020.08 . 17 01 : 22 : 44    9846 : 0.8953065 > 0.92014
2020.08 . 17 01 : 22 : 44    9847 : 0.8953065 > 0.91983
        

2020.08 . 17 01 : 22 : 48    9842 : 0.8953065 > 0.92137
2020.08 . 17 01 : 22 : 48    9843 : 0.8953065 > 0.92106
2020.08 . 17 01 : 22 : 48    9844 : 1.7189865 > 0.92075
2020.08 . 17 01 : 22 : 48    Create GlobalVariables for SELL 1.7189865 > 0.92075
2020.08 . 17 01 : 22 : 48    9845 : 0.8953065 > 0.92045
2020.08 . 17 01 : 22 : 48    9846 : 0.8953065 > 0.92014
2020.08 . 17 01 : 22 : 48    9847 : 0.8953065 > 0.91983

MT5 test cihazında sorunu gözlemliyorum.

Birkaç para birimiyle çalışırken, başka bir para birimindeki veriler periyodik olarak değiştirilir. Test cihazını kontrol edin. Düzeltin lütfen.

İlk değer SymbolInfoDouble'dır (sembol,SYMBOL_BID);

 2020.08 . 17 01 : 11 : 38    9877 (EURGBP): 0.8952471000000001 > 0.91079
2020.08 . 17 01 : 11 : 38    9878 (EURGBP): 0.8952471000000001 > 0.91048
2020.08 . 17 01 : 11 : 38    9879 (EURGBP): 0.8952471000000001 > 0.91017
2020.08 . 17 01 : 11 : 38    9880 (EURGBP): 1.7184123 > 0.90987
2020.08 . 17 01 : 11 : 38    Create GlobalVariables for SELL 1.7184123 > 0.90987
2020.08 . 17 01 : 11 : 38    9881 (EURGBP): 0.8952471000000001 > 0.90956
2020.08 . 17 01 : 11 : 38    9882 (EURGBP): 0.8952471000000001 > 0.90925
2020.08 . 17 01 : 11 : 38    9883 (EURGBP): 0.8952471000000001 > 0.90894
2020.08 . 17 01 : 11 : 38    9884 (EURGBP): 0.8952471000000001 > 0.90864

Sanki şu anda SymbolInfoDouble (EURGBP,SYMBOL_BID) fiyatlarını alamıyormuş gibi; ve değeri çalışan başka bir çiftten alır. Alıntının doğru olup olmadığını kontrol etmenin bir yolu var mı?

 
SEM # :

Teşekkür ederim! Kontrol edildi, paylaşılan değişkenlere erişilirken hata oluştu. Yazar da bu konuda yazdı

Demo projesinin çok önemli bir sınırlaması olduğuna dikkat edilmelidir: bir MetaTrader terminalinde veritabanı ile çalışan yalnızca bir Uzman Danışman çalıştırmanıza izin verir. Mesele şu ki, tüm Uzman Danışmanlar yüklenen DLL'nin bir kopyasını kullanıyor. Sınıfımız statik yapıldığından, çalışan tüm Expert Advisor'lar için aynı olacaktır. Değişkenler de paylaşılacaktır. Birkaç uzman çalıştırırsanız, hepsi aynı bağlantıyı ve hepsi için tek bir komut nesnesini kullanır. Birkaç uzman aynı anda bu nesnelere erişmeye çalışırsa, sorunlar ortaya çıkabilir.


Soru: Bir dll'ye çok iş parçacıklı erişimi nasıl uygulayabilirim (her işlev çağrısı için ayrı bir örnek ve her çağrı için yerel değişkenler)?

.NET'te neredeyse hiçbir şey yok. Sınıf, makalenin yazarı kötü olduğu için değil, Sharp sınıfları bu şekilde içe aktarıldığı için statik yapılır.

Bence iki yol var: 1) (uzun süre yaz, hızlı çalışıyor) C++ ile yeniden yaz ve .NET'e dokunma artık threadler aynı anda dolaşmıyor

Sharp önemliyse, başka bir seçenek de danışman<->connection_id paketini ve her danışmanın kendi bağlantısıyla çalıştığını hatırlamak için DLL düzeyinde bağlantı havuzlarını kontrol etmek için yeniden yazmaktır;
Burada, .net için, herhangi bir MQL yapısında veya skalerde keskin bir nesneye referans alıp saklamanın ve ileri geri iletmenin mümkün olup olmadığını size söylemeyeceğim. Yani, normal bir C++ işaretçisi ile çalışmak için. Mümkünse, her şey basitleştirilmiştir.