Bir moderatörün sel basması iyi değil. Açıklarım. Bir kullanıcı tarafından (bir moderatör dahil) konuya yeni bir mesaj eklenmesine genellikle "yanıt" denir. Sarkastik bir yorum olsa bile.
Bu nedenle, bir kez daha, açıklama ile: Eğer bir sirk olarak görüyorsanız, silmekten çekinmeyin. Veya konuya yeni bir mesaj göndermeyi deneyin. Yanlış bilgiler kullanıcıları yanıltabilir.
Ekleyeceğim. Kullanıcı olaylarının önceki kurallara göre sırayı doldurduğu resmi olarak ortaya çıkarsa (eğer yardımcı olursanız) size ilk teşekkür eden ben olacağım.
Ekleyeceğim. Kullanıcı olaylarının önceki kurallara göre sırayı doldurduğu resmi olarak ortaya çıkarsa (eğer yardımcı olursanız) size ilk teşekkür eden ben olacağım.
Kabaca söylemek gerekirse, olaylarla çalışma hiçbir zaman değişmedi. Kılavuzda tam olarak doğru değildi.
Görünüşe göre sorun artık ortaya çıkmamış, sanki hiç var olmamış gibi. Her şey frensiz çalışır. Alex , lütfen, boş bir dakikan varsa evine bir bakar mısın? Yani, eklentinizle ve eklentiniz olmadan şimdi nasıl çalışacak.
Bunun nedeni, bu grafikteki EA'dan EventChartCustom olayının kendisine gönderilmesidir. Bu olay gönderiminin ana pencerenin grafik güncellemesine (ChartRedraw) neden olduğu ortaya çıktı.
//---
Çözümünüzü test etmek için böyle bir Uzman Danışman yaptım ve aynı zamanda OBJ_EDIT nesnesini düzenlerken metnin ultra sık titremesiyle sorunu çözmeye çalıştım.
//---
//+------------------------------------------------------------------+//| OnChartEvent.mq5 |//+------------------------------------------------------------------+#property copyright "Copyright 2010, MetaQuotes Software Corp."#property link "http://www.mql5.com"#property version "1.00"//---long chart_id= 0 ;
string OnOff_event_idle= "On/Off event_idle++" ;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
chart_id= ChartID ();
//---if (! GlobalVariableCheck (OnOff_event_idle)) { GlobalVariableSet (OnOff_event_idle, 1 ); }
//---
Create_Edit(chart_id, 0 , "Edit_Area" , "HELLO" , CORNER_LEFT_UPPER , "Arial" , 7 , clrWhite , 38 , 18 , 95 , 4 , 1 , clrBlack );
Create_Button(chart_id, 0 , "Start_event_idle" , "START event_idle++" , ANCHOR_RIGHT_UPPER , CORNER_LEFT_UPPER , "Arial" , 8 , clrWhite , clrFireBrick ,clrNONE, 130 , 26 , 4 , 28 , 1 );
//---Comment ( "id: " , 0 , "\n" ,
"event_idle++: " ,event_idle
);
//---return ( 0 );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
Comment ( "" );
ObjectsDeleteAll (chart_id,- 1 ,- 1 );
}
//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+bool bidle= false ;
ushort VM_IDLE= 500 ;
ulong event_idle= 0 ; // счётчик событий//---voidOnChartEvent ( constint id,
constlong &lparam,
constdouble &dparam,
conststring &sparam)
{
if ( GlobalVariableGet (OnOff_event_idle)== 1 )
{
if (id== CHARTEVENT_CUSTOM +VM_IDLE)
{
// Если последнее посланное больше, чем пришедшее, то сразу выходимif (event_idle>( ulong )lparam || bidle)
{
bidle=event_idle>( ulong )lparam;
//---if (bidle) { return ; }
//---
event_idle= 0 ;
}
//---
event_idle++; // увеличили счётчик событий//---Comment ( "id: " ,id, "\n" ,
"event_idle++: " ,event_idle
);
//---EventChartCustom (chart_id,VM_IDLE,( long )event_idle, 0 , "" ); return ; // отправили событие с указанием последнего счетчика
}
//---EventChartCustom (chart_id,VM_IDLE,( long )event_idle, 0 , "" ); // отправили событие с указанием последнего счетчика
}
//+------------------------------------------------------------------+//| СОБЫТИЕ_CHARTEVENT_CLICK |//+------------------------------------------------------------------+if (id== CHARTEVENT_CLICK )
{
Print ( "Reset. Event_idle: " ,event_idle);
//---
event_idle= 0 ;
//---Comment ( "id: " ,id, "\n" ,
"event_idle++: " ,event_idle
);
}
//+------------------------------------------------------------------+//| СОБЫТИЕ_CHARTEVENT_OBJECT_CLICK |//+------------------------------------------------------------------+if (id== CHARTEVENT_OBJECT_CLICK )
{
if (sparam== "Edit_Area" )
{
if (( int ) GlobalVariableGet (OnOff_event_idle)== 0 ) { GlobalVariableSet (OnOff_event_idle, 1 ); }
if (( int ) GlobalVariableGet (OnOff_event_idle)== 1 ) { GlobalVariableSet (OnOff_event_idle, 0 ); }
}
//---if (sparam== "Start_event_idle" )
{
if (( int ) GlobalVariableGet (OnOff_event_idle)== 0 ) { GlobalVariableSet (OnOff_event_idle, 1 ); ChartRedraw (); return ; }
if (( int ) GlobalVariableGet (OnOff_event_idle)== 1 ) { GlobalVariableSet (OnOff_event_idle, 0 ); ChartRedraw (); return ; }
}
}
//+------------------------------------------------------------------+//| CHARTEVENT_OBJECTS_ENDEDIT |//+------------------------------------------------------------------+if (id== CHARTEVENT_OBJECT_ENDEDIT )
{
if ( ObjectGetInteger (chart_id, "Start_event_idle" , OBJPROP_STATE )) { GlobalVariableSet (OnOff_event_idle, 1 ); }
}
}
//+------------------------------------------------------------------+//| СОЗДАНИЕ_ОБЪЕКТА_BUTTON |//+------------------------------------------------------------------+void Create_Button( long chrt_id, // id графикаint nmb_win, // номер окнаstring lable_nm, // имя объектаstring rename, // отображаемое имяlong anchor, // точка привязкиlong corner, // угол привязкиstring font_bsc, // шрифтint font_size, // размер шрифтаcolor font_clr, // цвет шрифтаcolor bg_color, // цвет фонаcolor brd_color, // цвет рамкиint xsize, // ширинаint ysize, // высотаint x_dist, // координата по шкале Xint y_dist, // координата по шкале Ylong zorder) // приоритет
{
if ( ObjectCreate (chrt_id,lable_nm, OBJ_BUTTON ,nmb_win, 0 , 0 )) // создание объекта
{
ObjectSetString (chrt_id,lable_nm, OBJPROP_TEXT ,rename); // установка имениObjectSetString (chrt_id,lable_nm, OBJPROP_FONT ,font_bsc); // установка шрифтаObjectSetInteger (chrt_id,lable_nm, OBJPROP_COLOR ,font_clr); // установка цвета шрифтаObjectSetInteger (chrt_id,lable_nm, OBJPROP_BGCOLOR ,bg_color); // установка цвета фонаObjectSetInteger (chrt_id,lable_nm, OBJPROP_BORDER_COLOR ,brd_color); // установка цвета фонаObjectSetInteger (chrt_id,lable_nm, OBJPROP_ANCHOR ,anchor); // установка точки привязкиObjectSetInteger (chrt_id,lable_nm, OBJPROP_CORNER ,corner); // установка угола привязкиObjectSetInteger (chrt_id,lable_nm, OBJPROP_FONTSIZE ,font_size); // установка размера шрифтаObjectSetInteger (chrt_id,lable_nm, OBJPROP_XSIZE ,xsize); // установка ширины XObjectSetInteger (chrt_id,lable_nm, OBJPROP_YSIZE ,ysize); // установка высоты YObjectSetInteger (chrt_id,lable_nm, OBJPROP_XDISTANCE ,x_dist); // установка координаты XObjectSetInteger (chrt_id,lable_nm, OBJPROP_YDISTANCE ,y_dist); // установка координаты YObjectSetInteger (chrt_id,lable_nm, OBJPROP_SELECTABLE , false ); // нельзя выделить объект, если FALSEObjectSetInteger (chart_id,lable_nm, OBJPROP_ZORDER ,zorder); // Приоритет выше/нижеObjectSetString (chrt_id,lable_nm, OBJPROP_TOOLTIP , "\n" ); // нет всплывающей подсказки, если "\n"
}
}
//+------------------------------------------------------------------+//| СОЗДАНИЕ_ОБЪЕКТА_EDIT |//+------------------------------------------------------------------+void Create_Edit( long chrt_id, // id графикаint nmb_win, // номер окна (подокна)string lable_nm, // имя объектаstring text, // отображаемый текстlong corner, // угол привязкиstring font_bsc, // шрифтint font_size, // размер шрифтаcolor font_clr, // цвет шрифтаint xsize, // ширинаint ysize, // высотаint x_dist, // координата по шкале Xint y_dist, // координата по шкале Ylong zorder, // приоритетcolor clr) // цвет фона
{
if ( ObjectCreate (chrt_id,lable_nm, OBJ_EDIT ,nmb_win, 0 , 0 )) // создание объекта
{
ObjectSetString (chrt_id,lable_nm, OBJPROP_TEXT ,text); // установка имениObjectSetInteger (chrt_id,lable_nm, OBJPROP_CORNER ,corner); // установка угла привязкиObjectSetString (chrt_id,lable_nm, OBJPROP_FONT ,font_bsc); // установка шрифтаObjectSetInteger (chrt_id,lable_nm, OBJPROP_FONTSIZE ,font_size); // установка размера шрифтаObjectSetInteger (chart_id,lable_nm, OBJPROP_COLOR ,font_clr); // цвет шрифтаObjectSetInteger (chart_id,lable_nm, OBJPROP_BGCOLOR ,clr); // цвет фонаObjectSetInteger (chart_id,lable_nm, OBJPROP_XSIZE ,xsize); // ширинаObjectSetInteger (chart_id,lable_nm, OBJPROP_YSIZE ,ysize); // высотаObjectSetInteger (chrt_id,lable_nm, OBJPROP_XDISTANCE ,x_dist); // установка координаты XObjectSetInteger (chrt_id,lable_nm, OBJPROP_YDISTANCE ,y_dist); // установка координаты YObjectSetInteger (chrt_id,lable_nm, OBJPROP_SELECTABLE , false ); // нельзя выделить объект, если FALSEObjectSetInteger (chart_id,lable_nm, OBJPROP_ZORDER ,zorder); // Приоритет выше/нижеObjectSetString (chrt_id,lable_nm, OBJPROP_TOOLTIP , "\n" ); // нет всплывающей подсказки, если "\n"
}
}
//+------------------------------------------------------------------+
//---
Expert Advisor'ı başlattıktan sonra, sol üst köşedeki grafikte aşağıdakileri göreceğiz:
//---
" START event_idle++ " düğmesine tıklayarak ( Alex ) çözümünüze erişim sağlıyoruz. event_idle++ sayacının değerini nasıl artırdığını grafikte görüyoruz.
Düğmeye basıldığı sürece kodunuz çalışacaktır. Doğru, kaynakları çok yiyor. CPU kullanımı (çift çekirdekte test edilmiştir) ~%90 ile ~%100 arasında değişmektedir. Başlatmadan önce veya düğme bırakıldığı anda, işlemci yükü ~ %5 ila ~ %10 arasındadır . Grafikte tıklamak (farenin sol tuşuna tıklamak) sayacı sıfırlar.
Giriş alanına metin girmek titremeye neden olmaz, çünkü kodunuzu girerken " On/Off event_idle++ " global değişkeni kullanılarak devre dışı bırakılır. Bu elbette bir koltuk değneği, ancak geçici bir çözüm olarak bazı basit çözümler için oldukça uygundur.
CPU kullanımı tek sorun değil. Sayaç çalışırken, ticaret terminalindeki pencereler hızla açılır, ancak pencerenin yeniden boyutlandırılması oldukça belirgin şekilde yavaşlar. Her zaman değil, ama böyle anlar var.
Tek sorun CPU kullanımı değil. Sayaç çalışırken, ticaret terminalindeki pencereler hızla açılır, ancak pencerenin yeniden boyutlandırılması oldukça belirgin şekilde yavaşlar. Her zaman değil, ama böyle anlar var.
İşlemci yükleme sorunu aşağıdaki gibi çözülebilir. Olay sayacının saniyede bir güncellendiğini belirtiyoruz. Bu kodu ekliyoruz:
CHARTEVENT_OBJECT_CLICK olay işleme bloğunu aşağıdaki gibi düzenliyoruz + Düğmelerin durumunun hala kontrol edilmesi gerekiyor, çünkü bazen üzerine tıklamak bile "bir şekilde yanlış" olsa bile daha önce böyle olsaydı basılı kalır, ancak kodun geri kalanı blokta işe yarayacak ve kafa karışıklığı başlayacak:
1. yükleme yüzdesi Yorum . Kaldırın ve sessiz olacak.
2. Kendi başına, boşta kalma çevriminin yüzde üzerinde gözle görülür bir etkisi yoktur.
3. Düzenlemenin titremesiyle ilgili sorun, bir 0-grafik sorunu değildir. Bu, bir grafik nesnesine bir olay gönderme sorunudur. Bu, ana 0 grafiğinin yeniden çizilmesine ve titremeye neden olur.
1. Yorum yüzdesini yükler. Kaldırın ve sessiz olacak.
2. Kendi başına, boşta kalma çevriminin yüzde üzerinde gözle görülür bir etkisi yoktur.
3. Düzenlemenin titremesiyle ilgili sorun, bir 0-grafik sorunu değildir. Bu, bir grafik nesnesine bir olay gönderme sorunudur. Bu, ana 0 grafiğinin yeniden çizilmesine ve titremeye neden olur.
yeni soru mu sordun
Bir moderatörün sel basması iyi değil. Açıklarım. Bir kullanıcı tarafından (bir moderatör dahil) konuya yeni bir mesaj eklenmesine genellikle "yanıt" denir. Sarkastik bir yorum olsa bile.
Bu nedenle, bir kez daha, açıklama ile: Eğer bir sirk olarak görüyorsanız, silmekten çekinmeyin. Veya konuya yeni bir mesaj göndermeyi deneyin. Yanlış bilgiler kullanıcıları yanıltabilir.
Ekleyeceğim. Kullanıcı olaylarının önceki kurallara göre sırayı doldurduğu resmi olarak ortaya çıkarsa (eğer yardımcı olursanız) size ilk teşekkür eden ben olacağım.
Ekleyeceğim. Kullanıcı olaylarının önceki kurallara göre sırayı doldurduğu resmi olarak ortaya çıkarsa (eğer yardımcı olursanız) size ilk teşekkür eden ben olacağım.
Kabaca söylemek gerekirse, olaylarla çalışma hiç değişmedi. Sadece kılavuzda tam olarak doğru değildi.
...
Oluşturulan boş mesajı her uygulamamda aktif olarak kullanıyorum. Her şey çalışıyor.
Uygulamalarımın her birinde oluşturulan boşta mesajını aktif olarak kullanıyorum. Her şey çalışıyor.
sergeev:
Böcek yakalandı.Bunun nedeni, bu grafikteki EA'dan EventChartCustom olayının kendisine gönderilmesidir. Bu olay gönderiminin ana pencerenin grafik güncellemesine (ChartRedraw) neden olduğu ortaya çıktı.
//---
Çözümünüzü test etmek için böyle bir Uzman Danışman yaptım ve aynı zamanda OBJ_EDIT nesnesini düzenlerken metnin ultra sık titremesiyle sorunu çözmeye çalıştım.
//---
//---
Expert Advisor'ı başlattıktan sonra, sol üst köşedeki grafikte aşağıdakileri göreceğiz:
//---
" START event_idle++ " düğmesine tıklayarak ( Alex ) çözümünüze erişim sağlıyoruz. event_idle++ sayacının değerini nasıl artırdığını grafikte görüyoruz.
Düğmeye basıldığı sürece kodunuz çalışacaktır. Doğru, kaynakları çok yiyor. CPU kullanımı (çift çekirdekte test edilmiştir) ~%90 ile ~%100 arasında değişmektedir. Başlatmadan önce veya düğme bırakıldığı anda, işlemci yükü ~ %5 ila ~ %10 arasındadır . Grafikte tıklamak (farenin sol tuşuna tıklamak) sayacı sıfırlar.
Giriş alanına metin girmek titremeye neden olmaz, çünkü kodunuzu girerken " On/Off event_idle++ " global değişkeni kullanılarak devre dışı bırakılır. Bu elbette bir koltuk değneği, ancak geçici bir çözüm olarak bazı basit çözümler için oldukça uygundur.
CPU kullanımı tek sorun değil. Sayaç çalışırken, ticaret terminalindeki pencereler hızla açılır, ancak pencerenin yeniden boyutlandırılması oldukça belirgin şekilde yavaşlar. Her zaman değil, ama böyle anlar var.
Tek sorun CPU kullanımı değil. Sayaç çalışırken, ticaret terminalindeki pencereler hızla açılır, ancak pencerenin yeniden boyutlandırılması oldukça belirgin şekilde yavaşlar. Her zaman değil, ama böyle anlar var.
İşlemci yükleme sorunu aşağıdaki gibi çözülebilir. Olay sayacının saniyede bir güncellendiğini belirtiyoruz. Bu kodu ekliyoruz:
OnInit'te ():
//---
Programın gövdesinde:
//---
Alex'in kodunda (kırmızı ile işaretlenmiştir):
//---
CHARTEVENT_CLICK olay işleme bloğunda (kırmızı ile işaretlenmiştir):
//---
CHARTEVENT_OBJECT_CLICK olay işleme bloğunu aşağıdaki gibi düzenliyoruz + Düğmelerin durumunun hala kontrol edilmesi gerekiyor, çünkü bazen üzerine tıklamak bile "bir şekilde yanlış" olsa bile daha önce böyle olsaydı basılı kalır, ancak kodun geri kalanı blokta işe yarayacak ve kafa karışıklığı başlayacak:
//---
Şimdi her şey daha ilginç. :)
//---
Not : Çok fazla saniye varsa, GetTickCount () ile birleştirmeyi deneyebilirsiniz.
ne söyleyebilirim
1. yükleme yüzdesi Yorum . Kaldırın ve sessiz olacak.
2. Kendi başına, boşta kalma çevriminin yüzde üzerinde gözle görülür bir etkisi yoktur.
3. Düzenlemenin titremesiyle ilgili sorun, bir 0-grafik sorunu değildir. Bu, bir grafik nesnesine bir olay gönderme sorunudur. Bu, ana 0 grafiğinin yeniden çizilmesine ve titremeye neden olur.
ne söyleyebilirim
1. Yorum yüzdesini yükler. Kaldırın ve sessiz olacak.
2. Kendi başına, boşta kalma çevriminin yüzde üzerinde gözle görülür bir etkisi yoktur.
3. Düzenlemenin titremesiyle ilgili sorun, bir 0-grafik sorunu değildir. Bu, bir grafik nesnesine bir olay gönderme sorunudur. Bu, ana 0 grafiğinin yeniden çizilmesine ve titremeye neden olur.