Tentei tudo o que sugeriu, torcido e virado, mas ainda pinta linhas de uma cor em MT5. E em MT4 pinta linhas normalmente, e sem qualquer atraso.
Acho que ainda não experimentei tudo.
Alexey Viktorov:
É muito provável que após renomear um objecto ainda não esteja disponível para referência a ele. Pode tentar colocar ChartRedraw depois de renomear. Se isso não ajudar, teremos de construir a sequência de outra forma.
ps; Outra opção: primeiro repintar com o nome sparam e depois dar-lhe um novo nome.
Por alguma razão, o evento CHARTEVENT_OBJECT_CREATE conta imediatamente após o rato tocar no gráfico, e não após terminar a criação do objecto. E os preços das diferentes pontas do rastilho acabam por ser os mesmos. Por isso, é necessário repintar depois de o objecto ser criado.
E mais uma observação: pinta níveis ou a linha principal do pavio?
Aqui estão três variantes:
Um.
bool endCreate;
string newName;
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
if(endCreate)
{
double Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
endCreate = false;
}
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_CREATE)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объекта
newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект
endCreate = true;
}
}/******************************************************************/
Segundo.
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
string newName;
if(id == CHARTEVENT_OBJECT_CREATE)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объекта
newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объект
}
if(id == CHARTEVENT_OBJECT_DRAG)
{
double Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
}
}/******************************************************************/
Três.
/*******************Expert initialization function*******************/intOnInit()
{
ChartSetInteger(ChartID(), CHART_EVENT_OBJECT_CREATE, true);
return(INIT_SUCCEEDED);
}/******************************************************************//************************Expert tick function************************/voidOnTick()
{
}/******************************************************************//***********************OnChartEvent function************************/voidOnChartEvent(constint id, // идентификатор событияconstlong& lparam, // параметр события типа longconstdouble& dparam, // параметр события типа doubleconststring& sparam // параметр события типа string
)
{
if(id == CHARTEVENT_OBJECT_DRAG)
{
ulong timeCreate = ObjectGetInteger(0, sparam, OBJPROP_CREATETIME); // получим время создания объектаstring newName = "Fibo "+string(timeCreate); // сформируем новое имя объектаObjectSetString(0, sparam, OBJPROP_NAME, newName); // переименуем объектdouble Level_0= ObjectGetDouble(0, newName, OBJPROP_PRICE, 0);
double Level_1= ObjectGetDouble(0, newName, OBJPROP_PRICE, 1);
if(Level_0 > Level_1)
ObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrDeepSkyBlue);
elseObjectSetInteger(0, newName, OBJPROP_LEVELCOLOR, 1, clrYellow);
ChartRedraw();
}
}/******************************************************************/
//--- найдем максимальное и минимальное значение графикаdouble max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- определим шаг изменения цены и заполним массивdouble step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- определим точки для рисования линииint d1=InpDate1*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
//--- количество видимых баров в окне графикаint bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- размер массива priceint accuracy=1000;
//--- массивы для хранения значений дат и цен, которые будут использованы//--- для установки и изменения координат точек привязки линииdatetime date[];
double price[];
//--- выделение памятиArrayResize(date,bars);
ArrayResize(price,accuracy);
//--- заполним массив датResetLastError();
if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
{
Print("Не удалось скопировать значения времени! Код ошибки = ",GetLastError());
return;
}
//--- заполним массив цен//--- найдем максимальное и минимальное значение графикаdouble max_price=ChartGetDouble(0,CHART_PRICE_MAX);
double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- определим шаг изменения цены и заполним массивdouble step=(max_price-min_price)/accuracy;
for(int i=0;i<accuracy;i++)
price[i]=min_price+i*step;
//--- определим точки для рисования линииint d1=InpDate1*(bars-1)/100;
int d2=InpDate2*(bars-1)/100;
int p1=InpPrice1*(accuracy-1)/100;
int p2=InpPrice2*(accuracy-1)/100;
//--- создадим линию трендаif(!TrendCreate(0,InpName,0,date[d1],price[p1],date[d2],price[p2],InpColor,InpStyle,
InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
{
return;
}
As linhas de tendência são desenhadas em 2 pontos, ou são os dados de preço ou os dados de outro indicador, o exemplo do desenho por fractais, que, a propósito, já conhece)
cm BASKET Советник управляющий счетом. Показывает какие пары инструментов сейчас торгуются на данном счете. Показывает прибыль полученную по каждой паре за определенное время. Помогает переключаться между множества открытых окон... Virtual Trailing Stop 2
Aslinhas de tendência são desenhadas em 2 pontos, ou são dados de preços ou dados de outro indicador, um exemplo de desenho por fractais, que, a propósito, lhe é familiar)
Por alguma razão, o evento CHARTEVENT_OBJECT_CREATE conta imediatamente após o rato tocar no gráfico, e não após o objecto ser criado. E os preços das diferentes pontas do rastilho acabam por ser os mesmos. Por isso, temos de a repintar depois do objecto ser criado.
Como determinou isto? Logicamente?
E outra observação: pinta níveis ou a linha principal da fibra?
Tentei repintar linhas de tendência em diferentes variantes))))
Aqui estão três variantes:
Um.
Segundo.
A Terceira.
Muito obrigado por isso!!! Posso aprender a pensar de forma lógica, com base nos vossos exemplos))))
Está envolvido na codificação, ou no comércio? quer dizer, há quanto tempo está a negociar? há 12 anos))))
Muito obrigado pelas opções!!! Vou usar os vossos exemplos e aprender a pensar logicamente))))
Há 12 anos que o faço).
Nem sempre sou tão "gentil". Nem sempre sou tão "gentil", apenas durante os ataques... Por isso, não há muito a aprender com os meus exemplos. Estou no comércio quase há tanto tempo.
Nem sempre sou tão "gentil". Só durante os ataques... Por isso, não há muito a aprender com os meus exemplos. O mesmo se passa com o comércio.
Não sei, estou a aprender melhor os métodos e técnicas de programação através de exemplos. Quem me dera que a MQL5 tivesse um tutorial como o MQL4 onde o robô fosse explicado passo a passo usando ficheiros incluídos.
Então já conhece a essência das flutuações do mercado? Parece-me que já aprendi)))) Só preciso de o perguntar, porque posso trabalhar com ele durante um certo tempo, e depois parto e crio uma)))))) Mas agora compreendo qualquer bem)))) Gosto especialmente da S&P, é técnica e dinâmica))
Bem, combinando-os, é possível criar muitos objectos diferentes num único indicador)
Queria fazê-lo dessa forma. Há uma semana que o tento fazer, mas não iria funcionar.
- Parece ser melhor no segundo indicador - não se pode ver pontos passados e as próprias linhas, existem apenas os pontos e níveis que são utilizados para determinar as entradas no mercado.
----------------
estes dois indicadores são um (este é o meu esboço - não mudei os nomes de 4 indicadores no mesmo)
Tentei tudo o que sugeriu, torcido e virado, mas ainda pinta linhas de uma cor em MT5. E em MT4 pinta linhas normalmente, e sem qualquer atraso.
Acho que ainda não experimentei tudo.
É muito provável que após renomear um objecto ainda não esteja disponível para referência a ele. Pode tentar colocar ChartRedraw depois de renomear. Se isso não ajudar, teremos de construir a sequência de outra forma.
ps; Outra opção: primeiro repintar com o nome sparam e depois dar-lhe um novo nome.Por alguma razão, o evento CHARTEVENT_OBJECT_CREATE conta imediatamente após o rato tocar no gráfico, e não após terminar a criação do objecto. E os preços das diferentes pontas do rastilho acabam por ser os mesmos. Por isso, é necessário repintar depois de o objecto ser criado.
E mais uma observação: pinta níveis ou a linha principal do pavio?
Aqui estão três variantes:
Um.
Segundo.
Três.
como organizar um algoritmo num indicador para tomar pontos e transferi-los para outro amortecedor.
- Para traçar as linhas de tendência. (como na fotografia)
-----------------------------------------
Tentei tudo com intuição, eles são desenhados mas em lugares estranhos.
-----------------------------------------------------------------------------------------------------
Anexei o indicador, ele funciona, mas não consigo ajustar estas linhas.
Não o posso fazer. Talvez alguém me possa orientar para os artigos sobre os pontos de ligação da linha de tendência.
-- Não posso desenhá-los, não é claro em que pontos.
---------------------------------------------------------
algo do género, talvez?
-------------------
estou no caminho certo ????
Talvez alguém me possa orientar para artigos sobre pontos de linha de tendência.
-- tudo o que posso fazer agora é desenhá-los, não é claro em que pontos.
---------------------------------------------------------
algo do género, talvez?
-------------------
estou no caminho certo ????
As linhas de tendência são desenhadas em 2 pontos, ou são os dados de preço ou os dados de outro indicador, o exemplo do desenho por fractais, que, a propósito, já conhece)
https://www.mql5.com/ru/code/29210
Aslinhas de tendência são desenhadas em 2 pontos, ou são dados de preços ou dados de outro indicador, um exemplo de desenho por fractais, que, a propósito, lhe é familiar)
https://www.mql5.com/ru/code/29210
Eu queria fazê-lo com um indicador, mas não funcionou.
- Tive de o fazer com dois indicadores.
Foi o que eu fiz.
---------------------------
Esqueci-me de dizer obrigado! - Obrigado!!!
Eu queria fazê-lo num Indicador, mas não funcionou, mas fi-lo neste, que sugeriu.
- por isso, tive de o fazer com dois Indicadores.
Foi assim que funcionou.
---------------------------
Esqueci-me de dizer obrigado! - Obrigado!!!
Combinando-os bem, é possível criar muitos objectos diferentes num único indicador)
Aparentemente ainda não tentei tudo.
Por alguma razão, o evento CHARTEVENT_OBJECT_CREATE conta imediatamente após o rato tocar no gráfico, e não após o objecto ser criado. E os preços das diferentes pontas do rastilho acabam por ser os mesmos. Por isso, temos de a repintar depois do objecto ser criado.
Como determinou isto? Logicamente?
E outra observação: pinta níveis ou a linha principal da fibra?
Tentei repintar linhas de tendência em diferentes variantes))))
Aqui estão três variantes:
Um.
Segundo.
A Terceira.
Muito obrigado por isso!!! Posso aprender a pensar de forma lógica, com base nos vossos exemplos))))
Está envolvido na codificação, ou no comércio? quer dizer, há quanto tempo está a negociar? há 12 anos))))
Muito obrigado pelas opções!!! Vou usar os vossos exemplos e aprender a pensar logicamente))))
Há 12 anos que o faço).
Nem sempre sou tão "gentil". Nem sempre sou tão "gentil", apenas durante os ataques... Por isso, não há muito a aprender com os meus exemplos. Estou no comércio quase há tanto tempo.
Nem sempre sou tão "gentil". Só durante os ataques... Por isso, não há muito a aprender com os meus exemplos. O mesmo se passa com o comércio.
Não sei, estou a aprender melhor os métodos e técnicas de programação através de exemplos. Quem me dera que a MQL5 tivesse um tutorial como o MQL4 onde o robô fosse explicado passo a passo usando ficheiros incluídos.
Estou no comércio há quase tanto tempo.
Então já conhece a essência das flutuações do mercado? Parece-me que já aprendi)))) Só preciso de o perguntar, porque posso trabalhar com ele durante um certo tempo, e depois parto e crio uma)))))) Mas agora compreendo qualquer bem)))) Gosto especialmente da S&P, é técnica e dinâmica))
Bem, combinando-os, é possível criar muitos objectos diferentes num único indicador)
Queria fazê-lo dessa forma. Há uma semana que o tento fazer, mas não iria funcionar.
- Parece ser melhor no segundo indicador - não se pode ver pontos passados e as próprias linhas, existem apenas os pontos e níveis que são utilizados para determinar as entradas no mercado.
----------------
estes dois indicadores são um (este é o meu esboço - não mudei os nomes de 4 indicadores no mesmo)