Hatalar, hatalar, sorular - sayfa 553

 
Urain :

Ardından profil dalında bir öneride bulunun (hala hata yok).

peki... Bence bu bir hata. anladığım kadarıyla, takvimde bugün dönemin sonunu seçebilirsem,
o zaman test cihazı ve optimize edicinin geçerli zamana kadar çalışması beklenir, ancak bu olmaz (((
geliştiriciler, iyi bir platform oluşturmanın farkında ve ellerinde. ve hayır, değil. Biraz daha düşünelim...

 

"Yeni Başlayanlar için MQL5 Uzman Danışmanları Yazmak için Adım Adım Kılavuz" başlıklı bu makaleyi okudum https://www.mql5.com/en/articles/100 içinde şu satırları buldum:


3 ve 5 haneli tırnaklar için Zarar Durdur ve Kâr Al değerlerini 10 ile çarpıyoruz.

Yaklaşık olarak aynısı, terminalle birlikte gelen "MACD örneğinde":

//--- 3 veya 5 basamak için ayarlama
intdigits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Bu eylem nedir? Değişkenleri neden 3 ve 5 ondalık basamakla 10 ile çarpıyorsunuz?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon :

"Yeni Başlayanlar için MQL5 Uzman Danışmanları Yazmak için Adım Adım Kılavuz" başlıklı bu makaleyi okudum https://www.mql5.com/en/articles/100 içinde şu satırları buldum:

3 ve 5 haneli teklifler için Zarar Durdur ve Kâr Al değerlerini 10 ile çarpıyoruz.

Yaklaşık olarak aynısı, terminalle birlikte gelen "MACD örneğinde":

//--- 3 veya 5 basamak için ayarlama
intdigits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Bu eylem nedir? Değişkenleri neden 3 ve 5 ondalık basamakla 10 ile çarpıyorsunuz?

Bu, her şeyi dört basamaklı sayılarla saymaya alışmış ve yeniden düzenlemek istemeyen yoldaşlar içindir.

Böylece, parametrelerde 100 stop-loss noktası ayarlayarak, 1000 noktada beş basamaklı bir işarette ve aynı olan 100 puanlık dört basamaklı bir işarette yeniden hesaplama elde ederiz.

Dört işaretin avantajları vardır, kârın yeniden hesaplanması kolaylığı, yatırılan fonların 1 puan% 1'i.

 
progeon :

"Yeni Başlayanlar için MQL5 Uzman Danışmanları Yazmak için Adım Adım Kılavuz" başlıklı bu makaleyi okudum https://www.mql5.com/en/articles/100 içinde şu satırları buldum:

3 ve 5 haneli teklifler için Zarar Durdur ve Kâr Al değerlerini 10 ile çarpıyoruz.

Yaklaşık olarak aynısı, terminalle birlikte gelen "MACD örneğinde":

//--- 3 veya 5 basamak için ayarlama
intdigits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Bu eylem nedir? Değişkenleri neden 3 ve 5 ondalık basamakla 10 ile çarpıyorsunuz?


Farklı komisyoncularla (4 veya 5 basamaklı teklifler sağlayarak) daha iyi uyumluluk için, yani danışmanın parametrelerini değiştirmeye gerek kalmadan.

Bu algoritma, 4 basamaklı tırnak _ Rakamlar sağlayan brokerlerin 4 veya 2 (genellikle JPY'nin olduğu yerlerde çiftler halinde) olabileceği gerçeğinden yola çıkar.

ve sırasıyla 5 basamaklı 5 ve 3'te.

Her ne kadar kendim böyle bir yöntemin güvenliğiyle ilgilensem de, farklı bir _Digits değerine sahip araçlar var gibi görünüyor.

Şahsen, "EURUSD" yi kontrol ediyorum. Ancak MT4'te en azından eurodolları biraz farklı bir isme sahip olan bu tür brokerler var, örneğin EURUSD_fx

ya da böyle bir şey.

 
crOss :
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Ukrayna :

O zaman sadece yılı, ayı, günü değil, bitişin saat:dakikasını da girmeniz gerekecektir.

Gerekli değil. Zaman, test/optimizasyon başlatma sırasında tamamen programlı olarak sabitlenebilir.

Dürüst olmak gerekirse, teklifi oldukça mantıklı buluyorum. ben için.

Şu anda benim için geçerli değil, ama muhtemelen yakında çok arzu edilecek.

 
Urain :

Bu, her şeyi dört basamaklı sayılarla saymaya alışmış ve yeniden düzenlemek istemeyen yoldaşlar içindir.

Böylece, parametrelerde 100 stop-loss noktası ayarlayarak, 1000 noktada beş basamaklı bir işarette ve aynı olan 100 puanlık dört basamaklı bir işarette yeniden hesaplama elde ederiz.

Dört işaretin avantajları vardır, kârın yeniden hesaplanması kolaylığı, yatırılan fonların 1 puan% 1'i.

Açıkça devam edelim) Böyle bir soru - aynı yazıda zararı durdur ve kar al oluştururken NormalizeDouble işlevi kullanılıyor, neden? Bu anlamsız gibi görünüyor.

mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss
mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon :

Açıkça devam edelim) Böyle bir soru - aynı yazıda zararı durdur ve kar al oluştururken NormalizeDouble işlevi kullanılıyor, neden? Bu anlamsız gibi görünüyor.

Mantıksızlık yoktur, level hesaplanırken yinelemeli işlemler yapılır ve sonuç normalleşmez, sunucuya olduğu gibi aktarırsanız yeniden fiyat teklifi alırsınız. Bu nedenle, hesaplamaların sonucu normalleştirilir.
 
Urain :
Mantıksızlık yoktur, level hesaplanırken yinelemeli işlemler yapılır ve sonuç normalleşmez, sunucuya olduğu gibi aktarırsanız yeniden fiyat teklifi alırsınız. Bu nedenle, hesaplamaların sonucu normalleştirilir.
Durdurma kaybı 100'e izin verilir, nokta 0,00001. çoğalınca ne oluyor? 9'lar bir yerlerde ortaya çıkacak mı? Örneğin, 0.0009999?
 
progeon :
Durdurma kaybı 100'e izin verilir, 0,00001 noktası. çoğalınca ne oluyor? 9'lar bir yerlerde ortaya çıkacak mı? Örneğin, 0.0009999?
   double a= 1.45861 + 32 * _Point ;
   Print ( DoubleToString (a, 16 ));

Görünüşe göre tamamen normal bir sayı 1.45893 çıkmalı, ancak 1.4589300000000002 elde ediyoruz.

 
Renat :

Uzmanla ilgili bilgilerde, güvenlik seviyesini ve çağrılan DLL işlevlerinin listesini gösteren bir "Güvenlik" sekmesi yapmayı planladık.

Mağazanın açılışı için tam zamanında, EX5 dosyaları üzerinde çok çalışma olacak - o zaman uygulayacağız.

Renat, yeni EX5 formatında DLL çağrıları hakkında iki soru daha var.

1. Çağrılar devre dışı bırakıldığında kod nasıl davranacak? Nasıl şimdi - koşmak bile değil mi?

2. Başlamıyorsa neden MQL5_DLLS_ALLOWED / TERMINAL_DLLS_ALLOWED var ?