C-4: O que quer dizer com "alinhar"? Normalizar a mantissa pelo número de casas decimais? - É para isso que serve a função NormalizeDouble. Se houver outra coisa, descreva-a com mais detalhe.
A input qualquer duplo positivo, a output arredondado para o preço real que pode ser a este instrumento.
Se a etapa de preço for 0,25, então arredondar para 0,25. Mais ou menos como isto:
Obrigado pela resposta, eu negoceio ao vivo e o MT5 está sempre ligado. Se o software diz que preciso de o actualizar, tudo bem. Se não, onde está a actualização ao vivo?
Newalligator: Obrigado pela resposta, eu negoceio ao vivo e o MT5 está sempre ligado. Se o programa em si me incita a actualizar, é bom, mas se não, onde está essa actualização em directo?
Quando se ligar à sua conta no servidor MetaQuotes-Demo, o MetaTrader verificará automaticamente a existência de actualizações. Se houver uma actualização, a nova versão será descarregada automaticamente.
Bom dia a todos! Há um problema - não posso usar as leituras de outro indicador personalizado num indicador personalizado. Tenho quase a certeza que o estou a fazer mal, mas colarei o código de qualquer forma:
intOnCalculate(constint rates_total, constint prev_calculated, constint begin, constdouble &price[]) {
if(rates_total < iPeriod ) {
return(0);
}
int first;
if ( prev_calculated == 0 ) {
first = iPeriod + begin;
} else {
first = prev_calculated - 1;
}
// Пользовательский индикатор ROC для EURUSD double aRocRatesEURUSD[];
int iRocHandleEURUSD = iCustom("EURUSD", 0, "Examples\\ROC");
CopyBuffer(iRocHandleEURUSD, 0, 0, rates_total, aRocRatesEURUSD);
for(int bar = first; bar < rates_total; bar++) {
Neste código, o tampão do indicador da Taxa de Alterações(aRocRatesEURUSD) não está disponível. Não compreendo como ligar correctamente este indicador, por favor ajude-me a compreendê-lo.
Bom dia a todos! Há um problema - não posso usar as leituras de outro indicador personalizado num indicador personalizado. Tenho quase a certeza que o estou a fazer mal, mas colarei o código de qualquer forma:
Neste código, o tampão do indicador da Taxa de Alterações(aRocRatesEURUSD) não está disponível. Não consigo compreender como ligar correctamente este indicador, por favor ajude-me a compreendê-lo.
Os cabos indicadores devem ser declarados no OnInit():
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
// Пользовательский индикатор ROC для EURUSD double aRocRatesEURUSD[];
int iRocHandleEURUSD = iCustom("EURUSD", 0, "Examples\\ROC");
}
Caso contrário, cria-se um novo indicador personalizado cada vez que se chama OnCalculate().
jommerbot: Isto também não funciona. Como resultado, a matriz com o tampão está vazia ou cheia de valores esquerdos.
No entanto, é correcto declarar as pegas dos indicadores no OnInit(). Outra questão é porque precisa de escrever cada vez que chega um novo tick (a função OnCalculate())
rates_total, // размер входных таймсерий
para o tampão
aRocRatesEURUSD
? Isto pode realmente atrasar o terminal. E além disso, esta é uma história muito profunda.
#property indicator_chart_window#property indicator_buffers1#property indicator_plots1#property indicator_type1 DRAW_LINE#property indicator_color1 Red
double ExtLineBuffer[];
int iRocHandleEURUSD;
int iPlotShift = 0;
int iPeriod = 6;
voidOnInit() {
SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, iPlotShift);
PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, iPeriod - 1);
int iRocHandleEURUSD = iCustom("EURUSD", 0, "Examples\\ROC");
if( iRocHandleEURUSD == INVALID_HANDLE )
{
Print("Не удалось получить хендл индикатора ROC EURUSD");
}
}
intOnCalculate(constint rates_total, constint prev_calculated, constint begin, constdouble &price[]) {
if(rates_total < iPeriod ) {
return(0);
}
int first;
double aRocRatesEURUSD[];
if ( prev_calculated == 0 ) {
first = iPeriod + begin;
} else {
first = prev_calculated - 1;
}
for(int bar = first; bar < rates_total; bar++) {
CopyBuffer(iRocHandleEURUSD, 0, bar, 1, aRocRatesEURUSD);
Print(aRocRatesEURUSD[ 0 ]);
ExtLineBuffer[ bar ] = NormalizeDouble(aRocRatesEURUSD[ 0 ], SYMBOL_DIGITS);
}
return(rates_total);
}
Não compreendo onde está o meu erro. Copiar o mesmo tampão indicador em EA e trabalhos de script, mas não em indicador. O manípulo indicador é rubricado sem erros.
O que quer dizer com "alinhar"? Normalizar a mantissa pelo número de casas decimais? - É para isso que serve a função NormalizeDouble. Se houver outra coisa, descreva-a com mais detalhe.
A input qualquer duplo positivo, a output arredondado para o preço real que pode ser a este instrumento.
Se a etapa de preço for 0,25, então arredondar para 0,25. Mais ou menos como isto:
Mas dito isto, se houver uma compensação (como 0,13; 0,38; 0,63; 0,88), então conta. Então:
na entrada 1.0 na saída 1.13;
1,25 como entrada e 1,38 como saída;
1,5 ---> 1,63...
Ao nível do API, isto poderia ser codificado em alguns comandos de linguagem de montagem e é claramente uma função básica. Pensei que houvesse um =/
como fazer uma actualização do novo edifício através de Live update. Onde está esta actualização em directo
Obrigado pela resposta, eu negoceio ao vivo e o MT5 está sempre ligado. Se o programa em si me incita a actualizar, é bom, mas se não, onde está essa actualização em directo?
Bom dia a todos! Há um problema - não posso usar as leituras de outro indicador personalizado num indicador personalizado. Tenho quase a certeza que o estou a fazer mal, mas colarei o código de qualquer forma:
Neste código, o tampão do indicador da Taxa de Alterações(aRocRatesEURUSD) não está disponível. Não compreendo como ligar correctamente este indicador, por favor ajude-me a compreendê-lo.
Bom dia a todos! Há um problema - não posso usar as leituras de outro indicador personalizado num indicador personalizado. Tenho quase a certeza que o estou a fazer mal, mas colarei o código de qualquer forma:
Neste código, o tampão do indicador da Taxa de Alterações(aRocRatesEURUSD) não está disponível. Não consigo compreender como ligar correctamente este indicador, por favor ajude-me a compreendê-lo.
Os cabos indicadores devem ser declarados no OnInit():
Caso contrário, cria-se um novo indicador personalizado cada vez que se chama OnCalculate().Os cabos indicadores devem ser declarados no OnInit():
Isto também não funciona. Como resultado, a matriz com o tampão está vazia ou cheia de valores esquerdos.
rates_total, // размер входных таймсерийpara o tampão
? Isto pode realmente atrasar o terminal. E além disso, esta é uma história muito profunda.
Penso que achará interessante ler o artigoThe Principles of Economical Recalculation of Indicators
E leia também a ajuda para a função OnCalculate().
OK, mesmo no caso mais simples, não funciona:
Não compreendo onde está o meu erro. Copiar o mesmo tampão indicador em EA e trabalhos de script, mas não em indicador. O manípulo indicador é rubricado sem erros.