Göstergede keneler olmadan bu soruna bir çözümünüz var mı?
Ve zaten konuştum. Metnin kendisinin oluşturulmadan elde edilebilmesi garip, ancak boyut değil.
Tiklerin nesi var? Grafik, keneler olmadan bile çizilir.
Metin etiketinin boyutu, win api işlevi GetTextExtent kullanılarak görüntüleme bağlamından bulunur. Görüntü bağlamı, bu bilgiyi ekran çözünürlüğüne ve seçilen yazı tipi boyutuna göre döndürür.
Bir nesneyi ilk oluşturduğunuzda, bağlam görüntüsü yoktur. Prensip olarak, oluşturulabilir, ancak "yapay olarak" hesaplanan boyutun, gerçek oluşturma sırasında gerçekte hesaplanandan farklı olacağı bir duruma kolayca girebilirsiniz. Bu nedenle - nesne oluşturulana kadar boyutu bilinmiyor
Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.
Bunun gibi bir şey - ilk tikte oluşturduğumuz VE SONRAKİ tikte BOYUT İSTİYORUZ:
//+------------------------------------------------------------------+//| TestIndicator1.mq4 |//| Copyright 2015, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"#property strict#property indicator_chart_windowstring name= "probe" ;
bool first_tick= false ; // false - ещё не было тиков//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//--- indicator buffers mapping//---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate ( constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---staticint count;
if (count> 3 )
return (rates_total); // после трёх Алертов выходим. Не за чем слух портить.if (!first_tick)
{
ObjectCreate ( 0 ,name, OBJ_LABEL , 0 , 0 , 0 );
ObjectSetString ( 0 ,name, OBJPROP_TEXT ,name);
first_tick= true ;
}
else
{
string text= ObjectGetString ( 0 ,name, OBJPROP_TEXT );
int text_sizeX= int ( ObjectGetInteger ( 0 ,name, OBJPROP_XSIZE ));
Alert (text, " " ,text_sizeX);
}
count++;
//--- return value of prev_calculated for next callreturn (rates_total);
}
//+------------------------------------------------------------------+//| Deinit |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
ObjectDelete (name);
EventKillTimer ();
}
//+------------------------------------------------------------------+
Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.
Bunun gibi bir şey - yarattığımız ilk tikte VE SONRAKİ tikte BOYUT İSTİYORUZ:
İyi. Hafta sonu birkaç kene simülasyonu yapıyorum.
Göstergede keneler olmadan bu soruna bir çözümünüz var mı?
Ve zaten konuştum. Metnin kendisinin oluşturulmadan elde edilebilmesi garip, ancak boyut değil.
Tiklerin nesi var? Grafik, keneler olmadan bile çizilir.
Metin etiketinin boyutu, win api işlevi GetTextExtent kullanılarak görüntüleme bağlamından bulunur. Görüntü bağlamı, bu bilgiyi ekran çözünürlüğüne ve seçilen yazı tipi boyutuna göre döndürür.
Bir nesneyi ilk oluşturduğunuzda, bağlam görüntüsü yoktur. Prensip olarak, oluşturulabilir, ancak "yapay olarak" hesaplanan boyutun, gerçek oluşturma sırasında gerçekte hesaplanandan farklı olacağı bir duruma kolayca girebilirsiniz. Bu nedenle - nesne oluşturulana kadar boyutu bilinmiyor
Oluşturduktan sonra ChartRedraw() kullanmayı deneyin, ardından boyutu kontrol edin.
yardımcı olmuyor
Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.
Bunun gibi bir şey - ilk tikte oluşturduğumuz VE SONRAKİ tikte BOYUT İSTİYORUZ:
Genel olarak, OnCalculate()'deki ilk olaydan daha önce olmayan göstergelerde bir şeyler çizmeniz gerekir - bu yaklaşım bir grafiğin oluşturulmasını ve ile doğru çalışmayı garanti eder.
Bunun gibi bir şey - yarattığımız ilk tikte VE SONRAKİ tikte BOYUT İSTİYORUZ:
İyi. Hafta sonu birkaç kene simülasyonu yapıyorum.
Nesnenin oluşturulup oluşturulmadığını döndürecek bir işlev var mı?
ve WindowRedraw bir onay beklememeye yardımcı olmaz mı?