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

 
Artyom Trishkin :

Ve tahmin etmek zorunda değilsin. Neyin ve neden yapıldığını düşünmeniz ve anlamanız gerekir. Bir şey yazmanız gerektiğinde ve gerekmediğinde.

Düşünülür ve baskıya bir dize çıkarılmalıdır, bu nedenle herhangi bir sayısal değer bir dizeye dönüştürülmelidir.
Ancak bu örnek, derleyicinin aptal olduğunu gösterdi. Ve derleyicinin ne zaman ıskalayıp ne zaman ıskalayacağını nasıl tahmin edemezsiniz.

 
Roman :

Düşünülür ve baskıya bir dize çıkarılmalıdır, bu nedenle herhangi bir sayısal değer bir dizeye dönüştürülmelidir.
Ancak bu örnek, derleyicinin aptal olduğunu gösterdi. Ve derleyicinin ne zaman ıskalayıp ne zaman ıskalayacağını nasıl tahmin edemezsiniz.

Bir kez daha - buradaki kod - net olmayan ne?

not. Bu konuda ise:

 Print (( string )( uint ) PeriodSeconds ( PERIOD_MN1 )* 1000 )

... o zaman kontrol etmedim - sadece bir mesaja yeniden yazdım.

İşlevsel bir dizeye yayın yapın:

 Print ( string ( ( uint ) PeriodSeconds ( PERIOD_MN1 )* 1000 ) );
 

Arkadaşlar!

DLL'yi MQL'ye bağlama sorunu yaşıyorum. sorunumu anlatıyorum:

1. İlk olarak C# ile bir .dll kütüphanesi yazmaya çalıştım. C# ile yazıldığında dll içindeki tüm yöntemlerin kapalı olduğu gerçeği göz önüne alındığında MQL4'ün bu tür kütüphaneleri "yemediği" gerçeğiyle karşı karşıya kaldı. Soruna aktif olarak bir çözüm aramaya başladı. İnternette, NuGet'ten indirilen "DLL Dışa Aktarma " kitaplığını bağlamaya benzer birkaç seçenek buldum. Farklı şekillerde denendi, çalışmıyor. Ve aslında, "bugün çalışıyor, ama yarın çalışmıyor" ilkesine göre bu konuya "kırılgan" bir çözüme sahip olmak istemem. Bu şekilde denedim ve aslında pek çoğu ne kadar farklı:

using System.Runtime.InteropServices;
using RGiesecke.DllExport;

[DllExport( "Good" , CallingConvention.Cdecl)] // + заменял на просто [DllExport] - не помогает
public static string Good() {

    return "GHBBBGGDDDD !!!!! РУССКИЙ! :) " + 5 .ToString();
}


2. Büyük olasılıkla C++ ile kararlı çalışan bir kitaplık yazmam gerektiğini fark ettim. 1. seferde bağladım test istekleri sorunsuz geçti. Ancak bir yöntemle (bir DLL'den) bir metin mesajı (MQL'de) döndürmeye başladığımda, yeni bir sorunla karşılaştım - MQL'de cevabı " ????‡?- " şeklinde alıyorum. Mesajın kodunu çözmeye çalıştım ama işe yaramadı! Bir işlev parametresi aracılığıyla bir değer döndürmeye çalıştım - ayrıca " ?? " karakterleri. Bir çok şeyi kürekledim ve hala bir çözüm bulamadım. Bu seçenekte durdum ama sadece soru işaretleri veriyor:

 extern "C" __declspec(dllexport) char * __stdcall ToString( char * &str)
{
        str = " - 889 - dsa - просто!" ;
         return "--- Привет! ---" ;
}


şeklinde bir yanıt alıyorum:

Kod çözme yardımcı olmuyor ...


Esasen ihtiyacınız olan:

1) Bu soruna C# ile gerçek bir çözüm var mı? İstikrarlı, güzel bir çözüme ihtiyacımız var! Yarım ölçüler, şimdi uysalar bile, ancak yeni bir yapı ile düşebilirler - bu bir seçenek değildir.

2) C#'da çözüm yoksa C++'a geçiyoruz... Normalde kaliteden ödün vermeden her iki yönde nasıl mesaj gönderebilirim? (MQL - DLL - MQL). Hem MT4 hem de MT5'te eşit olarak çalışan bir seçeneğe ihtiyacımız var.

 
Artyom Trishkin :

Bir kez daha - buradaki kod - net olmayan ne?

H1'den önceki periyoda karşılık gelmeyen sabitlerin neden H1'den ve daha yüksekten döndürüldüğü açık değildir.

 Print (" PERIOD_M1 =", PERIOD_M1 );
Print (" PERIOD_M5 =", PERIOD_M5 );
Print (" PERIOD_M30 =", PERIOD_M30 );
Print (" PERIOD_H1 =", PERIOD_H1 );
 2020.04 . 10 03 : 47 : 03.627 VP (EPM20,H4)   PERIOD_M1 = 1
2020.04 . 10 03 : 47 : 03.627 VP (EPM20,H4)   PERIOD_M5 = 5
2020.04 . 10 03 : 47 : 03.627 VP (EPM20,H4)   PERIOD_M30 = 30
2020.04 . 10 03 : 47 : 03.627 VP (EPM20,H4)   PERIOD_H1 = 16385
2020.04 . 10 03 : 47 : 03.627 VP (EPM20,H4)   PERIOD_H4 = 16388

Aynısı, _Period değişkeni tarafından döndürülür.

 
Roman :

H1'den önceki gibi periyoda karşılık gelmeyen sabitlerin neden H1'den döndürüldüğü açık değildir.

Aynısı, _Period değişkeni tarafından döndürülür.

 
Artyom Trishkin :

Artyom deli olma))
Neden tam olarak TF değerleri M30'dan önce görüntüleniyor?
1
5
otuz

Ve 16385 H1'de başlar
Peki, mantıklı değil, önce yazışmaları tutanaklara iade edin, sonra ne olur.
Ve zaman çerçevesi dönüş değeri olarak _Period yardımındaki açıklamayla eşleşmiyor.

 
Roman :

Artyom deli olma))
Neden tam olarak TF değerleri M30'dan önce görüntüleniyor?
1
5
otuz

Ve 16385 H1'de başlar
Peki, mantıklı değil, önce yazışmaları tutanaklara iade edin, sonra ne olur.
Ve zaman çerçevesi dönüş değeri olarak _Period yardımındaki açıklamayla eşleşmiyor.

Zaman aralığı değeri . Dakika sayısı değil. Saniye sayısı değil, Baba Nyura'nın sahip olduğu kaz sayısı değil , zaman çerçevesinin değeri .

Документация по MQL5: Проверка состояния / Period
Документация по MQL5: Проверка состояния / Period
  • www.mql5.com
Проверка состояния / Period - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin :

Zaman aralığı değeri . Dakika sayısı değil. Saniye sayısı değil, Baba Nyura'nın sahip olduğu kaz sayısı değil , zaman çerçevesinin değeri .

Neyle ilgili, sabitlerin zaman çerçevesinin değerlerine eşit olması gerekiyor!
Ve yazışmaların mantıksal ve matematiksel anlamını taşır.
Çünkü bu değerler hesaplamalarda kullanılmaktadır.

M1 = 1
M5=5
M30=30
H1 = 60
H4= 240
D1= 1440

Aksi takdirde buldozerden döndürülen değerlerin anlamı kaybolur.
Yani bence bu bir bug.

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 
Artyom Trishkin :

Bütün bunları bu kadar uzun süre, hatta sabahları bile tekrar edecek sabrınız nasıl var merak ediyorum... Yine de uykusuz bir gecenin ardından bir sabahınız olmasına rağmen.)))

En azından bir günlüğüne, belgeleri dikkatli bir şekilde okuması için onu karantinaya gönderirdim. Kalay ... Zaten üst üste çeşitlerde böyle bir eşek Dillerden böyle saçmalık taşır. Ve bir kez daha tüm bunlar açıklandı ...

Service Desk'in bunu çözdüğünü hayal edin. Muhtemelen böyle dengeli olanlar yok, o yüzden kapattılar.