Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1051

 
Teklifin eskidiği açık, ancak bu yapının mevcut çubukta farklı teklif açılış fiyatları ile birkaç pozisyon açılmasına izin vereceğini umuyordum. Ve test cihazında iyi çalışıyor, ancak demoda bir pozu açıyor ve hemen kapatıyor. Nasıl önleneceği açık değildir.
 
rapid_minus :
Cevap nerede anlamadım. Bu şu anlama gelir: "İşlev, her 0.1 saniyede bir uzmanın durma işaretinin durumunun yerleşik bir denetimine sahiptir."? Eğer öyleyse, bu bayrağı nasıl kaldırabilirim?

Hayır sonuna kadar okusaydın sorunun cevabını görürdün...

Not

Göstergeler bir arabirim iş parçacığında yürütüldüğünden ve onu yavaşlatmaması gerektiğinden, Sleep() işlevi özel göstergelerden çağrılamaz. İşlev, her 0,1 saniyede bir uzman durdurma bayrağı durumunun yerleşik denetimine sahiptir. Strateji test cihazındaki Sleep() işlevi herhangi bir gecikmeye neden olmaz.


 
LRA :

Başlamak için bunu göstergenin sonuna itin. Ekranda bir etiket gördüğünüzde, içinde gerekli bilgileri nasıl görüntüleyeceğinizi öğrenin. Burada tavsiye veriyorlar, ama herkes kendi içine koyuyor.

Üzgünüm, devam edemem (
int Sayı=25;

if(H==H1&&H1==H2)
{if(J == true) {ObjectCreate(PatternText[shift],
OBJ_TEXT, 0, Zaman[shift1], High[shift1] + Aralık*5);
ObjectSetText(PatternText[shift], "desen", 10, "Arial", Kırmızı);
downArrow[shift1] = Yüksek[shift1] + Aralık*0.5;}if(setalert == 0 && Alert == true) {pattern = "pattern";setalert = 1;}}




if(ObjectFind(0,"Text")<0) // Bilgileri görüntülemek için bir etiket olup olmadığını kontrol edin
{
ObjectCreate("Metin", OBJ_LABEL , 0, 0, 0); // oluşturma
ObjectSet("Metin", OBJPROP_CORNER, 1); // Sağ üst köşe
ObjectSet("Metin", OBJPROP_XDISTANCE, 10); //X
ObjectSet("Metin", OBJPROP_YDISTANCE, 10); //Y
}
ObjectSetText("Metin", string(Sayı), 14,"Arial",Siyah); // Etikete çıktı

}
dönüş(0);
}
 
AlexeyVik : beni şaşırttın... mathlog10

Sorunu çözmek çok daha kolay.

Tabii ki, onunla daha kolay .... Belki o zaman yoktu. Ya da kayıp... En sevdiğim TurboPascal kesinlikle kayıp. Üstelleştirmeyi logaritma ile yaptım.
 
Teşekkür ederim!
 
LRA :
Tabii ki, onunla daha kolay .... Belki o zaman yoktu. Ya da kayıp... En sevdiğim TurboPascal kesinlikle kayıp. Bir logaritma ile üstelleştirme yaptım.

Güncellenmiş mql4'e geçtikten sonra bir süre belgelerde bir hata oluştu. MathLog10'a tıklamak MathLog yardımını açtı

Servise bunu yazdım, yarısını tamir ettiler, yarısını da öyle bıraktılar...

 
Ana pencerenin çubuklarını aynı fiyat ve zaman ölçeğiyle tamamen tekrarlayan bir göstergem var. Soru: Grafiği kaydırırken ana pencerede olduğu gibi gösterge penceresinde ölçeği gösterecek böyle bir CHARTSET CHARTGET var mı?
 
AlexeyVik :

log(10) aslında 1 değil ama mql'de ondalık logaritma olmaması beni şaşırttı...

Ve sonra nedir? https://docs.mql4.com/ru/math/mathlog10 metinde bir hata olmasına rağmen.

Sorunu çözmek çok daha kolay.

Son mesajdan hemen cevap vereceğim.

Logaritmanın ne olduğunu anladım, neden o kodda olduğunu anlamadım ama o arkadaşla yazışmanızdan sonra bunun ondalık basamak sayısını belirlemek için olduğunu anladım değil mi?

Bunu yapmanın başka bir yolu yok mu? Neden kodda ( int ) var? Yönteminiz neden sağladığım satırdan daha iyi?))

çok teşekkürler)

 
Igemon :

Son mesajdan hemen cevap vereceğim.

Logaritmanın ne olduğunu anladım, neden o kodda olduğunu anlamadım ama o arkadaşla yazışmanızdan sonra bunun ondalık basamak sayısını belirlemek için olduğunu anladım değil mi?

Bunu yapmanın başka bir yolu yok mu? Neden kodda ( int ) var? Yönteminiz neden sağladığım satırdan daha iyi?))

çok teşekkürler)

Evet, ondalık basamak sayısını belirlemek için. Parti bir formülle belirlendiyse ve sonuç izin verilenden daha fazla ondalık basamak içerebilirse, partinin değerini normalleştirmek için bu gereklidir. Bazı durumlarda, aptalca bir ikili koyabilirsiniz, ancak daha sonra bir hatayla karşılaşabilirsiniz, bu nedenle bunu programlı olarak belirlemek daha iyidir.

Başka bir şekilde mümkündür. Sorunu çözmek için zaten iki seçenek var, sayıyı bir dizeye dönüştürmek, dizenin uzunluğunu belirlemek, "nokta" karakterinin dizinini ve dizenin uzunluğu ile dizin arasındaki farkı bulmak için bir seçenek var. nokta, sayının kesirli kısmının değeri olacaktır. Ve mql5 forumunda birkaç seçenek var, bazıları daha özgün, bazıları daha basit.

İşte seçeneklerimden biri daha.

 int fun( double ch)
{
 int i = 0 ;
 double res = 0 , ostatok = fmod (ch, 1 );
 while (ostatok != 0 && i < 16 ) // число взято от фонаря для прерывания зацикленности
  {
   res = ostatok * 10 ;
   ostatok = NormalizeDouble ( fmod (res, 1 ), 8 ); // Вроде 8 максимально
   i++;
  }
 return (i);
} /*******************************************************************/

Bu işlev, kesinlikle herhangi bir sayının ondalık basamak sayısını belirler.

Algoritma aşırı derecede basittir, 1'e bölmenin kalanının kaç kez sıfırdan büyük olacağını sayarız.

Benim yolumun daha iyi olduğunu söylemedim. Her programcı sorunun çözümünü gördüğü gibi yazar.

Çift türün bir sayısı, kesirli kısımda önemli basamakları olmasa bile, tam olarak doğru olmayan ve normal bir tamsayı elde etmek için dolaylı olarak int türüne dönüştürülen 2.0 şeklindedir. .

 

Not

Göstergeler bir arabirim iş parçacığında yürütüldüğünden ve onu yavaşlatmaması gerektiğinden, Sleep() işlevi özel göstergelerden çağrılamaz. İşlev, her 0,1 saniyede bir uzman durdurma bayrağı durumunun yerleşik denetimine sahiptir. Strateji test cihazındaki Sleep() işlevi herhangi bir gecikmeye neden olmaz.

Herkes ne kadar akıllı - sadece korkutucu. Sadece okumayı bilmiyorlar: sonuçta, fişin test cihazında göz ardı edildiğini yazdım (ki bu anlaşılabilir), ancak pozisyonlar belirtildiği kadar açık. Ancak demoda slip çalışmıyor ve sadece bir pozisyon açılıyor ve o pozisyon hemen kapatılıyor. Çözemediğim problem bu.

Neden: