Lo implementé con OnTimer() y no me salió nada. Lamentablemente el evento onTimer() no calcula el indicador y se guarda el retraso, tal vez sea una afirmación fuerte y he hecho algo mal, por favor corrijan. Gracias.
Lo que has hecho no es una implementación a través de OnTimer(). Sólo se obtienen valores allí (todo el historial, y cada segundo, además, sin comprobar). De todos modos, no creo que puedas implementarlo por ti mismo. Esperar la respuesta del autor de la rama:)
Alexey Kozitsyn: Lo que has hecho no es una implementación a través de OnTimer(). Allí sólo se obtienen valores (toda la historia, y cada segundo, sin comprobaciones). En general, es poco probable que pueda aplicarlo usted mismo. Esperar la respuesta del autor de la rama:)
¡Sí, ¡gracias! ya me puse en contacto con el autor de la rama, donde prometió ayudar! Estoy esperando una respuesta))
Lo implementé con OnTimer() y no me salió nada. Lamentablemente el evento onTimer() no calcula el indicador y se guarda el retraso, tal vez sea una afirmación fuerte y he hecho algo mal, por favor corrijan. Gracias.
#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("Таймер"); } //+------------------------------------------------------------------+
Creo que lo que quería decir eramover todo enOnCalculate aOnTimer
Buenas tardes. Estoy en el indicador Delta_RSI, sigue dibujando (ver captura de pantalla) histo en ambas direcciones al mismo tiempo (buscar error). Y es posible colorear la señal de cero de forma diferente para por encima/por debajo de cero. ¿Será capaz de ver(corregir)? Gracias.
Igor371: Por la tarde. Estoy en el indicador Delta_RSI, lo tengo dibujando constantemente (ver captura de pantalla) histo en ambos sentidos al mismo tiempo (buscar el error). Y es posible colorear el color de la no señal por encima/por debajo de cero. ¿Será capaz de ver(corregir)? Gracias.
En realidad, no estoy haciendo nada. Tengo grandes períodos de 1000/250 en M1 por ejemplo. En algún momento la negociación se convierte en las dos caras del cero al mismo tiempo. No sé exactamente en qué momento, pero voy a echar un vistazo más de cerca. No tengo ningún problema en el código, ¿nada que arreglar?
Buenas tardes. Parece que no puedo coger cuando el indicador se rompe. Está ahí y todo está bien, pero entonces se rompe. No me he encontrado con corredores para hacer manipulaciones, porque me suele pasar lo mismo con las flechas, (pero lo achaco a los índices de dibujo, y aquí RSI) Pondré un búho para vigilar con capturas de pantalla.
Lo implementé con OnTimer() y no me salió nada. Lamentablemente el evento onTimer() no calcula el indicador y se guarda el retraso, tal vez sea una afirmación fuerte y he hecho algo mal, por favor corrijan. Gracias.
Lo que has hecho no es una implementación a través de OnTimer(). Allí sólo se obtienen valores (toda la historia, y cada segundo, sin comprobaciones). En general, es poco probable que pueda aplicarlo usted mismo. Esperar la respuesta del autor de la rama:)
Lo implementé con OnTimer() y no me salió nada. Lamentablemente el evento onTimer() no calcula el indicador y se guarda el retraso, tal vez sea una afirmación fuerte y he hecho algo mal, por favor corrijan. Gracias.
//| 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("Таймер");
}
//+------------------------------------------------------------------+
Supongo que eso significatrasladar todo enOnCalculate aOnTimer
Para reescribirlo, todos los indicadores que se incluyan deben estar también bajo mql5
Por la tarde. Estoy en el indicador Delta_RSI, lo tengo dibujando constantemente (ver captura de pantalla) histo en ambos sentidos al mismo tiempo (buscar el error). Y es posible colorear el color de la no señal por encima/por debajo de cero. ¿Será capaz de ver(corregir)? Gracias.
describa lo que hace para romperlo ))))
gráfico, TF, secuencia, etc.
describa lo que hace para romperlo ))))
gráfico, TF, secuencia, etc.