Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 480
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Lütfen iki parçanın kesişme noktasının koordinatlarını bulmak için algoritmayı çevirmeme yardım et
Makaleden:
Her şey çok basit!
Ya da belki arşivlerdeki biri zaten hazırdır?x1, y1 ve x2, y2 - ilk bölümün köşelerinin koordinatları;
x3, y3 ve x4, y4 - ikinci bölümün köşelerinin koordinatları;
kesişimi bulmak için çizgilerin denklemlerini oluştururuz:
ilk denklem:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
ikinci denklem
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
bu denklemler iki noktadan geçen düz bir çizgi tanımlar, ihtiyacımız olan da bu.
Bu denklemlerden aşağıdaki formülleri kullanarak x ve y'yi buluruz:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)- (y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
doğrularımız kesiştiği için, bulmamız gereken (x, y) koordinatlarıyla ortak bir kesişme noktalarına sahiptirler.
kavşağın segmentlerimize ait olması için onu sınırlamamız gerekiyor, yani. koşulu kontrol edin:
Eğer
(((x1<=x)ve(x2>=x)ve(x3<=x)ve(x4 >=x))veya((y1<=y)ve(y2>=y)ve(y3<= y) ve(y4>=y)))
o zaman bu segmentlerin bir kesişme noktası vardır ve eğer değilse, o zaman kesişme noktası yoktur.
Eğim katsayılarını kullanarak bu segmentlerin paralelliğini de kontrol etmelisiniz:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
burada k1 ve k2, segmentlerin ОХ ekseninin pozitif yönüne eğim açısının teğetleridir, eğer k1=k2 ise, segmentler paraleldir ve bu nedenle kesişme noktaları yoktur.
Merhaba canım!
Lütfen iki parçanın kesişme noktasının koordinatlarını bulmak için algoritmayı çevirmeme yardım et
Makaleden:
Her şey çok basit!
Ya da belki arşivlerdeki biri zaten hazırdır?x1, y1 ve x2, y2 - ilk bölümün köşelerinin koordinatları;
x3, y3 ve x4, y4 - ikinci bölümün köşelerinin koordinatları;
kesişimi bulmak için çizgilerin denklemlerini oluştururuz:
ilk denklem:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
ikinci denklem
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
bu denklemler iki noktadan geçen düz bir çizgi tanımlar, ihtiyacımız olan da bu.
Bu denklemlerden, aşağıdaki formülleri kullanarak x ve y'yi buluruz:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)- (y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
doğrularımız kesiştiği için, bulmamız gereken (x, y) koordinatlarıyla ortak bir kesişme noktalarına sahiptirler.
kavşağın segmentlerimize ait olması için onu sınırlamamız gerekiyor, yani. koşulu kontrol edin:
Eğer
(((x1<=x)ve(x2>=x)ve(x3<=x)ve(x4 >=x))veya((y1<=y)ve(y2>=y)ve(y3<= y) ve(y4>=y)))
o zaman bu segmentlerin bir kesişme noktası vardır ve eğer değilse, o zaman kesişme noktası yoktur.
Eğim katsayılarını kullanarak bu segmentlerin paralelliğini de kontrol etmelisiniz:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
burada k1 ve k2, segmentlerin ОХ ekseninin pozitif yönüne eğim açısının teğetleridir, eğer k1=k2 ise, segmentler paraleldir ve bu nedenle kesişme noktaları yoktur.
Acı verecek kadar karmaşık bir şey... Çizgilerin kesişiminin tanımını yazdım, biri 2 yüksek, diğeri 2 alçak, bir sonraki çubuktan daha uzak olsun ya da olmasın. Teğeti kullanarak yazdım, puan cinsinden fiyat farkının çizginin çizildiği en yüksek noktalar arasındaki çubuk sayısına oranı. Buna göre, ikinci çizginin açısının tanjantı, düşük. Ve sonra, tanjantı kullanarak bir sonraki çubuktaki noktaların sayısını buldum, yani. bir bacağın değeri değiştirilmiş ters formül (çubuk sayısı). Bu çizgilerin işaretli noktasındaki fiyatın değeri elde edilir. Ve buna göre, yükseklerdeki düz çizginin fiyatının değeri daha azsa, o zaman bir kesişme vardı.
Ama şu ana kadar bu göstergeyi bulamıyorum.
...
Ya da belki arşivlerdeki biri zaten hazırdır?
Kim bir fonksiyon yayınladı. Fonksiyon, doğrudan sağa doğru çizilen ışının noktasının fiyatını döndürür.
x1 - satırın ilk koordinatının çubuğu, y1 - satırın ilk koordinatının fiyatı. x2 - satırın ikinci koordinatının çubuğu, y2 - satırın ikinci koordinatının fiyatı, x - fiyatın iade edileceği çubuk.
İki çizginin her biri için fiyatları bulabilir ve kesişip kesişmediklerini görebilirsiniz..
Burada şöyle yazdım ..., bir şey düşünüldü ve çizildi, ancak her kavşakta değil. Bir şey doğru yazılmamış. Ne var, anlamıyorum.
Soruma gösterdiğiniz ilgi için Alexey ve Artyom'a çok teşekkür ederim!
Burada şöyle yazdım ..., bir şey düşünüldü ve çizildi, ancak her kavşakta değil. Bir şey doğru yazılmamış. Ne var, anlamıyorum.
Bu aralar programlamadan hiç bir şey anlayamıyorum sevgili eşimin bugün reçel günü var. 18 yaşında 384 aylık.
Ancak!!! Çizgilerin çubukların DIŞINDA veya ARASINDA geçebileceğini ve fiyatın (Y koordinatı) yalnızca çubuktan alınabileceğini unutmayın. Veya öncesi veya sonrası, ancak kesişme noktası her zaman belirlenemez. Bunun nadir olduğunu söyleyebilirim. Yukarıdakileri göz önünde bulundurarak, kodunuzu bunu göz önünde bulundurarak inceleyin, işe yarayabilir.
Alexey Viktorov 2015.12.12 17:33 # RU
18 yaşına girdi
Lütfen bana danışmana neyin eklenmesi gerektiğini (hangi komutlar kümesini) söyleyin, böylece yeniden hesaplanırken, açık pozisyonlarda zaten ayarlanmış olan karları otomatik olarak düzeltir. Veya tüm durakları belirtilen sonuncuya göre düzelten bir komut dosyası olabilir mi?
Lütfen strateji test cihazında değiştirebilmeniz için kodu nasıl ekleyeceğimi söyleyin - model kalıplarının ağırlıklarını seçin. m_pattern_0(90) girdiyi değişkenlerle değiştir
OOP ile pek iyi değilim, hatalar ya " üye işlevi tanımlanmadı " ya da kod çalışmıyor
Cevabı olmayan benzer bir soru burada https://www.mql5.com/ru/forum/13484
ps: CiCustom ile modeller için ağırlıkları değiştirmek mümkün görünüyor, ancak standart sınıflara ( CSignalEnvelopes , vb.) ?
Ya da belki bunun cevabı zaten bir yerde önerilmiştir?
MetaQuotes web sitesinden bir şey yükleniyor, aşağıdaki resmi alıyorum:
Üst: Veritabanı 2049/12358 girişleri.
Mumlar: 17.10.2014 tarihinden sondan bir önceki, son - 14.07.1993.
özlenenler nerede?