Código Zigzag
//+------------------------------------------------------------------+ //| FastZZ.mq5 | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, Yurich" #property link "https://login.mql5.com/ru/users/Yurich" #property version "1.00" //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 #property indicator_label1 "ZZ" #property indicator_type1 DRAW_ZIGZAG #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //+------------------------------------------------------------------+ input int Depth=2000; // Minimum points in a ray //+------------------------------------------------------------------+ double zzH[],zzL[]; double depth;//, deviation; int last,direction; //+------------------------------------------------------------------+ void OnInit() { SetIndexBuffer(0,zzH,INDICATOR_DATA); SetIndexBuffer(1,zzL,INDICATOR_DATA); IndicatorSetInteger(INDICATOR_DIGITS,Digits()); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0); depth=Depth*_Point; //deviation=10*_Point; direction=1; last=0; } //+------------------------------------------------------------------+ int OnCalculate(const int total, const int calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick[], const long &real[], const int &spread[]) { if(calculated==0) last=0; for(int i=calculated>0?calculated-1:0; i<total-1; i++) { bool set=false; zzL[i]=0; zzH[i]=0; //--- if(direction>0) { if(high[i]>zzH[last])//-deviation) { zzH[last]=0; zzH[i]=high[i]; if(low[i]<high[last]-depth) { if(open[i]<close[i]) zzH[last]=high[last]; else direction=-1; zzL[i]=low[i]; } last=i; set=true; } if(low[i]<zzH[last]-depth && (!set || open[i]>close[i])) { zzL[i]=low[i]; if(high[i]>zzL[i]+depth && open[i]<close[i]) zzH[i]=high[i]; else direction=-1; last=i; } } else { if(low[i]<zzL[last])//+deviation) { zzL[last]=0; zzL[i]=low[i]; if(high[i]>low[last]+depth) { if(open[i]>close[i]) zzL[last]=low[last]; else direction=1; zzH[i]=high[i]; } last=i; set=true; } if(high[i]>zzL[last]+depth && (!set || open[i]<close[i])) { zzH[i]=high[i]; if(low[i]<zzH[i]-depth && open[i]>close[i]) zzL[i]=low[i]; else direction=1; last=i; } } } //---- zzH[total-1]=0; zzL[total-1]=0; return(total); } //+------------------------------------------------------------------+
Los búferes de los indicadores contienen sólo los valores altos y bajos, relleno los datos intermedios en el bucle, convirtiéndolos en 1 - al alza en la barra actual, -1 a la baja. Parece que es correcto, pero si hay errores, por favor corríjanme
void FillZZarray() { ArrayResize(zz,vector); int lastcountbar = 0; for(int i=0;i<vector;i++) // Заполняем массив выходов { if(zzH[i]>0) { zz[i]=1; lastcountbar = 1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzL[i]>0) { zz[i]=-1; lastcountbar = -1; if(i!=0) for(int q=i-1;q>=0;q--) { if(zz[q]==0)zz[q]=lastcountbar; } } if(zzH[i]==0 && zzL[i]==0) zz[i] = lastcountbar; } }
¡Genial! Sólo cuando se pone en el real, cambiar las posiciones de las señales de compra y venta.
¿Por qué? )
El presagio es este. Después de las pruebas.
Necesito un vector de datos de entrada para el entrenamiento, y aquí las señales se interrumpen - luego compran, luego venden, luego se saltan... y no sé cómo rellenarlas, no con ceros... No sé cómo llenarlos de ceros... El zigzag, en mi opinión, proporciona entradas no menos perfectas, pero puedo estar equivocado... No tengo mucha experiencia en redes neuronales todavía...
Necesito un vector de datos de entrada para el entrenamiento, y aquí las señales se interrumpen - luego compran, luego venden, luego se saltan... y no sé cómo rellenarlas, no con ceros... No sé cómo llenarlos de ceros, no está claro... El zigzag, en mi opinión, proporciona entradas no menos perfectas, pero puedo estar equivocado... No tengo mucha experiencia en redes neuronales todavía...
El indicador dispone de dos tipos de señales, discretas y analógicas a elegir. Rellena los huecos con ceros.
¿La foto del primer post es la muestra de entrenamiento? Si está fuera de muestra es interesante ver en la muestra de entrenamiento, con tantas neuronas la red debería memorizar todos los datos de entrada de memoria.
Hay dos tipos de señal en el indicador, discreta y analógica a elegir. Rellena los huecos con ceros.
¿La foto del primer post es una muestra de entrenamiento? Si está fuera de muestra es interesante mirar la muestra de entrenamiento, con tantas neuronas la red debería memorizar todos los datos de entrada de memoria.
La muestra de entrenamiento son los últimos 1000 compases, o más bien los primeros si se mira desde el 0 como en las series temporales, todo lo anterior está fuera de muestra.
Lo probaré mañana a ver qué muestra. Hasta ahora atornillado el segundo zigzag, más grande, mirando cómo funciona en 2 salidas. Nada destacable hasta el momento, funciona de media a cero :)
en promedio funciona a cero :)
Por eso te han sugerido que cambies de compra a venta.
Todavía no he oído que nadie gane dinero estable con las redes neuronales, es muy inestable. Los TS más sencillos en los muwings - y funcionan más estables.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Hay poca información en el foro sobre las soluciones preparadas y la eficacia de las redes neuronales para operar en el mercado. Sugiero debatir y compartir la experiencia aquí. Si ya existe un hilo de discusión, por favor, enlaza con él.
Estoy usando clases de aquí, simple Perspectron multicapa. Espero que las clases cuenten correctamente, cuento con la experiencia del autor. Empezó a experimentar, interesante :)
En este momento tengo 11 induks en la entrada, la salida es un zigzag desplazado en 1 barra hacia el futuro.
Estos son los resultados de mi cuadrícula de 8 meses. Estoy entrenando en 1000 barras, 10000 épocas, 70 neuronas en una capa oculta. Las señales se invierten y son puramente por red neuronal, sin filtros adicionales. 15 min tf.