Como posso mudar a cor do programa indicador padrão?
Nunca tinha feito isto antes, mas aqui vai uma ideia. Deve abrir o código do indicador padrão e encontrar aí linhas com indicador_cor*.
Algo do género.
//--- японские свечи будут рисоваться цветом clrDodgerBlue #property indicator_color1 clrDodgerBlue
Depois inserirá a cor necessária. Ver também Referência MQL5 / Indicadores Personalizados / Relação entre Propriedades e Funções do Indicador e Referência MQL5 / Constantes, Enumerações e Estruturas Padrão / Constantes do Indicador / Estilos de Desenho
Obrigado, é claro.
Mas acontece que cada vez que tenho de corrigir o código?
Mikhail
Obrigado, é claro.
Mas será que isso significa que tem de mudar o código de cada vez?
Obrigado, é claro.
Mas acontece que tem de corrigir o código de cada vez?
Há algo na sua lógica. A sua pergunta original era:
Como alterar programticamente a cor do indicador padrão?
Há algo na sua lógica. Perguntou originalmente:
Caro abolk!
Obviamente, a partir do seu código.
Mikhail
Faça o indicador "in-house" seu, - e insira as suas opções nele. Por exemplo (ideia pura): colocar cores nos parâmetros de entrada, e depois processá-las em Oninit() pela função PlotIndexSetInteger(N-1, PLOT_LINE_COLOR, nColor). Os exemplos na Referência podem ajudar. Então não pode editar o código em si, mas definir a cor desejada através das propriedades do indicador quando o iniciar ou alterar.
Muito obrigado.
É pena que os criadores não tenham pensado nisso.
Este código deveria ter funcionado, MAS...., infelizmente...
params[0].type = TYPE_INT; params[0].integer_value = 10; params[1].type = TYPE_INT; params[1].integer_value = 0; params[2].type = TYPE_INT; params[2].integer_value = MODE_SMA; params[3].type = TYPE_INT; params[3].integer_value = PRICE_MEDIAN; params[4].type = TYPE_COLOR; params[4].double_value = clrBlue; ma_handle = IndicatorCreate( NULL, PERIOD_CURRENT, IND_MA, 5, params ); if ( ma_handle != INVALID_HANDLE ) { ChartIndicatorAdd( 0, 0, ma_handle ); }
Este código deveria ter funcionado, MAS...., infelizmente...
Não funcionou com a função IndicatorCreate() - acabou por ser mais fácil criar os seus indicadores personalizados. No entanto, uma vez que citou apenas uma parte do código, uma pergunta: zerou os parâmetros variáveis antes de o utilizar? Por exemplo, como este:
MqlParam params; ZeroMemory(params);
E que código de erro é que a sua entrada recupera?
Fê-lo:
ArrayResize(params,5);?
Além disso, o indicador IND_MA(iMA) não tem nenhum parâmetro tal como "Cor", e tem-no especificado. Veja um exemplo de utilização do iMA aqui: Referência MQL5 / Acesso a séries temporais e indicadores / IndicatorCreate.
Este código deveria ter funcionado
Porquê? Explique primeiro porque é que a cor é um número real?
params[4].type = TYPE_COLOR; params[4].double_value = clrBlue;
Boa tarde, Stringo e Yedelkin!
Provavelmente não leu atentamente a minha mensagem, que dizia
"É pena que os criadores não tenham pensado nisso. "
Agora, deixem-me explicar porque escrevi o código acima.
A partir das definições de Média Móvel, pode-se ver claramente que o indicador tem 7 parâmetros (5 parâmetros principais + 2 linhas).
Isto é o que diz no separador "Parâmetros".
Se puder alterar TODOS os parâmetros "manualmente", isso significa que deve haver
o que os criadores fizeram - alterar TODOS os parâmetros programmaticamente!
Na função IndicatorCreate, mas não até ao fim (ou é um BAG).
A estrutura MqlParam permite-lhe introduzir uma cor - TYPE_COLOR(ENUM_DATATYPE);
A partir da referência MQL5:
O tipo de cor é concebido para armazenar informação de cor e ocupa 4 bytes na memória. O primeiro byte é ignorado, os 3 bytes restantes contêm os componentes RGB.
......
A representação inteira é escrita como número hexadecimal ou decimal. Umnúmero hexadecimal é 0x00BBGGRR
//--- representação de números inteiros
0xFFFFFFFFFF // branco
16777215 // branco
0x008000 //verde
32768 //verde
Fim da citação.
estruturar MqlParam
{
ENUM_DATATYPE tipo; // tipo de parâmetro de entrada, valor de enumeração ENUM_DATYPE
long integer_value; // campo para armazenar um valor inteiro
duplo duplo_valor; // campo para armazenamento de valor duplo ou flutuante
string string_value; // campo para armazenamento do valor do tipo de string
};
(Primeiro tentei durante muito tempo não funcionar, e depois tentei o dobro - também não funcionou, o que permanece no código).
Deveria ser assim:
MqlParam params[5];
.........
params[4].type = TYPE_COLOR;
params[4].integer_value = clrBlue; // - cor azul 0x00FF0000 (16711680)
stringo, respondi à sua pergunta "porque raio não"?
Mais uma vez, é uma pena que os criadores não tenham feito uma mudança de cor.
Com todo o respeito, Mikhail
Boa tarde, Stringo e Yedelkin!
Provavelmente não leu atentamente a minha mensagem, que dizia
"É pena que os criadores não tenham pensado nisso. "
Mikalas, já há aqui tantos peritos a tirar conclusões precipitadas para outros que é assustador. Não aumente o seu número, por favor.
A seguir, ajudei-o fazendo perguntas específicas não emocionais. Em vez de lhes responder, diz-me "como chegou a este ponto da sua vida". O que quer? -Convencer alguém de que existem bugs que detectou, ou "programmaticamente" melhorar o seu código? Se vir algum "bug" - contacte o Service Desk com uma descrição completa da situação. Se quiser "programar" o trabalho - aprofundar a criação e funcionamento dos indicadores.
- 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
Boa tarde!
Como é que se muda a cor do indicador padrão?
Obrigado, Mikhail