Daha az kod, daha fazla kullanım Uzman Danışman yazmak - sayfa 5

 
Vladimir Simakov :

Ve çıktı olarak ne elde etmek istiyorsunuz? Açıkçası anlamadım. İlk başta bir çerçevenin düşündüğünü düşündüm, ama hayır, göstergeler, siparişler, standart karar verme algoritmaları için sarmalayıcı sınıfı yok, hiçbir şey. Aşağıdaki yapılar çok daha okunabilir olsa da: fast.Get(2)>=slow.Get(1); (örneğin bu benim) ve beyan:

CMA hızlı=yeni CMA(NULL,0,12,...);

CMA yavaş=yeni CMA(NULL,0,100,...);

Bu tartışılabilir, ancak siz, IMHO, zamanı işaretliyorsunuz.

ayrıca örneğin fast.Get(2)>=slow.Get(1) yerine; oldukça yasal ve çalışma kodu:

table[FAST_MA][1] >=table[SLOW_MA][2]

iş, excel ile bir elektronik tablo gibi gider. Veriler (formüller) birbirine bağlı olabileceğinden, tek tek tutamaçlarla değil bir tabloda özetlenir.

teorik olarak yapabilirsiniz (sadece belirli bir kütüphanede henüz yapmadınız):

fast=table[FAST_MA]; slow=table[SLOW_MA];

ve sonra hızlı[2]>yavaş[1] 'ı okumak daha da kolaydır

ve tüm dahili hesaplamalar "talep üzerine" yapılacaktır.

 
Maxim Kuznetsov :

ayrıca örneğin fast.Get(2)>=slow.Get(1) yerine; oldukça yasal ve çalışma kodu:

table[FAST_MA][1] >=table[SLOW_MA][2]

iş, excel ile bir elektronik tablo gibi gider. Veriler (formüller) birbirine bağlı olabileceğinden, tek tek tutamaçlarla değil bir tabloda özetlenir.

teorik olarak yapabilirsiniz (sadece belirli bir kütüphanede henüz yapmadınız):

fast=table[FAST_MA]; slow=table[SLOW_MA];

ve sonra hızlı[2]>yavaş[1] 'ı okumak daha da kolaydır

ve tüm dahili hesaplamalar "talep üzerine" yapılacaktır.

Her nasılsa koltuk değneği çıkıyor. Ayrıca, terminalin yine de oluşturacağı fare arabelleklerine çift diziler ekliyoruz. Anladığım kadarıyla, tüm tarih derinliği için onlar için bellek ayıracaksınız (doğru hatırlıyorsam M1 USHORT_MAX için * 8 bayt) veya yol boyunca düzenli olarak pahalı ArrayResize kullanmayı planlıyor musunuz?
 
Vasiliy Sokolov :

Katılıyorum, dili bilseniz bile kodunuzu okumak çok zor.

Aslında, bu kural herhangi bir üçüncü taraf kodu için geçerlidir. Tek soru, hangi kodun zor olmadığı, ancak okunması daha kolay olduğudur.

Ve MQL4 kodunu okumak ve düzenlemek neredeyse her zaman daha kolaydır. Geliştiriciler bir kez tahmin etti.

 
fxsaber :

Aslında, bu kural herhangi bir üçüncü taraf kodu için geçerlidir. Tek soru, hangi kodun zor olmadığı, ancak okunması daha kolay olduğudur.

Ve MQL4 kodunu okumak ve düzenlemek neredeyse her zaman daha kolaydır. Geliştiriciler bir kez tahmin etti.

Ve belki bir soru. Ne tahmin ettin? Standart C/C++, alım satım ve çizelgelerle ilgili özel istekler dışında, C++'daki "windows.h" bu şekilde kabul edilebilir.

O yüzden geliştiricilere saygılar ki tekerleği yeniden icat etmemişler, linklerin yasaklanmasında kesin bir eksisi olsa da mql'den sonra C/C++'a düştüğümde doyamadım. Bu nedenle, aniden bir mucize olur, belki bir seçenek olarak düşünün, C# usafe gibi, özellikle benim gibi insanlar için, sanki duvara karşı kendinizi öldürmek istiyorsanız - kendinizi öldürün, diye uyardık.

 
Vladimir Simakov :

Ve belki bir soru. Ne tahmin ettin?

Kod tabanı, MT4 Expert Advisors'ın yeniden yapılanması olan MT5 Expert Advisors ile doludur. Orijinalin kodunu karşılaştırın ve yeniden yapın.


Açıkçası, orijinal MT4 mantığını anlamak çok daha kolay. Ancak araçta bir şeyi düzeltme ihtiyacı olduğunda daha da kolaydır. Sadece MQL4'ün dünya çapındaki forumlarda ticaret algoritmalarını tartışmak için standart olması değil. Başka bir dil yok, yani MQL4. Ve MT4'ün popülaritesinde büyük bir rol oynadı ve bunun tersi değil.


Eh, MT5 değişiklikleri hakkında konuşursak, o zaman çarpıktırlar - her zaman işe yaramazlar. Basit bir örnek. Bir pozisyonu kapatmak için bir talep gönderirsiniz, ancak kapatmak yerine bir işlem emri alırsınız. Gerçeğe dönüşmek için korkunç bir şekilde çözülen birçok şaka var. Ve MT4'te basit ve güvenilirdir.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
fxsaber :

Kod tabanı, MT4 Uzman Danışmanlarının yeniden yapılanmaları olan MT5 Uzman Danışmanlarıyla doludur. Orijinalin kodunu karşılaştırın ve yeniden yapın.


Açıkçası, orijinal MT4 mantığını anlamak çok daha kolay. Ancak araçta bir şeyi düzeltme ihtiyacı olduğunda daha da kolaydır. Sadece MQL4'ün dünya çapındaki forumlarda ticaret algoritmalarını tartışmak için standart olduğu için değil. Başka bir dil yok, yani MQL4. Ve MT4'ün popülaritesinde büyük bir rol oynadı ve bunun tersi değil.


Eh, MT5 değişiklikleri hakkında konuşursak, o zaman çarpıktırlar - her zaman işe yaramazlar. Basit bir örnek. Bir pozisyonu kapatmak için bir talep gönderirsiniz, ancak kapatmak yerine bir işlem emri alırsınız. Gerçeğe dönüşmek için korkunç bir şekilde çözülen birçok şaka var. Ve MT4'te basit ve güvenilirdir.

Yani bu bir oyundur, emirlerle/pozisyonlarla benzetme yaparak çalışın. mql4'te bunun için bir sarmalayıcı sınıfım var, mql5'te iki farklı var, çünkü mt4'te tek bir varlık ve mt5'te iki farklı sınıf var, şimdi onlar için bir sarmalayıcı sınıfı uygulamayı planlıyorum ve çalışmayı unutuyorum siparişler, mql4'te zaten yarım yıl olduğu gibi.
 
Ve evet, mt5 de borsada çalışmak için yaratıldı ve emirler/pozisyonlarla çalışmanın farklı bir prensibi var, bu yüzden dostum öğreniyoruz. Bir kısmı için sızlanmıyoruz, orada her şey yolunda ve eşit bir şekilde çalışıyor, sadece borsa ve forex'in ticaret mekaniğinin öğrenilmesi ve farklılıklarının dikkate alınması gerekecek. Bunun için gerekli olan her şey geliştiriciler tarafından geliştirildi ve rıhtımlarda tanımlandı ve daha sonra sadece kendim tarafından.
 
Vladimir Simakov :
Yani bu bir oyundur, emirlerle/pozisyonlarla benzetme yaparak çalışın. mql4'te bunun için bir sarmalayıcı sınıfım var, mql5'te iki farklı var, çünkü mt4'te tek bir varlık ve mt5'te iki farklı sınıf var, şimdi onlar için bir sarmalayıcı sınıfı uygulamayı planlıyorum ve çalışmayı unutuyorum siparişler, mql4'te zaten yarım yıl olduğu gibi.
Vladimir Simakov :
Ve evet, mt5 de borsada çalışmak için yaratıldı ve emirler/pozisyonlarla çalışmanın farklı bir prensibi var, bu yüzden dostum öğreniyoruz. Bir kısmı için sızlanmıyoruz, orada her şey yolunda ve eşit bir şekilde çalışıyor, sadece borsa ve forex'in ticaret mekaniğinin öğrenilmesi ve farklılıklarının dikkate alınması gerekecek. Bunun için gerekli olan her şey geliştiriciler tarafından geliştirildi ve rıhtımlarda tanımlandı ve daha sonra sadece kendim tarafından.

Ufkunuzu genişletmeye çalışın, tk. Yazdıklarınız gerçekten sızlanıyor.

 
Vladimir Simakov :
Her nasılsa koltuk değneği çıkıyor. Ayrıca, terminalin yine de oluşturacağı fare arabelleklerine çift diziler ekliyoruz. Anladığım kadarıyla, tüm tarih derinliği için onlar için bellek ayıracaksınız (doğru hatırlıyorsam M1 USHORT_MAX için * 8 bayt) veya yol boyunca düzenli olarak pahalı ArrayResize kullanmayı planlıyor musunuz?

Tabii ki, onlar için hafıza ayırıyorum. Hesaplamalar ve hata ayıklama için gerekenden fazla olmayan bir derinliğe. Yukarıdaki parçada, 30, ki bu fazlasıyla yeterli. Bir yerde, örneğin, 50 derinliğe sahip standart sapmayı hesaplamanız gerekiyorsa, önbellek artırılmalıdır. Ve o zaman bile sadece hesaplamaları hızlandırmak için.

 
fxsaber :

Ufkunuzu genişletmeye çalışın, tk. Yazdıklarınız gerçekten sızlanıyor.

Görünüm açısından her şey yolundadır, ancak bir pozisyon ve bir emir arasındaki bağlantı mql5'te bu şekilde uygulanır (son çalışmanın bir parçası olarak, prensipte, bu formda zaten bir hedge hesabı için kütüphanedeydi ve gidecek).

CHedge::CheckOrder( void ){
   if (! CheckPointer (cOrder)) return ;
   switch (cOrder.Control()){
       case ORDER_FULL:        cPosition=NewPosition(cOrder);
       case ORDER_REMOVE:
       case ORDER_ERROR:       delete cOrder;}}
Neden: