Estou procurando sincronizar os níveis de suporte e resistência em diferentes períodos de tempo, ou seja, o suporte adicionado em um período de tempo aparece em todos os outros gráficos de período de tempo
Olá,
Como você adicionou os níveis de resistência no gráfico? Como uma linha horizontal ou uma caixa retangular?
Existe uma maneira de optar por clonar apenas determinados tipos de objetos e ignorar o restante? Além disso, como eu poderia clonar também as propriedades de visibilidade dos objetos, pois parece que a configuração de visibilidade dos objetos clonados não é copiada e precisa ser definida manualmente de novo nos outros gráficos.
Muito obrigado
Existe uma maneira de optar por clonar apenas determinados tipos de objetos e ignorar o restante? Além disso, como eu poderia clonar também as propriedades de visibilidade dos objetos, pois parece que a configuração de visibilidade dos objetos clonados não é copiada e precisa ser definida manualmente de novo nos outros gráficos.
Muito obrigado
Olá, yousurfer.
Se você quiser selecionar objetos por alguma propriedade, poderá adicioná-la a esta função
string CCopyObject::CreateMessage(long chart) { string result = NULL; int total = ObjectsTotal(chart, 0); for(int i=0;i<total;i++) { string name = ObjectName(chart, i, 0); // // if(!( check object property to copy) ) // se você não quiser copiar esse objeto // continuar;// ir para o próximo objeto // switch((ENUM_OBJECT)ObjectGetInteger(chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_HLINE)+"|"+HLineToString(chart, name)+"}"; break; case OBJ_VLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_VLINE)+"|"+VLineToString(chart, name)+"}"; break; case OBJ_TREND: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_TREND)+"|"+TrendToString(chart, name)+"}"; break; case OBJ_RECTANGLE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_RECTANGLE)+"|"+RectangleToString(chart, name)+"}"; break; } } return result; }
Atenciosamente,
Dmitriy.
Com 8 gráficos abertos de um instrumento com TF diferente, o indicador fica visivelmente mais lento e trava o MT, por exemplo, um quadrado recém-desenhado chega a outros gráficos com um atraso de 5 a 10 segundos. Qual pode ser o motivo?
Obrigado!
Você poderia criar um para o MT4? De preferência, com um filtro nos objetos (clone somente horizontal ou tendência...) Há um semelhante para o MT4, mas o código está fechado, não é possível adicionar o filtro.
Para usá-lo no MT4, basta alterar a extensão do arquivo do indicador de mq5 para mq4 e recompilar o indicador.
Para adicionar a filtragem de objetos, você precisa adicionar os parâmetros
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
e corrigir OnChartEvent com a adição da função CheckToClone.
//+------------------------------------------------------------------+ //| Função ChartEvent| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
Com 8 gráficos abertos de um instrumento com TF diferente, o indicador fica visivelmente mais lento e trava o MT, por exemplo, um quadrado recém-desenhado chega a outros gráficos com um atraso de 5 a 10 segundos. Qual poderia ser o motivo?
Obrigado!
Boa tarde.
A questão é que os indicadores funcionam em um thread e um grande número de indicadores no terminal pode realmente tornar seu trabalho mais lento. Além disso, o trabalho com elementos gráficos é bastante trabalhoso para o terminal. Para uso em um grande número de gráficos, eu recomendaria reformatar o programa em um Expert Advisor sem nenhuma perda de funcionalidade. Mas isso só funcionará se você não usar os Expert Advisors ao mesmo tempo que a análise. Porque o terminal tem uma restrição de não mais do que um Expert Advisor por gráfico.
Para usá-lo no MT4, basta alterar a extensão do arquivo do indicador de mq5 para mq4 e recompilar o indicador.
Obrigado por sua rápida resposta e ajuda. ChartIndicatorGet, CloneAllObjects e outras funções não são compatíveis com o mq4. Em geral, 9 erros durante a compilação. Não tenho nenhuma experiência em programação. Por favor, me ajude.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Sincronização de vários gráficos num instrumento em diferentes timeframes foi publicado:
Muitas vezes, para tomar decisões, no processo de negociação, é necessário analisar simultaneamente gráficos em vários timeframes. Ao mesmo tempo, há objetos de análise gráfica nos gráficos. Implementar os mesmos objetos em todos os gráficos é incômodo. Neste artigo, proponho automatizar a clonagem de objetos em gráficos.
Autor: Dmitriy Gizlyk