Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!
O que você tem feito não é uma implementação através do OnTimer(). Você só recebe valores lá (toda a história, e cada segundo, além disso, sem verificação). De qualquer forma, não creio que você possa implementá-lo sozinho. Aguardar a resposta do autor da filial:)
Alexey Kozitsyn: O que você tem feito não é uma implementação através do OnTimer(). Você só recebe valores lá (toda a história, e a cada segundo, sem nenhum controle). Em geral, é improvável que você seja capaz de implementá-lo sozinho. Aguardar resposta do autor da filial:)
Sim, obrigado! já entrou em contato com o autor da filial, onde ele prometeu ajudar! Estou esperando por uma resposta)))
Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!
#property indicator_separate_window #property indicator_buffers1 #property indicator_plots1 //---- plot MA #property indicator_label1 "MA" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters bool AsSeries=true; int period=15; inputENUM_TIMEFRAMES TimeFrame=PERIOD_CURRENT;//Период графика ENUM_MA_METHOD smootMode=MODE_EMA; ENUM_APPLIED_PRICE price=PRICE_CLOSE; int shift=0; //--- indicator buffers double MABuffer[]; int ma_handle; int to_copy; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- indicator buffers mapping SetIndexBuffer(0,MABuffer,INDICATOR_DATA); Print("Параметр AsSeries = ",AsSeries); Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- set short indicator name IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries); //--- set AsSeries (depends on input parameter) ArraySetAsSeries(MABuffer,AsSeries); Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ", ArrayGetAsSeries(MABuffer)); //--- ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price); EventSetTimer(1); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total, constint prev_calculated, constdatetime &time[], constdouble &open[], constdouble &high[], constdouble &low[], constdouble &close[], constlong &tick_volume[], constlong &volume[], constint &spread[]) { //--- check if all data calculated if(BarsCalculated(ma_handle)<rates_total) return(0); //--- we can copy not all data //int to_copy; if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total; else { to_copy=rates_total-prev_calculated; //--- last value is always copied to_copy++; } //--- try to copy
//--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ voidOnTimer() { //--- CopyBuffer(ma_handle,0,0,to_copy,MABuffer); Print("Таймер"); } //+------------------------------------------------------------------+
Acho que o que quero dizer étransferir tudo naOnCalculate para aOnTimer
Boa tarde. Estou no indicador Delta_RSI, ele continua desenhando (ver captura de tela) histo em ambas as direções ao mesmo tempo (procurar por erro). E é possível colorir o sinal de zero de forma diferente para acima/abaixo do zero. Você será capaz de ver(corrigir)? Obrigado.
Igor371: Boa tarde. Estou no indicador Delta_RSI, tenho-o constantemente desenhando (ver captura de tela) histo em ambos os sentidos ao mesmo tempo (procurar por erro). E é possível colorir a cor sem sinal para acima/abaixo do zero. Você será capaz de ver(corrigir)? Obrigado.
Não fazer realmente nada. Eu tenho grandes períodos de 1000/250 na M1, por exemplo. Em um determinado momento, a barganha se torna de zero para ambos os lados ao mesmo tempo. Não sei exatamente em que momento, mas vou dar uma olhada mais de perto. Eu não tenho problemas com isso no código, nada a corrigir?
Boa tarde. Parece que não consigo pegar quando o indicador quebra. Está ali parado e tudo está bem, mas depois se quebra. Não tenho visto corretores fazendo nenhuma manipulação, porque muitas vezes tenho a mesma coisa com as setas, (mas eu me limitei ao desenho de índices, e aqui RSI) vou colocar uma coruja para ficar de olho com as capturas de tela.
Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!
O que você tem feito não é uma implementação através do OnTimer(). Você só recebe valores lá (toda a história, e a cada segundo, sem nenhum controle). Em geral, é improvável que você seja capaz de implementá-lo sozinho. Aguardar resposta do autor da filial:)
Eu o implementei com OnTimer() e nada saiu dele. Infelizmente o evento onTimer() não calcula o indicador e o atraso é salvo, talvez uma declaração alta e eu tenha feito algo errado, por favor, corrija. Obrigado!
//| TestCopyBuffer3.mq5 |
//| Copyright 2009, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots 1
//---- plot MA
#property indicator_label1 "MA"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- input parameters
bool AsSeries=true;
int period=15;
input ENUM_TIMEFRAMES TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int shift=0;
//--- indicator buffers
double MABuffer[];
int ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
Print("Параметр AsSeries = ",AsSeries);
Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
ArrayGetAsSeries(MABuffer));
//--- set short indicator name
IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
ArraySetAsSeries(MABuffer,AsSeries);
Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
ArrayGetAsSeries(MABuffer));
//---
ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- check if all data calculated
if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
//int to_copy;
if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
else
{
to_copy=rates_total-prev_calculated;
//--- last value is always copied
to_copy++;
}
//--- try to copy
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
Print("Таймер");
}
//+------------------------------------------------------------------+
Presumo que isso significamover tudo naOnCalculate para aOnTimer
A fim de reescrevê-lo, todos os indicadores a serem incluídos também devem estar abaixo de mql5
Boa tarde. Estou no indicador Delta_RSI, tenho-o constantemente desenhando (ver captura de tela) histo em ambos os sentidos ao mesmo tempo (procurar por erro). E é possível colorir a cor sem sinal para acima/abaixo do zero. Você será capaz de ver(corrigir)? Obrigado.
descreva o que você faz para quebrá-lo ))))
gráfico, TF, seqüência, etc.
descreva o que você faz para quebrá-lo ))))
gráfico, TF, seqüência, etc.