Veterros : Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
kapanış küme parantezinden sonra başka bir şey ekleyin veya nesne değiştirme operatörlerini bu küme ayracının içine taşıyın.
Veterros : Beyler, bana neden 4202 sorun olduğunu söyleyin (Nesne mevcut değil). Var olmadığı doğru, onu yaratmak gerekiyor ama benim için var (yok)! Bununla ne yapılabilir? Yoksa bir yeri batırdım mı?
Sürümünüzü hızlı bir şekilde bir komut dosyası biçiminde denedim, zamanı ve işaretleri değiştirdim ve nesnelerin varlığı için bir kontrol önerdim, ancak bana herhangi bir hata vermedi.
Belki, acı çekmemek için, yeni MQL4 dilini dikkate alarak ok nesnelerinin oluşumunu kullanmaya çalışın?
İşte yeni dili dikkate alarak belirlediğiniz ok nesnelerini oluşturan komut dosyasının "gövdesi" (şimdiye kadar yalnızca sizin tarafınızdan bilinen SignalBarsTime, Hi2, SignalBarsTime, Lo2 yerine zaman ve işaretler keyfi olarak ayarlanır):
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
//---if ( ObjectFind ( 0 , "Продажа" )< 0 )
{
ArrowDownCreate( 0 , "Продажа" , 0 ,Time[ 2 ],High[ 2 ],
ANCHOR_BOTTOM , clrRed , STYLE_SOLID , 5 , false , false , true , 0 );
}
if ( ObjectFind ( 0 , "Покупка" )< 0 )
{
ArrowUpCreate( 0 , "Покупка" , 0 ,Time[ 1 ],Low[ 1 ],
ANCHOR_TOP , clrGreen , STYLE_SOLID , 5 , false , false , true , 0 );
}
}
//+------------------------------------------------------------------+//| Создает знак "Стрелка вниз" https://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_arrow_down//+------------------------------------------------------------------+bool ArrowDownCreate( constlong chart_ID= 0 , // ID графикаconststring name= "ArrowDown" , // имя знакаconstint sub_window= 0 , // номер подокнаdatetime time= 0 , // время точки привязкиdouble price= 0 , // цена точки привязкиconstENUM_ARROW_ANCHOR anchor= ANCHOR_BOTTOM , // способ привязкиconstcolor clr= clrRed , // цвет знакаconstENUM_LINE_STYLE style= STYLE_SOLID , // стиль окаймляющей линииconstint width= 3 , // размер знакаconstbool back= false , // на заднем планеconstbool selection= true , // выделить для перемещенийconstbool hidden= true , // скрыт в списке объектовconstlong z_order= 0 ) // приоритет на нажатие мышью
{
//--- установим координаты точки привязки, если они не заданы//ChangeArrowEmptyPoint(time,price);//--- сбросим значение ошибкиResetLastError ();
//--- создадим знакif (! ObjectCreate (chart_ID,name, OBJ_ARROW_DOWN ,sub_window,time,price))
{
Print ( __FUNCTION__ ,
": не удалось создать знак \"Стрелка вниз\"! Код ошибки = " , GetLastError ());
return ( false );
}
//--- способ привязкиObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR ,anchor);
//--- установим цвет знакаObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль окаймляющей линииObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим размер знакаObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнениеreturn ( true );
}
//+------------------------------------------------------------------+//| Создает знак "Стрелка вверх" https://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_arrow_up//+------------------------------------------------------------------+bool ArrowUpCreate( constlong chart_ID= 0 , // ID графикаconststring name= "ArrowUp" , // имя знакаconstint sub_window= 0 , // номер подокнаdatetime time= 0 , // время точки привязкиdouble price= 0 , // цена точки привязкиconstENUM_ARROW_ANCHOR anchor= ANCHOR_BOTTOM , // способ привязкиconstcolor clr= clrRed , // цвет знакаconstENUM_LINE_STYLE style= STYLE_SOLID , // стиль окаймляющей линииconstint width= 3 , // размер знакаconstbool back= false , // на заднем планеconstbool selection= true , // выделить для перемещенийconstbool hidden= true , // скрыт в списке объектовconstlong z_order= 0 ) // приоритет на нажатие мышью
{
//--- установим координаты точки привязки, если они не заданы//ChangeArrowEmptyPoint(time,price);//--- сбросим значение ошибкиResetLastError ();
//--- создадим знакif (! ObjectCreate (chart_ID,name, OBJ_ARROW_UP ,sub_window,time,price))
{
Print ( __FUNCTION__ ,
": не удалось создать знак \"Стрелка вверх\"! Код ошибки = " , GetLastError ());
return ( false );
}
//--- установим способ привязкиObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR ,anchor);
//--- установим цвет знакаObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль окаймляющей линииObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим размер знакаObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнениеreturn ( true );
}
//+------------------------------------------------------------------+
DiPach : P./S.: Şimdi yukarıdaki mesajımdaki satırı ANCHOR_BOTTOM ile ANCHOR_TOP ile değiştirerek düzelttim:
Çok teşekkür ederim, çok yardımcı oldunuz. Ayrıca nesnelere otomatik olarak isim atamak için nasıl yapılacağını öğrenmek istiyorum, aksi halde her seferinde yeniden çizmeniz gerekiyor. Bunu nereden öğreneceğimi ve hangi alana bakacağımı söyler misin?
Veterros : Çok teşekkür ederim, çok yardımcı oldunuz. Ayrıca nesnelere otomatik olarak isim atamak için nasıl yapılacağını öğrenmek istiyorum, aksi halde her seferinde yeniden çizmeniz gerekiyor. Bunu nereden öğreneceğimi ve hangi alana bakacağımı söyler misin?
Şimdi bunu yardımda tam olarak nerede görebileceğinizi veya site aramasında en iyi nasıl soracağınızı çözemiyorum, ancak ders kitabında şu sayfayı hatırladım: https://book.mql4.com/en/functions/strings
Bilgi ve örnek kod var. TimeToStr yerine TimeToString kullanabilirsiniz. Öğretici eski MQL4 dilinde yazılmıştır, ancak yine de benim açımdan yeni MQL4 dilinde ustalaşırken çok yardımcı olabilir. Güncellenmiş dil için yardımla birlikte dahil.
Evet. Bireysel bir isim farklı şekillerde yazılabilir.
Örneğin, nesneler için ayrı adlar oluşturmaya yönelik bir işlev şöyle görünebilir:
Ve programın gövdesinde, bunun gibi bir şey görüntülenebilir (ön ek olarak hizmet edecek koşullarda önceden yazılmış):
Ayrıca, yeni oluşturulan bir nesne için örneğin şöyle görünebilir:
Şimdi bunu yardımda tam olarak nerede görebileceğinizi veya site aramasında en iyi nasıl soracağınızı çözemiyorum, ancak ders kitabında şu sayfayı hatırladım: https://book.mql4.com/en/functions/strings
Bilgi ve örnek kod var. TimeToStr yerine TimeToString'i kullanabilirsiniz. Öğretici eski MQL4 dilinde yazılmıştır, ancak yine de benim açımdan yeni MQL4 dilinde ustalaşırken çok yardımcı olabilir. Güncellenmiş dil için yardımla birlikte dahil.
Merhaba canım ;) Bir düşünün her türlü nesne için ne kadar kod yazdığımı, bir isim oluşturmak için ayrı bir fonksiyon yapmak hiç aklıma gelmedi - hep kodun içine yazdım. İşte nasıl kazanıldığı. Bahşiş için teşekkürler. Ve ilgili olduğu her yerde, kompaktlık için fonksiyonlar yazıyorum, ama burada her zaman bir şey işkence gördü.
Veterros :
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
kapanış küme parantezinden sonra başka bir şey ekleyin veya nesne değiştirme operatörlerini bu küme ayracının içine taşıyın.
Teşekkürler ama sorun ortadan kalkmadı.
Söyleyin bana, bu ifadelerin eşdeğer olup olmadığını kim düşünüyor:
Beyler, bana neden 4202 sorun olduğunu söyleyin (Nesne mevcut değil). Var olmadığı doğru, onu yaratmak gerekiyor ama benim için var (yok)! Bununla ne yapılabilir? Yoksa bir yeri batırdım mı?
Sürümünüzü hızlı bir şekilde bir komut dosyası biçiminde denedim, zamanı ve işaretleri değiştirdim ve nesnelerin varlığı için bir kontrol önerdim, ancak bana herhangi bir hata vermedi.
Belki, acı çekmemek için, yeni MQL4 dilini dikkate alarak ok nesnelerinin oluşumunu kullanmaya çalışın?
İşte yeni dili dikkate alarak belirlediğiniz ok nesnelerini oluşturan komut dosyasının "gövdesi" (şimdiye kadar yalnızca sizin tarafınızdan bilinen SignalBarsTime, Hi2, SignalBarsTime, Lo2 yerine zaman ve işaretler keyfi olarak ayarlanır):
P./S.: Şimdi yukarıdaki mesajımdaki satırı ANCHOR_BOTTOM ile ANCHOR_TOP ile değiştirerek düzelttim:
Çok teşekkür ederim, çok yardımcı oldunuz. Ayrıca nesnelere otomatik olarak isim atamak için nasıl yapılacağını öğrenmek istiyorum, aksi halde her seferinde yeniden çizmeniz gerekiyor. Bunu nereden öğreneceğimi ve hangi alana bakacağımı söyler misin?
Evet. Bireysel bir isim farklı şekillerde yazılabilir.
Örneğin, nesneler için ayrı adlar oluşturmaya yönelik bir işlev şöyle görünebilir:
Ve programın gövdesinde, bunun gibi bir şey görüntülenebilir (ön ek olarak hizmet edecek koşullarda önceden yazılmış):
... string nameobj=nameNi(prefixX,timeX);Ayrıca, yeni oluşturulan bir nesne için örneğin şöyle görünebilir:
Şimdi bunu yardımda tam olarak nerede görebileceğinizi veya site aramasında en iyi nasıl soracağınızı çözemiyorum, ancak ders kitabında şu sayfayı hatırladım: https://book.mql4.com/en/functions/strings
Bilgi ve örnek kod var. TimeToStr yerine TimeToString kullanabilirsiniz. Öğretici eski MQL4 dilinde yazılmıştır, ancak yine de benim açımdan yeni MQL4 dilinde ustalaşırken çok yardımcı olabilir. Güncellenmiş dil için yardımla birlikte dahil.
Nesne adına zaman ekleyin.
Evet. Bireysel bir isim farklı şekillerde yazılabilir.
Örneğin, nesneler için ayrı adlar oluşturmaya yönelik bir işlev şöyle görünebilir:
Ve programın gövdesinde, bunun gibi bir şey görüntülenebilir (ön ek olarak hizmet edecek koşullarda önceden yazılmış):
Ayrıca, yeni oluşturulan bir nesne için örneğin şöyle görünebilir:
Şimdi bunu yardımda tam olarak nerede görebileceğinizi veya site aramasında en iyi nasıl soracağınızı çözemiyorum, ancak ders kitabında şu sayfayı hatırladım: https://book.mql4.com/en/functions/strings
Bilgi ve örnek kod var. TimeToStr yerine TimeToString'i kullanabilirsiniz. Öğretici eski MQL4 dilinde yazılmıştır, ancak yine de benim açımdan yeni MQL4 dilinde ustalaşırken çok yardımcı olabilir. Güncellenmiş dil için yardımla birlikte dahil.
Merhaba canım ;) Bir düşünün her türlü nesne için ne kadar kod yazdığımı, bir isim oluşturmak için ayrı bir fonksiyon yapmak hiç aklıma gelmedi - hep kodun içine yazdım. İşte nasıl kazanıldığı. Bahşiş için teşekkürler. Ve ilgili olduğu her yerde, kompaktlık için fonksiyonlar yazıyorum, ama burada her zaman bir şey işkence gördü.
not. Orada Lyova sana merhaba dedi;)