Veterros: Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
caso contrário, adicionar após o fechamento do suporte encaracolado, ou dentro deste suporte mover os operadores de modificação de objetos.
Veterros: Vocês podem me dizer por que o 4202 desiste (Objeto não existe). Correto, ele não existe, ele deve ser criado, mas ele me (não existe)! O que pode ser feito com ele? Ou eu estraguei tudo em outro lugar?
Tentei apressadamente sua versão como um roteiro, substituindo o tempo e as marcas e verificando objetos, mas não retornou erros.
Talvez, para poupar o trabalho, tente formar objetos de seta considerando a nova linguagem MQL4?
Aqui está o "corpo" do roteiro que cria os objetos de seta que você especificou, levando em conta a nova linguagem (os tempos e as marcas são arbitrários, ao invés de SignalBarsTime, Hi2, SignalBarsTime, Lo2, que você conhece apenas até agora):
//+------------------------------------------------------------------+//| 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.: Corrigi agora a linha em meu posto acima, substituindo ANCHOR_BOTTOM por ANCHOR_TOP:
Muito obrigado, muito útil. Eu ainda gostaria de encontrar uma maneira de fazer com que os nomes dos objetos sejam atribuídos automaticamente, tenho que redesenhá-los a cada vez. Talvez aconselhar onde aprender sobre o assunto e em que área procurar?
Veterros: Muito obrigado, isso é muito útil. Eu gostaria de descobrir como nomear objetos automaticamente, porque tenho que redesenhá-los a cada vez. Talvez você possa me dizer onde descobrir e onde procurar?
Agora não consigo pensar onde exatamente você pode procurar em ajuda ou pesquisar o site, mas o tutorial me lembrou desta página: https://book.mql4.com/ru/functions/strings
Lá você pode encontrar informações e uma amostra de código. Basta usar o TimeToString em vez do TimeToStr. Entretanto, pode ser de grande ajuda quando se domina a nova linguagem MQL4. Também em combinação com a ajuda para a linguagem atualizada.
Sim. O nome individual pode ser grafado de diferentes maneiras.
Por exemplo, a função de formar nomes individuais para objetos pode se parecer com isto:
E no corpo do programa pode ser produzido assim (tendo escrito previamente em condições o que servirá como prefixo):
Além disso, para um objeto recém-criado, ele poderia se parecer com este
Agora não consigo pensar onde exatamente você pode procurar em ajuda ou pesquisar o site, mas o tutorial me lembrou desta página: https://book.mql4.com/ru/functions/strings
Lá você pode encontrar informações e uma amostra de código. Basta usar o TimeToString em vez do TimeToStr. Entretanto, pode ser de grande ajuda quando se domina a nova linguagem MQL4. Também em combinação com a ajuda para a linguagem atualizada.
Oi, querido ;) Imagine há quanto tempo estou escrevendo código para diferentes objetos e nunca pensei em fazer uma função separada para criar nomes - eu sempre fiz isso diretamente no código. Eu tenho trabalhado muito. Obrigado pela dica. E em todos os outros lugares, quando relevante, para a compacidade, escrevo as funções, mas aqui algo atormentado o tempo todo.
Veterros:
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
caso contrário, adicionar após o fechamento do suporte encaracolado, ou dentro deste suporte mover os operadores de modificação de objetos.
Obrigado, mas o problema não desapareceu.
Alguém pode sugerir se essas expressões são equivalentes ou não?
Vocês podem me dizer por que o 4202 desiste (Objeto não existe). Correto, ele não existe, ele deve ser criado, mas ele me (não existe)! O que pode ser feito com ele? Ou eu estraguei tudo em outro lugar?
Tentei apressadamente sua versão como um roteiro, substituindo o tempo e as marcas e verificando objetos, mas não retornou erros.
Talvez, para poupar o trabalho, tente formar objetos de seta considerando a nova linguagem MQL4?
Aqui está o "corpo" do roteiro que cria os objetos de seta que você especificou, levando em conta a nova linguagem (os tempos e as marcas são arbitrários, ao invés de SignalBarsTime, Hi2, SignalBarsTime, Lo2, que você conhece apenas até agora):
P./S.: Corrigi agora a linha em meu posto acima, substituindo ANCHOR_BOTTOM por ANCHOR_TOP:
Muito obrigado, isso é muito útil. Eu gostaria de descobrir como nomear objetos automaticamente, porque tenho que redesenhá-los a cada vez. Talvez você possa me dizer onde descobrir e onde procurar?
Sim. O nome individual pode ser grafado de diferentes maneiras.
Por exemplo, a função de formar nomes individuais para objetos pode se parecer com isto:
E no corpo do programa pode ser produzido assim (tendo escrito previamente em condições o que servirá como prefixo):
... string nameobj=nameNi(prefixX,timeX);Além disso, para um objeto recém-criado, ele poderia se parecer com este
Agora não consigo pensar onde exatamente você pode procurar em ajuda ou pesquisar o site, mas o tutorial me lembrou desta página: https://book.mql4.com/ru/functions/strings
Lá você pode encontrar informações e uma amostra de código. Basta usar o TimeToString em vez do TimeToStr. Entretanto, pode ser de grande ajuda quando se domina a nova linguagem MQL4. Também em combinação com a ajuda para a linguagem atualizada.
Acrescente o tempo ao nome do objeto.
Sim. O nome individual pode ser grafado de diferentes maneiras.
Por exemplo, a função de formar nomes individuais para objetos pode se parecer com isto:
E no corpo do programa pode ser produzido assim (tendo escrito previamente em condições o que servirá como prefixo):
Além disso, para um objeto recém-criado, ele poderia se parecer com este
Agora não consigo pensar onde exatamente você pode procurar em ajuda ou pesquisar o site, mas o tutorial me lembrou desta página: https://book.mql4.com/ru/functions/strings
Lá você pode encontrar informações e uma amostra de código. Basta usar o TimeToString em vez do TimeToStr. Entretanto, pode ser de grande ajuda quando se domina a nova linguagem MQL4. Também em combinação com a ajuda para a linguagem atualizada.
Oi, querido ;) Imagine há quanto tempo estou escrevendo código para diferentes objetos e nunca pensei em fazer uma função separada para criar nomes - eu sempre fiz isso diretamente no código. Eu tenho trabalhado muito. Obrigado pela dica. E em todos os outros lugares, quando relevante, para a compacidade, escrevo as funções, mas aqui algo atormentado o tempo todo.
ZS. Lá você disse olá Lyov ;).