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

 

Tünaydın.

Penceredeki gösterge en fazla 5 ondalık basamak gösterir.

iCustom(Symbol(), PERIOD_M1 , "MACD",12, 26, SignalSMA, 0, 0) aracılığıyla bir Uzman Danışmanda kullanıldığında, 4 haneye kadar olan değeri görüntüler (Yazdır komutu ile ayarlanır).

Bir baykuşta 5 karakter nasıl elde edilir?

 
DoubleToString işlevi aracılığıyla yazdırın ve istediğiniz 5 karakteri elde edeceksiniz. Ve istersen, o zaman 8.
 
AlexeyVik :
DoubleToString işlevi aracılığıyla yazdırın ve istediğiniz 5 karakteri elde edeceksiniz. Ve istersen, o zaman 8.
Yani Expert Advisor'daki gösterge üzerindeki hesaplamalar 5 haneli olarak ve Journal'da görüntülendiğinde 4. Baskı kesilmeden önce yapılır?
 
Craft :
Yani Expert Advisor'daki gösterge üzerindeki hesaplamalar 5 haneli olarak ve Journal'da görüntülendiğinde 4. Baskı kesilmeden önce yapılır?

Normalleştirilmemişse, hesaplamaların sonucu 16 ondalık basamağa kadar olabilir:

Данные типа double выводятся с точностью до 16 десятичных цифр после точки, при этом данные могут выводиться либо в традиционном либо в научном формате – в зависимости от того, как запись будет наиболее компактна.
Данные типа float выводятся с 5 десятичными цифрами после точки. Для вывода вещественных чисел с другой точностью либо в явно указанном формате необходимо использовать функцию PrintFormat (). 

Doğrudan Yazdır yoluyla hesaplamanın çıktısı kesilmez. Kodda hala bir şey var, örneğin normalleştirme.

 

İşin aslı başka bir şey yok (normalleştirmeler vs.):

double g_macd=iCustom(Symbol(), PERIOD_M1 , "g_MACD",12, 26, SignalSMA, 1, 0);

Print("g_macd=",g_macd);

g_MACD, göstergede 5. ondalık basamağa kadar (1. arabelleğin) değerine sahiptir ve Günlükte Yazdır, 4. ondalık basamağa kadar kabul edilemez bir değer verir.

Bu sorun nasıl çözülür?

 
Craft :

İşin aslı başka bir şey yok (normalleştirmeler vs.):

double g_macd=iCustom(Symbol(), PERIOD_M1, "g_MACD",12, 26, SignalSMA, 1, 0);

Print("g_macd=",g_macd);

g_MACD, göstergede 5. ondalık basamağa kadar (1. arabelleğin) değerine sahiptir ve Günlükte Yazdır, 4. ondalık basamağa kadar kabul edilemez bir değer verir.

Bu sorun nasıl çözülür?

Koduna bak, sorun orada bir yerde.

Kontrol etmek için, WPR çağrısıyla basit bir komut dosyası çalıştırdım ve gösterge çağrısının sonucunu yazdırdım:

 double wpr1= iWPR ( NULL , 0 ,1440, 1 );
 Print ( "WPR=" ,wpr1);

****2015.03.08 01:12:15	2015.03.06 22:59 **** EURUSD,H1: WPR=-99.1902834008098


Göstergenin kendisi, bildiğiniz gibi, penceresinde 4 ondalık basamaklı değerleri gösterir ve bir danışman için 13 ve hatta 14'e kadar verir.

 
Pokrov :

Tünaydın! Lütfen aşağıdaki koda bakın, sinyal üzerinde "Ok" nesnesinin oluşturulması, log üzerinden geçmesine rağmen test cihazında ok çizmiyor ve test cihazında başladığında logda bir hata yazıyor TestGenerator: unmatched veri hatası (2014.10.13 17:10'da 412 ses sınırı aşıldı),

ve test sırasında hata veriyor "Ok USDJPYm,M5 kontrol ediliyor: Nesne oluşturma hatası: kod #4200" - ancak bunun normal olduğunu anlıyorum, çünkü program ilk başta nesnenin oluşturulduğunu tespit eder ve silindikten sonra onu yeniden oluşturur. Genel olarak, sorular hakkındaki yorumlarınız için minnettar olacağım.

Yazıldığı gibi kesinlikle yargılamayın.


İnsanlar, bunu anlamak için oklarla yardım edin, pliz !!!

 //+------------------------------------------------------------------+
//| SignalOpenOrderBuy SendMail                                      |
//+------------------------------------------------------------------+
if (PLO0>S0 && PLO1<=S1 && PLO2<S2 && Time[ 0 ] > SignalTime)
{
SignalTime = TimeCurrent ();
bool SignalBuy = ObjectCreate ( 0 , "ArrowBay" , OBJ_ARROW_BUY , 0 , 0 ,Bid,SignalTime);
Print ( "Стрелка Buy установлена" );
ObjectSetInteger ( 0 , "ArrowBay" , OBJPROP_COLOR , clrGreen );
if (!SignalBuy)
Print ( "Ошибка создания объекта: code #" , GetLastError ());
ResetLastError ();
ObjectDelete ( 0 , "ArrowBay" );
RefreshRates();
SignalBuy = ObjectCreate ( 0 , "ArrowBay" , OBJ_ARROW_BUY , 0 , 0 ,Bid,SignalTime);
ObjectSetInteger ( 0 , "ArrowBay" , OBJPROP_COLOR , clrGreen );
if (!SignalBuy)
Print ( "Ошибка создания объекта: code #" , GetLastError ());
else
Print ( "Стрелка Buy установлена" );
}
 
Pokrov :

İnsanlar, bunu anlamak için oklarla yardım edin, pliz !!!

Bu hatla ilgilen

 bool SignalBuy = ObjectCreate ( 0 , "ArrowBay" , OBJ_ARROW_BUY , 0 , 0 ,Bid,SignalTime);

Okun çizildiği yere bakın.

 
AlexeyVik :

Bu hatla ilgilen

Okun çizildiği yere bakın.

Teşekkürler Alexey! Yardımcı oldu, şimdi oklar belirdi ve sinyalden sinyal noktasına noktadan noktaya hareket etmeye başladı, ancak okların her sinyalde görünmesini ve yerlerinde kalmasını nasıl sağlayabilirim,

böylece grafikteki sinyalin tetiklenmesini analiz edebilirsiniz?

 
Pokrov :

Teşekkürler Alexey! Yardımcı oldu, şimdi oklar belirdi ve sinyalden sinyal noktasına noktadan noktaya hareket etmeye başladı, ancak okların her sinyalde görünmesini ve yerlerinde kalmasını nasıl sağlayabilirim,

böylece grafikteki sinyalin tetiklenmesini analiz edebilirsiniz?

Hareket etmeyi bırakın ve yenilerini çizin.
Neden: