Veterros: Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
else aggiungere dopo la parentesi graffa di chiusura, o dentro questa parentesi spostare gli operatori di modifica dell'oggetto.
Veterros: Potete dirmi perché il 4202 cede (l'oggetto non esiste). Esatto, non esiste, deve essere creato, ma io (non esiste)! Cosa ci si può fare? O ho sbagliato da qualche altra parte?
Ho provato frettolosamente la tua versione come script, sostituendo il tempo e i segni e controllando gli oggetti, ma non ha restituito errori.
Forse, per risparmiare la fatica, provare a formare oggetti freccia considerando il nuovo linguaggio MQL4?
Ecco il "corpo" dello script che crea gli oggetti freccia che hai specificato, tenendo conto del nuovo linguaggio (i tempi e i segni sono arbitrari, invece di SignalBarsTime, Hi2, SignalBarsTime, Lo2, che conosci solo finora):
//+------------------------------------------------------------------+//| 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.: Ho corretto la linea nel mio post sopra, sostituendo ANCHOR_BOTTOM con ANCHOR_TOP:
Grazie mille, molto utile. Vorrei ancora trovare un modo per fare in modo che i nomi degli oggetti siano assegnati automaticamente, devo ridisegnarli ogni volta. Forse consigliare dove imparare a conoscerlo e in quale area cercare?
Veterros: Grazie mille, molto utile. Mi piacerebbe scoprire come nominare automaticamente gli oggetti, perché devo ridisegnarli ogni volta. Forse puoi dirmi dove trovarlo e dove cercare?
Ora non riesco a pensare dove esattamente si possa cercare nell'aiuto o nel sito, ma il tutorial mi ha ricordato questa pagina: https://book.mql4.com/ru/functions/strings
Lì potete trovare informazioni e un esempio di codice. Basta usare TimeToString invece di TimeToStr. Tuttavia, può essere di grande aiuto quando si padroneggia il nuovo linguaggio MQL4. Anche in combinazione con l'aiuto per la lingua aggiornata.
Sì. Il nome individuale può essere scritto in modi diversi.
Per esempio, la funzione per formare nomi individuali per gli oggetti può apparire così:
E nel corpo del programma può essere emesso così (avendo scritto prima nelle condizioni ciò che servirà come prefisso):
Inoltre, per un oggetto appena creato potrebbe apparire così
Ora non riesco a pensare dove esattamente si possa cercare nell'aiuto o nel sito, ma il tutorial mi ha ricordato questa pagina: https://book.mql4.com/ru/functions/strings
Lì potete trovare informazioni e un esempio di codice. Basta usare TimeToString invece di TimeToStr. Tuttavia, può essere di grande aiuto quando si padroneggia il nuovo linguaggio MQL4. Anche in combinazione con l'aiuto per la lingua aggiornata.
Ciao, tesoro ;) Immaginate, da quanto tempo scrivo codice per diversi oggetti e non ho mai pensato di fare una funzione separata per creare i nomi - l'ho sempre fatto direttamente nel codice. Ho lavorato troppo. Grazie per il suggerimento. E dappertutto, dove rilevante, per compattezza, scrivo le funzioni, ma qui qualcosa di tormentato tutto il tempo.
Veterros:
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
else aggiungere dopo la parentesi graffa di chiusura, o dentro questa parentesi spostare gli operatori di modifica dell'oggetto.
Grazie, ma il problema non è sparito.
Qualcuno può suggerire se queste espressioni sono equivalenti o no?
Potete dirmi perché il 4202 cede (l'oggetto non esiste). Esatto, non esiste, deve essere creato, ma io (non esiste)! Cosa ci si può fare? O ho sbagliato da qualche altra parte?
Ho provato frettolosamente la tua versione come script, sostituendo il tempo e i segni e controllando gli oggetti, ma non ha restituito errori.
Forse, per risparmiare la fatica, provare a formare oggetti freccia considerando il nuovo linguaggio MQL4?
Ecco il "corpo" dello script che crea gli oggetti freccia che hai specificato, tenendo conto del nuovo linguaggio (i tempi e i segni sono arbitrari, invece di SignalBarsTime, Hi2, SignalBarsTime, Lo2, che conosci solo finora):
P./S.: Ho corretto la linea nel mio post sopra, sostituendo ANCHOR_BOTTOM con ANCHOR_TOP:
Grazie mille, molto utile. Mi piacerebbe scoprire come nominare automaticamente gli oggetti, perché devo ridisegnarli ogni volta. Forse puoi dirmi dove trovarlo e dove cercare?
Sì. Il nome individuale può essere scritto in modi diversi.
Per esempio, la funzione per formare nomi individuali per gli oggetti può apparire così:
E nel corpo del programma può essere emesso così (avendo scritto prima nelle condizioni ciò che servirà come prefisso):
... string nameobj=nameNi(prefixX,timeX);Inoltre, per un oggetto appena creato potrebbe apparire così
Ora non riesco a pensare dove esattamente si possa cercare nell'aiuto o nel sito, ma il tutorial mi ha ricordato questa pagina: https://book.mql4.com/ru/functions/strings
Lì potete trovare informazioni e un esempio di codice. Basta usare TimeToString invece di TimeToStr. Tuttavia, può essere di grande aiuto quando si padroneggia il nuovo linguaggio MQL4. Anche in combinazione con l'aiuto per la lingua aggiornata.
Aggiungere il tempo al nome dell'oggetto.
Sì. Il nome individuale può essere scritto in modi diversi.
Per esempio, la funzione per formare nomi individuali per gli oggetti può apparire così:
E nel corpo del programma può essere emesso così (avendo scritto prima nelle condizioni ciò che servirà come prefisso):
Inoltre, per un oggetto appena creato potrebbe apparire così
Ora non riesco a pensare dove esattamente si possa cercare nell'aiuto o nel sito, ma il tutorial mi ha ricordato questa pagina: https://book.mql4.com/ru/functions/strings
Lì potete trovare informazioni e un esempio di codice. Basta usare TimeToString invece di TimeToStr. Tuttavia, può essere di grande aiuto quando si padroneggia il nuovo linguaggio MQL4. Anche in combinazione con l'aiuto per la lingua aggiornata.
Ciao, tesoro ;) Immaginate, da quanto tempo scrivo codice per diversi oggetti e non ho mai pensato di fare una funzione separata per creare i nomi - l'ho sempre fatto direttamente nel codice. Ho lavorato troppo. Grazie per il suggerimento. E dappertutto, dove rilevante, per compattezza, scrivo le funzioni, ma qui qualcosa di tormentato tutto il tempo.
ZS. Ci hai detto ciao Lyov ;).