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

 
Metatrader'da birkaç izleme listesine (piyasa incelemesi) sahip olmak mümkün mü? Örneğin, birinde endeksler, diğerinde hisse senetleri
 
Vladimir Makhnin # :
Metatrader'da birkaç izleme listesine (piyasa incelemesi) sahip olmak mümkün mü? Örneğin, birinde endeksler, diğerinde hisse senetleri

Kendin Yap. MQL5 bunu kolaylaştırır.

 
Mihail Matkovskij # :

Her şey açıyı hesaplama formülüyle ilgili. Kod, amacı net olmayan, onu hesaplamak için yalnızca bir koordinat ve bir tür katsayı kullanıldığını gösterir. Neye benziyor? Açıyı hesaplamak için hangi verileri kullandığınızı bize daha ayrıntılı olarak bildirin.

Anladığım kadarıyla

 double d

bu bir vektör. Ama yine de sadece bir koordinat. Ancak açıyı hesaplamak için iki koordinata veya iki koordinattan oluşan bir vektöre ihtiyacınız var.

 

her ikisi de ... cevabım silindi

 
Maxim Kuznetsov # :

her ikisi de ... cevabım silindi

Bir şeyi karıştırıyorsunuz - bu konudaki gönderiniz silinenlerde değil.

 
Vladimir Karputov # :

Bir şeyi karıştırıyorsunuz - bu konudaki gönderiniz silinenlerde değil.

Ben de baktım. Bulunamadı.

 

tamam, o zaman çoğaltacağım... https://www.mql5.com/ru/forum/160683/page1884#comment_27290699 yanıt olarak

CalcAngleTrend'in bununla hiçbir ilgisi yok. Başka bir yerde, coefAngle yanlış hesaplanmıştır veya sonra çarpık hesaplamalar vardır.

ps/ ve belki de "eğim" kavramı genel olarak yanlış yorumlanmıştır. Derece veya radyan cinsinden ifade edilemez (boşluk vyshmat türünün eğriliği olmadan) ve atan işlevi fiziksel olarak yanlış bir değer döndürür.

 
Mihail Matkovskij # :

Her şey açıyı hesaplama formülüyle ilgili. Kod, amacı net olmayan, onu hesaplamak için yalnızca bir koordinat ve bir tür katsayı kullanıldığını gösterir. Neye benziyor? Açıyı hesaplamak için hangi verileri kullandığınızı bize daha ayrıntılı olarak bildirin.

Bu doğru, bu bir vektör
ve bir değer kullanılır çünkü delta değişiminin 1'e (bir) bölünmesi delta olacaktır.
değişken coefAngle, 2'ye eşit bir int sabitidir.
Fonksiyonun girişindeki tüm verilerin kesinlikle aynı olduğunu kontrol ettim.
 
Maxim Kuznetsov # :

tamam, o zaman çoğaltacağım... https://www.mql5.com/ru/forum/160683/page1884#comment_27290699

CalcAngleTrend'in bununla hiçbir ilgisi yok. Başka bir yerde, coefAngle yanlış hesaplanmıştır veya sonra çarpık hesaplamalar vardır.

ps/ ve belki de "eğim" kavramı genel olarak yanlış yorumlanmıştır. Derece veya radyan cinsinden ifade edilemez (boşluk vyshmat türünün eğriliği olmadan) ve atan işlevi fiziksel olarak yanlış bir değer döndürür.

katsayı sabittir değişmez
bu fonksiyon dışında hiçbir hesaplama yoktur, bu fonksiyonlar delta değerini birkaç nokta üzerinden vektörlerin değerinin ortalamasını alır, kabaca konuşursak, 1 birim periyot ile 2 noktalı bir segmente indirgeme

Bunun vektörlerin tam bir uygulaması olmadığı açıktır, daha çok "az ya da çok" yeterli bir ifade sonucu içindir.
teknik olarak, artan bir faktörün basit bir uygulamasıyla yapabilir ve kısaltabilirsiniz ...

Bu işlevin çalışmasının nedenini anlamıyorum

mümkün olan tek şey, hesaplama sırasında ifadenin kendisinde tip dökümüdür,

 
Владимир Казаков bir danışman yazmaya çalışıyorum ve test sırasında bana anlaşılmaz bir şey oluyor ...

bir fonksiyon var

durum aşağıdaki gibidir, danışmanın bir örneği grafikte başlatılır, ikinci örnek benzer bir grafikte MT4 hata ayıklama modunda başlatılır
Fonksiyonun girdi verileri aynı, ancak çıktı farklı!!!? Sadece bir şey anlamıyorum...

bilgi kazmak için hangi yönde söyle bana?!

Not: çıktı arasındaki farkı tam olarak 2,5 kez hesapladı

İfadeleri eylemlere ayırdım ... ve bak işte, şimdi sonuçlar aynı!?

 double CalcAngleTrend( double d)
 {
Print ("d: ", d, " coefAngle: ", ( double ) coefAngle);
   double
    a = ( double ) (d* pow ( 10 , _Digits - 2 ));
Print ("(d* pow ( 10 , _Digits - 2 )): ", a);
     double rad = ( double ) ( 180 / M_PI );
Print ("rad: ", rad);
    a = ( double ) ( atan (a));
Print ("( atan (a)): ", a);
    a = ( double ) (a*rad*( double ) coefAngle);
Print ("(a*rad*( double ) coefAngle): ", a);
   return ( NormalizeDouble (a, ANGLE_DIGITS));
 }

bir şeyin benim istediğim gibi çalışmadığı, tip döküm ile aynı anlama geliyor

Uzmanlardan ve anlayanlardan biri sorunun ne olduğunu açıklayabilir mi yine de ?!
peki, hataları tekrarlamamak için))

Not: Bu formatta aynı ifade aynı şekilde çalışmaya başladı

   double a = ( double ) ((d* pow ( 10 , _Digits - 2 ))*( 180 / M_PI )*( double ) coefAngle);

eleme yönteminin ikiye katlamanın saçma sapan olduğu ortaya çıktı

umarım her şeyi doğru anlamışımdır