Si tomamos el interés abierto, ¿es este el tipo de código que tenía en mente?
Traded delta, me refiero al indicador, en el hilo donde está nuestro diálogo
Así que resume estos deltas en una ventana flotante (por ejemplo, los 100 últimos) o en orden ascendente (n+1 desde una fecha determinada, por ejemplo, desde la fecha de inicio del día actual), ¿para qué período? ¿Por qué para este periodo?
Pues sí, este código es aproximadamente Si en %, entonces * 100. Esto es más adecuado para los robots, visualmente es mejor mirar a los valores absolutos. IMHO.
Tengo varias ventanas para diferentes tácticas. Algo como esto:
Suponiendo que los futuros empiecen a negociarse activamente (y que para algunos mercados determinen globalmente los precios de los activos, como 6B,6E,RB,CL,GC) en cuanto se conviertan en los más próximos, la delta deberá resumirse a partir del inicio de esta fecha.
Si se trabaja con delta sobre acciones, es mucho más difícil determinar el punto de partida. En realidad, la mayoría de los sistemas (como ClusterDelta) toman una ventana móvil fija, por ejemplo, 90 barras. Sin embargo, si lo piensa detenidamente, probablemente sea más correcto tomar como punto de referencia algún extremo del precio en el pasado, por ejemplo, 30 días
felicitaciones por el gran trabajo ! este es el mejor indicador Delta hasta ahora, muy rapido.
Trato de modificarlo para trazar sólo los valores positivos con color diferent a comprar / vender delta (mejor comparar el tamaño de las barras de histograma), sin éxito, Usted puede dar algunos tipe cómo hacerlo o post donde debe modificar el código original?
Otra pregunta, ¿es posible trazar un histograma vertical en lugar de horizontal? Intenté trazar un histograma vertical usando https://www.mql5.com/es/articles/2714 pero no trazó ningún valor, de hecho intenté trazar valores de volumen en el histograma vertical y no trazó ningún rey de volumen ( uso NormalizeDouble para convertir de long a double).
Histograms allow researchers to visually evaluate the distribution of statistical data grouped by the frequency of their penetration into a certain (predetermined) interval. Histograms and their use in the statistical data analysis are a well-studied topic with multiple articles devoted to it [1, 2, 3, 4, 5, 6, 7] and a large number of CodeBase...
felicitaciones por gran trabajo ! este es el mejor indicador Delta hasta ahora, muy rápido.
¡Gracias!
Trate de modificarlo para que solo muestre valores positivos con diferente color al delta de compra/venta (mejor para comparar el tamaño de las barras del histograma), sin exito, Puedes dar alguna pista de como hacerlo o postear donde deberia modificarse el codigo original?
//+------------------------------------------------------------------+//| Отображение значений индикатора|//+------------------------------------------------------------------+void DisplayValues(constint index,// Номер свечиconstlong sumVolBuy,// Суммарный объем покупокconstlong sumVolSell, // Суммарный объем продажconstint line // Номер строки вызова функции
)
{
//--- Проверяем корректность номера свечиif(index<0) // Если некорректный номер
{
Print(__FUNCTION__,": ¡ОШИБКА! Некорректный номер свечи '",index,"'");
return; // Выходим
}
//--- Рассчитаем дельтуconstdouble delta=double(sumVolBuy-sumVolSell);
//--- Заносим значения в буферы//bufDelta[ index ]= delta; // Записываем значение дельты
bufDelta[ index ]= (delta>0) ? delta : -delta; // Записываем значение дельты
bufDeltaColor[ index ] =(delta>0) ? 0 : 1; // Записываем цвет значения
bufBuyVol[ index ] = (double)sumVolBuy; // Записываем сумму покупок
bufSellVol[ index ]=(double)sumVolSell; // Записываем сумму продаж
}
Otra pregunta, ¿es posible trazar un histograma vertical en lugar de horizontal?
En primer lugar, ¡¡¡felicidades!!! ¡Gran, gran, gran trabajo! Eso es lo que estoy buscando.
Sin embargo, este indicador es la mitad de mi deseo. Me gustaría dibujar una banda bolinger sobre el indicador delta para mostrarme donde el flujo de dinero es mayor que un comportamiento normal. Lo había intentado, pero no era capaz de ver las líneas bbands en la misma ventana. ¿Podrías ayudarme?
En general, en nuestro mercado usando garrapatas y cristal se pueden hacer cosas muy chulas.
Estoy de acuerdo contigo. He estado viendo Delta durante mucho tiempo, no lo uso a menudo ツ
Tienes un gran indicador, ¡me funciona hasta los fines de semana!
Observo delta en timeframes menores a un minuto, cuando el precio rompe el máximo local y en lugar de stops (delta azul) hay ventas de mercado. Por lo general, después de una configuración de este tipo, el precio hace una corrección.
Bueno, es así, sólo en el tema.
Mi pregunta es diferente. Recientemente he empezado a aprender a escribir indicadores. Poco a poco los estoy dominando, utilizando el método científico y copypaste.
Quería escribir un indicador de divergencia delta. Este es el código de delta venta delta de barras AP (rojo), y delta azul de barras hacia abajo.
Con la ayuda de su indicador, a través de iCustom mi indicador funciona normalmente.
Pero como estoy aprendiendo, estoy interesado en escribir mi propio. Y mi propio indicador no funciona (. Es el tercer día que estoy golpeando sobre él, y no cede. Si no es difícil, por favor dígame cuál es el error.
La lógica para determinar el delta es la siguiente: como no necesito el delta en la barra actual, decidí que puedo calcular el delta utilizando el volumen de ticks de la barra anterior OnCalculate, tick_volume[] , como el número de ticks al copiar CopyTicks. El meta-editor compila, pero da una advertencia de que uso diferentes tipos de datos en tick volume long, y en CopyTicks es necesario especificar el número de ticks en uint. El tiempo de inicio de la copia se toma en el mismo time[],
Al probar en el tester da el error "Array out of range", y no puedo entender que límites sobrepasa y como determinar que cambiar para que el indicador no funcione, pero al menos eliminar este error.
Aquí esta el código del sumador, por favor no se rían mucho.
#property indicator_chart_window#property indicator_buffers5#property indicator_plots1#property indicator_label1"Diver_handl"#property indicator_type1DRAW_COLOR_CANDLES//--- establece 2 colores para pintar velas (se almacenan en el buffer de color) #property indicator_color1clrRed,clrBlue#property indicator_style1STYLE_SOLID#property indicator_width11// grosor de la línea de dibujo, no es realmente necesario aquí.//--- parámetros de entrada //--- tampones indicadoresdouble ColorCandlesBuffer1[];//tampones para velasdouble ColorCandlesBuffer2[];
double ColorCandlesBuffer3[];
double ColorCandlesBuffer4[];
double ColorCandlesColors[]; // Tampón de colorstring symbol; //--- nombre del personaje double _Delta;
//+------------------------------------------------------------------+ //| Función de inicialización del indicador personalizada | //+------------------------------------------------------------------+ intOnInit()
{
//--- asignación de búferes indicadores SetIndexBuffer(0,ColorCandlesBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ColorCandlesBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,ColorCandlesBuffer3,INDICATOR_DATA);
SetIndexBuffer(3,ColorCandlesBuffer4,INDICATOR_DATA);
SetIndexBuffer(4,ColorCandlesColors,INDICATOR_COLOR_INDEX);
//--- valor vacío (valor que no se dibujará) PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//--- nombre del símbolo con el que se dibujan las barras
symbol=_Symbol;
//--- configurar la visualización de símbolos PlotIndexSetString(0,PLOT_LABEL,symbol+" Open;"+symbol+" High;"+symbol+" Low;"+symbol+" Close");
IndicatorSetString(INDICATOR_SHORTNAME,"Diver("+symbol+")");
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+ //| Función de iteración del indicador personalizada | //+------------------------------------------------------------------+ intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int i,limit;
int buf_size=rates_total-prev_calculated;
if(rates_total<2)
return(0);
if(prev_calculated<3)
{
limit=1;
// inicializar las matrices con valores vacíosArrayInitialize(ColorCandlesBuffer1,EMPTY_VALUE);
ArrayInitialize(ColorCandlesBuffer2,EMPTY_VALUE);
ArrayInitialize(ColorCandlesBuffer3,EMPTY_VALUE);
ArrayInitialize(ColorCandlesBuffer4,EMPTY_VALUE);
ArrayInitialize(ColorCandlesColors,EMPTY_VALUE);
}
else limit=rates_total-1;
MqlTick Ticks[]; //declarar un array que se rellenará con datos de tickfor(i=limit; i<rates_total-1; i++)
{
CopyTicks(Symbol(),Ticks,COPY_TICKS_TRADE,0,tick_volume[i]); // copia en la matriz Ticks los datos de ticks en la cantidad igual al volumen de ticks en la vela tick_volume[i]
SetBarData(time[i],Ticks,i,_Delta,tick_volume[i]);// función en el sótano ↓if(open[i-1]<close[i-1] && _Delta<0)
{
ColorCandlesBuffer1[i-1]=open[i-1];
ColorCandlesBuffer2[i-1]=high[i-1];
ColorCandlesBuffer3[i-1]=low[i];
ColorCandlesBuffer4[i-1]=close[i];
ColorCandlesColors[i-1]=1;
}
elseif(open[i]>close[i] && _Delta>0)
{
ColorCandlesBuffer1[i-1]=open[i-1];
ColorCandlesBuffer2[i-1]=high[i-1];
ColorCandlesBuffer3[i-1]=low[i];
ColorCandlesBuffer4[i-1]=close[i];
ColorCandlesColors[i-1]=0;
}
else
{
ColorCandlesBuffer1[i]=0.0;
ColorCandlesBuffer2[i]=0.0;
ColorCandlesBuffer3[i]=0.0;
ColorCandlesBuffer4[i]=0.0;
}
}
return(rates_total);
}
//+------------------------------------------------------------------+// Rellena la barra con los ticks apropiadosvoid SetBarData(constdatetime TimeBar,constMqlTick &Ticks[],int &Pos,double &Delta,constlong vol)
{
int i=0;
while(i<vol)
{
MqlTick Tick=Ticks[Pos]; // copiar las lecturas del búfer de datos de ticks en la variableif(i>=vol)
break; // cuando i sanset es igual al volumen tick , vail †if((bool)(Tick.flags &TICK_FLAG_BUY)) // si la bandera es comprar añadir al delta
Delta+=(double)Tick.volume;
elseif((bool)(Tick.flags &TICK_FLAG_SELL)) // si la bandera es Vender, restar del delta
Delta-=(double)Tick.volume;
i++;
}
return;
}
//+------------------------------------------------------------------+
Experimenté mucho, así que puede haber artefactos de experimentos anteriores, en forma de variables declaradas pero no utilizadas.
Si no es difícil, por favor dígame cuál es el error.
No puedo ver el lugar exacto con el error a primera vista, pero, para empezar, mira cómo CopyTicks() se maneja en mi indicador. En particular, la devolución del valor y el manejo de posibles errores.
Sí, si se produce un desbordamiento del array... mira cuántos valores hay en el array y a qué elemento estás accediendo. También puedes despintar el primer y último valor después de recibir los datos para ver si se recibieron todos los datos.
Wow, es complicado. Los ticks se copian tanto por intervalo de tiempo como por número. En general, el sistema se duplica no peor que en cosmonauts))))
Encontré donde lo hice.
MqlTick Tick = Ticks[Pos];
Estoy intentando copiar un array en una variable. Es extraño porque el compilador no reacciona a ello, y cuando lo ejecutas en el tester, el tester se cuelga.
Si tomamos el interés abierto, ¿es este el tipo de código que tenía en mente?
Traded delta, me refiero al indicador, en el hilo donde está nuestro diálogo
Así que resume estos deltas en una ventana flotante (por ejemplo, los 100 últimos) o en orden ascendente (n+1 desde una fecha determinada, por ejemplo, desde la fecha de inicio del día actual), ¿para qué período? ¿Por qué para este periodo?
Pues sí, este código es aproximadamente Si en %, entonces * 100. Esto es más adecuado para los robots, visualmente es mejor mirar a los valores absolutos. IMHO.
Tengo varias ventanas para diferentes tácticas. Algo como esto:
Suponiendo que los futuros empiecen a negociarse activamente (y que para algunos mercados determinen globalmente los precios de los activos, como 6B,6E,RB,CL,GC) en cuanto se conviertan en los más próximos, la delta deberá resumirse a partir del inicio de esta fecha.
Si se trabaja con delta sobre acciones, es mucho más difícil determinar el punto de partida. En realidad, la mayoría de los sistemas (como ClusterDelta) toman una ventana móvil fija, por ejemplo, 90 barras. Sin embargo, si lo piensa detenidamente, probablemente sea más correcto tomar como punto de referencia algún extremo del precio en el pasado, por ejemplo, 30 días
Sr. Kozitsyn,
felicitaciones por el gran trabajo ! este es el mejor indicador Delta hasta ahora, muy rapido.
Trato de modificarlo para trazar sólo los valores positivos con color diferent a comprar / vender delta (mejor comparar el tamaño de las barras de histograma), sin éxito, Usted puede dar algunos tipe cómo hacerlo o post donde debe modificar el código original?
Otra pregunta, ¿es posible trazar un histograma vertical en lugar de horizontal? Intenté trazar un histograma vertical usando https://www.mql5.com/es/articles/2714 pero no trazó ningún valor, de hecho intenté trazar valores de volumen en el histograma vertical y no trazó ningún rey de volumen ( uso NormalizeDouble para convertir de long a double).
Muchas gracias.
sr. kozitsyn,
felicitaciones por gran trabajo ! este es el mejor indicador Delta hasta ahora, muy rápido.
¡Gracias!
Trate de modificarlo para que solo muestre valores positivos con diferente color al delta de compra/venta (mejor para comparar el tamaño de las barras del histograma), sin exito, Puedes dar alguna pista de como hacerlo o postear donde deberia modificarse el codigo original?
Reemplace la función DisplayValues() por esta:
Otra pregunta, ¿es posible trazar un histograma vertical en lugar de horizontal?
Sr. Kozitsyn,
En primer lugar, ¡¡¡felicidades!!! ¡Gran, gran, gran trabajo! Eso es lo que estoy buscando.
Sin embargo, este indicador es la mitad de mi deseo. Me gustaría dibujar una banda bolinger sobre el indicador delta para mostrarme donde el flujo de dinero es mayor que un comportamiento normal. Lo había intentado, pero no era capaz de ver las líneas bbands en la misma ventana. ¿Podrías ayudarme?
¡¡¡Muchas gracias!!!
Rodrigo Pimenta
¿Podría ayudarme?
¡¡¡Muchas gracias!!!
Rodrigo Pimenta
Lo siento, pero no trabajo con BB.
Puedes usar Freelance para tu tarea.
En general, en nuestro mercado usando garrapatas y cristal se pueden hacer cosas muy chulas.
Estoy de acuerdo contigo. He estado viendo Delta durante mucho tiempo, no lo uso a menudo ツ
Tienes un gran indicador, ¡me funciona hasta los fines de semana!
Observo delta en timeframes menores a un minuto, cuando el precio rompe el máximo local y en lugar de stops (delta azul) hay ventas de mercado. Por lo general, después de una configuración de este tipo, el precio hace una corrección.
Bueno, es así, sólo en el tema.
Mi pregunta es diferente. Recientemente he empezado a aprender a escribir indicadores. Poco a poco los estoy dominando, utilizando el método científico y copypaste.
Quería escribir un indicador de divergencia delta. Este es el código de delta venta delta de barras AP (rojo), y delta azul de barras hacia abajo.
Con la ayuda de su indicador, a través de iCustom mi indicador funciona normalmente.
Pero como estoy aprendiendo, estoy interesado en escribir mi propio. Y mi propio indicador no funciona (. Es el tercer día que estoy golpeando sobre él, y no cede. Si no es difícil, por favor dígame cuál es el error.
La lógica para determinar el delta es la siguiente: como no necesito el delta en la barra actual, decidí que puedo calcular el delta utilizando el volumen de ticks de la barra anterior OnCalculate, tick_volume[] , como el número de ticks al copiar CopyTicks. El meta-editor compila, pero da una advertencia de que uso diferentes tipos de datos en tick volume long, y en CopyTicks es necesario especificar el número de ticks en uint. El tiempo de inicio de la copia se toma en el mismo time[],
Al probar en el tester da el error "Array out of range", y no puedo entender que límites sobrepasa y como determinar que cambiar para que el indicador no funcione, pero al menos eliminar este error.
Aquí esta el código del sumador, por favor no se rían mucho.
Experimenté mucho, así que puede haber artefactos de experimentos anteriores, en forma de variables declaradas pero no utilizadas.Si no es difícil, por favor dígame cuál es el error.
No puedo ver el lugar exacto con el error a primera vista, pero, para empezar, mira cómo CopyTicks() se maneja en mi indicador. En particular, la devolución del valor y el manejo de posibles errores.
Sí, si se produce un desbordamiento del array... mira cuántos valores hay en el array y a qué elemento estás accediendo. También puedes despintar el primer y último valor después de recibir los datos para ver si se recibieron todos los datos.
ver cómo CopyTicks() se maneja en mi indicador.
Wow, es complicado. Los ticks se copian tanto por intervalo de tiempo como por número. En general, el sistema se duplica no peor que en cosmonauts))))
Encontré donde lo hice.
MqlTick Tick = Ticks[Pos];Estoy intentando copiar un array en una variable. Es extraño porque el compilador no reacciona a ello, y cuando lo ejecutas en el tester, el tester se cuelga.
Intentaré pensar en otra cosa.Estoy intentando copiar un array en una variable.
No, no lo estás haciendo. Es cierto. Estoy totalmente confundido. Voy a tener una mañana mejor. Mañana todo saldrá bien.