10. MQL5: "Akıllı" işlevlerin içe aktarılmasıyla .NET kitaplıkları için yerel destek eklendi. Artık .NET kitaplıkları özel sarmalayıcılar yazmadan kullanılabilir - MetaEditor bununla ilgilenir.
C# üzerine yazmaya teşvik etmiyorum. Sadece örtük dönüşümün faydaları şüphelidir (IMHO, şeker, artık yok), bu stratejilerin karlılığını artırmaz. Birisi bunun stratejileri kodlamada nasıl bu kadar yardımcı olacağını açıklarsa, yeni bir şey öğrenmekten memnuniyet duyacağım.
Vasiliy Sokolov : Bu, stratejilerin karlılığını artırmaz.
Programlama tekniklerini tartışırken stratejilerin karlılığından bahsetmek oldukça iç karartıcı.
Vasili Sokolov : Birisi bunun kodlamaya nasıl bu kadar yardımcı olacağını açıklarsa, yeni bir şey öğrenmekten memnuniyet duyacağım.
Dolayısıyla diziyi çok boyutlu yapmamak bile normaldir. Farklı değer türlerine sahip bir diziden bahsetmiyorum bile. Biriyle bile yapamazsınız, çünkü böyle bir kod mql'ye sığmaz:
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
Pekala, düz. d=dizi[5] şunları yapabilirsiniz:
template < typename T>
class MainArray
{
private :
T m_items[];
int m_curr;
public :
MainArray()
{
ArrayResize (m_items, 16 );
m_curr = 0 ;
}
void Add(T item)
{
m_items[m_curr++] = item;
}
T operator []( int index)
{
return m_items[index];
}
};
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
MainArray< double > array;
array.Add( 123.456 );
double v = array[ 0 ];printf (( string )v);
}
Eğer sıkıldıysanız dizi[3] = 4.00123; Ama yine de oldukça okunaklı ve kullanışlı.
Eğer sıkıldıysanız dizi[3] = 4.00123; Ama yine de oldukça okunaklı ve kullanışlı.
Evet, d=dizi[5] mümkündür. ancak o zaman [5]=d dizisini yapamazsınız. = yerine %= yapmak oldukça mümkün olsa da. sorun değil, aynı zamanda simge size her şeyin hangi yerden yapıldığını hatırlatacaktır))
Evet, d=dizi[5] mümkündür. ancak o zaman dizi[5]=d yapamazsınız . = yerine %= yapmak oldukça mümkün olsa da. sorun değil, aynı zamanda simge size her şeyin hangi yerden yapıldığını hatırlatacaktır))
Eğer gerçekten istiyorsan, yapabilirsin
#property strict#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280#define PRINT(A) :: Print ( #A + " = " + ( string )(A));
voidOnStart ( void )
{
// Работа со стандартными типамиcolor Color = C'241,248,255' ;
PRINT(_R(Color)[( uchar ) 1 ]) // Green-составляющая цвета - 248_W(Color)[ 2 ] = ( uchar ) 230 ; // Записали по смещению 2 значение (uchar)230.
PRINT(Color) // Убедились, что Color теперь C'241,248,230'// Работа со строкамиstring Str = "abcd" ;
_W(Str)[ 2 ] = "98765" ; // Побайтовая запись строки в строку со смещением 2
PRINT(Str)
string StrArray[] = { "123" , "45" , "6789" };
_W(Str) = StrArray; // Записали в строку строковый массив
PRINT(Str)
_W(Str)[ 3 ] = ( uchar ) 0 ; // В байт со смещением 3 записали ноль, тем самым отбрезав строку (длина - 3 ANSI-символа (4 байта))
PRINT(Str);
}
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
Eh, insanların sorunları var))) Alışveriş, ben böyle yaşadım!
Bu arada, d=array[5].to_double() yazmak d=(double)array[5] yazmaktan çok daha kolay, sadece noktaya basın. Ama kolay yollar aramıyoruz...
Hatırladığım kadarıyla, C# mql ile iyi arkadaş değil
https://www.mql5.com/ru/forum/285631
10. MQL5: "Akıllı" işlevlerin içe aktarılmasıyla .NET kitaplıkları için yerel destek eklendi. Artık .NET kitaplıkları özel sarmalayıcılar yazmadan kullanılabilir - MetaEditor bununla ilgilenir.
Bu, stratejilerin karlılığını artırmaz.
Programlama tekniklerini tartışırken stratejilerin karlılığından bahsetmek oldukça iç karartıcı.
Birisi bunun kodlamaya nasıl bu kadar yardımcı olacağını açıklarsa, yeni bir şey öğrenmekten memnuniyet duyacağım.
Dolayısıyla diziyi çok boyutlu yapmamak bile normaldir. Farklı değer türlerine sahip bir diziden bahsetmiyorum bile. Biriyle bile yapamazsınız, çünkü böyle bir kod mql'ye sığmaz:
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
...
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
Pekala, düz. d=dizi[5] şunları yapabilirsiniz:
Eğer sıkıldıysanız dizi[3] = 4.00123; Ama yine de oldukça okunaklı ve kullanışlı.
Pekala, düz. d=dizi[5] şunları yapabilirsiniz:
Eğer sıkıldıysanız dizi[3] = 4.00123; Ama yine de oldukça okunaklı ve kullanışlı.
Evet, d=dizi[5] mümkündür. ancak o zaman [5]=d dizisini yapamazsınız. = yerine %= yapmak oldukça mümkün olsa da. sorun değil, aynı zamanda simge size her şeyin hangi yerden yapıldığını hatırlatacaktır))
Evet, d=dizi[5] mümkündür. ancak o zaman dizi[5]=d yapamazsınız . = yerine %= yapmak oldukça mümkün olsa da. sorun değil, aynı zamanda simge size her şeyin hangi yerden yapıldığını hatırlatacaktır))
Eğer gerçekten istiyorsan, yapabilirsin
vb.
İlk başta ben de eleştireldim ve sonra düşündüm - kendime bir kullanım bulurdum:
Evet, kahretsin, üç dört yıl önce parantez operatörünü ve tip döküm operatörünü istemiştim.
daha iyisini yapıp yapamayacağını sor
...
Elbette buraya d=array[5].to_double() yazabilir, olması gerektiği gibi davranabilir ve çarpık kodunuzun keyfini çıkarabilirsiniz. Ancak , döküm işlemlerinin aşırı yüklenmesine hala izin verilseydi, herhangi birinin böyle bir d=dizi[5] gösterimini tercih etmesi olası değildir.
Eh, insanların sorunları var))) Alışveriş, ben böyle yaşadım!
Bu arada, d=array[5].to_double() yazmak d=(double)array[ 5] yazmaktan çok daha kolay, sadece noktaya basın. Ama kolay yollar aramıyoruz...