ObjectFind() işlevi, ana pencerenin numarasını döndürür. Ve bu sayı 0'a eşittir. Öte yandan, 0 == false, eğer fonksiyon 0 döndürürse, false döndürmekle aynı olur. Tabii ki bunu uygulamazdım, eğer fonksiyon birdenbire -1 döndürürse yani bir hata varsa, o zaman nesnenin konumunu ana pencerede değil de düşünebiliriz. Evet, artı her şeye, hangi düzeltmelerin yapılacağını asla bilemezsiniz...
Genel olarak, tartışmayın ve bunu yapmayı öğrenmeyin ...
ObjectFind() işlevi, ana pencerenin numarasını döndürmez. Ve nesnenin bulunduğu pencerenin numarası (0,1,2...) veya nesne yoksa -1.
Merak ediyorum, "-1" yanlış mı doğru mu?
Bool türü, sayısal gösterimi sırasıyla 1 veya 0 olantrue(true) veyafalse (false) mantıksal değerlerini depolamak için tasarlanmıştır.
ObjectFind() işlevi, ana pencerenin numarasını döndürür. Ve bu sayı 0'a eşittir. Öte yandan, 0 == false, eğer fonksiyon 0 döndürürse, false döndürmekle aynı olur. Tabii ki bunu uygulamazdım, eğer fonksiyon birdenbire -1 döndürürse yani bir hata varsa, o zaman nesnenin konumunu ana pencerede değil de düşünebiliriz. Evet, artı her şeye, hangi düzeltmelerin yapılacağını asla bilemezsiniz...
Genel olarak, tartışmayın ve bunu yapmayı öğrenmeyin ...
Bunun yapmaya değmediğini anlıyorum ama estetik uğruna yapmak zorunda kaldım (== 0 her durumda çirkin görünüyor). Ve nesneye sadece ana pencerede ihtiyacım var.
Bunun yapmaya değmediğini anlıyorum ama estetik uğruna yapmak zorunda kaldım (== 0 her durumda çirkin görünüyor). Ve nesneye sadece ana pencerede ihtiyacım var.
Sorun: Grafikte düğmeye basıldığında sarı ve gri çizgiler ("Satmayı Durdur" ve "izin verilmiyor") sürekli olarak oluşturuluyor ve titriyor. Ayrıca, ObjectCreate() sürekli olarak true döndürür ve false değil, yani başka bir penceredeymiş gibi oluşturur ve bu titremeyi açıklayabilir ... ancak pencere yalnızca ana penceredir ve yeşil bir çizgiye sahiptir ("Satın Al Durdur" ) kırmızıda olduğu gibi ("Kayıp Durdur") hiçbir anormallik gözlemlenmez.
voidOnChartEvent ( constint id, constlong &lparam, constdouble &dparam, conststring &sparam)
{
datetimestatic dt = 0 ;
doublestatic price = 0 ;
intstatic window = 0 ;
stringstatic line_name;
if (id== CHARTEVENT_OBJECT_CLICK ){
...
//Нажатие на SO в зависимоти от расположения панели создаёт линиюif (sparam== "Button Stop Order" ){
if (panel_position == 1 || panel_position == 2 ){
line_name = "Buy Stop" ;
CreateLine(line_name, clrGreen );
}
if (panel_position == 3 || panel_position == 4 ){
line_name = "Sell Stop" ;
CreateLine(line_name, clrYellow );
}
}
//Нажатие на линию удаляет её и создаёт краснуюif (sparam== "Buy Stop" || sparam== "Sell Stop" ){
ObjectDelete (line_name);
line_name = "Stop Loss" ;
CreateLine(line_name, clrRed );
}
//Нажатие на красной линии удаляет её и отжимает кнопкуif (sparam== "Stop Loss" ){
ObjectDelete (line_name);
button_name = "Button Stop Order" ;
ms= GetMicrosecondCount ();
}
}
//Если кнопка SO нажата, то линия будет следовать за курсоромif ( ObjectGetInteger ( 0 , "Button Stop Order" , OBJPROP_STATE )){
int x = ( int )lparam;
int y = ( int )dparam;
//Переведём координаты X, Y в дату и времяif ( ChartXYToTimePrice ( 0 ,x,y,window,dt,price)){
//Линия меняет цвет с зелёного на желтыйif (price < Bid){
if ( ObjectFind ( "Buy Stop" ) == window || ObjectFind ( "not allowed" ) == window){
ObjectDelete (line_name);
line_name = "Sell Stop" ;
CreateLine(line_name, clrYellow );
}
}
//Линия меняет цвет с желтого на зелёныйif (price > Ask){
if ( ObjectFind ( "Sell Stop" ) == window || ObjectFind ( "not allowed" ) == window){
ObjectDelete (line_name);
line_name = "Buy Stop" ;
CreateLine(line_name, clrGreen );
}
}
//Линия меняет цвет на серый если в зоне спредаif (price > Bid && price < Ask){
if ( ObjectFind ( "Buy Stop" ) == window || ObjectFind ( "Sell Stop" ) == window){
ObjectDelete (line_name);
line_name = "not allowed" ;
CreateLine(line_name, clrGray );
}
}
//Прикрепляем линию к курсоруif (id == CHARTEVENT_MOUSE_MOVE )
if ( ObjectMove ( 0 ,line_name, 0 , 0 ,price))
ChartRedraw ( 0 );
}
} elseif ( ObjectFind (line_name) == window) Print ( ObjectDelete (line_name));
//Если нажать Esc то удалится линия и кнопка отожметсяif (id == CHARTEVENT_KEYDOWN && lparam == 27 ){
button_name = "Button Stop Order" ;
ms= GetMicrosecondCount ();
}
}
//----------------------------------------------------------------------void CreateLine( conststring name, constcolor clr)
{
Print ( ObjectCreate ( 0 , name, OBJ_HLINE , 0 , 0 , 0 ));
ObjectSetInteger ( 0 , name, OBJPROP_COLOR , clr);
ObjectSetInteger ( 0 , name, OBJPROP_STYLE , 3 );
}
Hayır Makar, şuna benziyor:
ObjectFind() işlevi, ana pencerenin numarasını döndürür. Ve bu sayı 0'a eşittir. Öte yandan, 0 == false, eğer fonksiyon 0 döndürürse, false döndürmekle aynı olur. Tabii ki bunu uygulamazdım, eğer fonksiyon birdenbire -1 döndürürse yani bir hata varsa, o zaman nesnenin konumunu ana pencerede değil de düşünebiliriz. Evet, artı her şeye, hangi düzeltmelerin yapılacağını asla bilemezsiniz...
Genel olarak, tartışmayın ve bunu yapmayı öğrenmeyin ...
ObjectFind() işlevi, ana pencerenin numarasını döndürmez. Ve nesnenin bulunduğu pencerenin numarası (0,1,2...) veya nesne yoksa -1.
Merak ediyorum, "-1" yanlış mı doğru mu?
Bool türü, sayısal gösterimi sırasıyla 1 veya 0 olan true (true) veya false (false) mantıksal değerlerini depolamak için tasarlanmıştır .ObjectFind() işlevi, ana pencerenin numarasını döndürmez. Ve nesnenin bulunduğu pencerenin numarası (0,1,2...) veya nesne yoksa -1.
Nesnenin ana pencerede bulunduğu belirli bir durumdan bahsettim. Tartışmayın ve bunu yapmayı öğrenmeyin ...
MakarFX # :
Merak ediyorum, "-1" yanlış mı doğru mu?
Bool türü, sayısal gösterimi sırasıyla 1 veya 0 olan true (true) veya false (false) mantıksal değerlerini depolamak için tasarlanmıştır .false yalnızca 0'dır. Diğer her şey doğrudur
false yalnızca 0'dır. Diğer her şey doğrudur
Hayır Makar, şuna benziyor:
ObjectFind() işlevi, ana pencerenin numarasını döndürür. Ve bu sayı 0'a eşittir. Öte yandan, 0 == false, eğer fonksiyon 0 döndürürse, false döndürmekle aynı olur. Tabii ki bunu uygulamazdım, eğer fonksiyon birdenbire -1 döndürürse yani bir hata varsa, o zaman nesnenin konumunu ana pencerede değil de düşünebiliriz. Evet, artı her şeye, hangi düzeltmelerin yapılacağını asla bilemezsiniz...
Genel olarak, tartışmayın ve bunu yapmayı öğrenmeyin ...
Bunun yapmaya değmediğini anlıyorum ama estetik uğruna yapmak zorunda kaldım (== 0 her durumda çirkin görünüyor). Ve nesneye sadece ana pencerede ihtiyacım var.
Bunun yapmaya değmediğini anlıyorum ama estetik uğruna yapmak zorunda kaldım (== 0 her durumda çirkin görünüyor). Ve nesneye sadece ana pencerede ihtiyacım var.
O zaman yap
nesne yoksa, "-1" alırsınız, yani. doğru
Sorun: Grafikte düğmeye basıldığında sarı ve gri çizgiler ("Satmayı Durdur" ve "izin verilmiyor") sürekli olarak oluşturuluyor ve titriyor. Ayrıca, ObjectCreate() sürekli olarak true döndürür ve false değil, yani başka bir penceredeymiş gibi oluşturur ve bu titremeyi açıklayabilir ... ancak pencere yalnızca ana penceredir ve yeşil bir çizgiye sahiptir ("Satın Al Durdur" ) kırmızıda olduğu gibi ("Kayıp Durdur") hiçbir anormallik gözlemlenmez.
O zaman yap
nesne yoksa, "-1" alırsınız, yani. doğru
Denedim, istisnanın çalışması için yalnızca nesnelerin adını (ters çevirme) değiştirmem gerekiyor. Ancak bu şekilde çizgiler hiç oluşturulmaz.
Denedim, sadece nesnelerin adını değiştirmem gerekiyor. Ancak bu şekilde çizgiler hiç oluşturulmaz.
Ben de sen de yarat, sadece fiyat "0"