[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 641

 
Craft:

¿Qué hacer entonces? Probé for(i=0;i<=PeriodS;i++) - no ayudó.


Como ya se le ha dicho

   for(i=1;i<=PeriodB;i++)
{
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
}
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i+3);

iMAOnArray se ejecuta fuera del bucle (como debe ser). En consecuencia, i+2 = PeríodoB + 2. Para ArrayResize(c1b,PeriodB);

Y de hecho... sustituye tu "i+" por 0,2,3.

 
SergNF:


Como ya te escribí

iMAOnArray se ejecuta fuera del bucle (como debe ser). En consecuencia, i+2 = PeríodoB + 2. Para ArrayResize(c1b,PeriodB);

Y de hecho... sustituye tu "i+" por 0,2,3.


Gracias, he hecho todo lo que me has dicho, pero ahora ¿por qué no se hacen los pedidos?

Lo he probado con y sin normalización.

   double c1b[];
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

 //if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
 if (c1s_1>c1s_2&&c1s_2<c1s_3)
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
//if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
if (c1b_1<c1b_2&&c1b_2>c1b_3)
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }
 
gordeef:

Lo siento, no he contestado enseguida, mi portátil ha muerto por completo. Espero que no me duela más la muela, es algo que da miedo. Lo confieso, le estaba echando la culpa a Babon, funciona bien, pero el indicador de falla NMAZZ, no recuerdo donde lo descargué, pero en un gráfico sigue funcionando, pero lo puse en tres gráficos (5M, 30M, 4H) y todos, el ordenador se congeló por completo, o mejor dicho la terminal. Empecé a eliminar los indicadores de los gráficos uno por uno y encontré este error. No sé qué pasa con este indicador, pero al principio funcionaba bien. Y sobre el retroceso o la corrección, sí, tienes razón, siempre es un retroceso pero si a los 30M, 1H y 4H la porra cambia de color, si no es un retroceso, entonces la corrección es segura y podemos obtener algún beneficio.
Sí... El dolor de muelas hace maravillas... Dondequiera que vayas con él... :) Si te gusta un indicador y quieres trabajar con él - ya sea iCustom, o en el código del Asesor Experto, creo. Pero sobre el TP de tendencia - tenga cuidado, puede comprarlo al final del movimiento, es decir, antes de la reversión. Entonces el alce quedará colgado en el aire (como yo ayer con un diente malo... :))). En este momento estoy trabajando en la definición del agotamiento de la tendencia, espero compartir mis hallazgos y resultados.
 
Craft:


Gracias, hice todo lo que dijiste, pero ahora ¿por qué no se hacen los pedidos?

Probado con y sin normalización.


Pues entonces sólo un "unpriming" después de los dos if para ver si el error está en este bloque o no (Incluyendo Opn_B y Cls_S) Una línea y lo sabrás todo.

No sé, tal vez las reasignes (Opn_B y Cls_S) después o uses variables completamente diferentes al abrir.

 
artmedia70:
Sí... Un diente malo puede hacer maravillas... Dondequiera que vayas con él... :)

No has probado el tratamiento. Dicen que funciona.
 
Vinin:

¿Has probado el tratamiento? Dicen que ayuda.
¡Oh, sí! Se vive y se aprende... ;) Sólo por la noche no podemos encontrar ningún dentista en Zakolyuchinsk... Tuve que usar remedios populares...
 

Chicos, entiendo que los milagros no ocurren, pero simplemente no puedo ganar... Ya estoy mirando debajo de la mesa para ver si Hottabych está sentado allí... :)

Intenté mostrar algunos datos del EA en la ventana del indicador y decidí mostrar las tendencias en la misma ventana. Calculo las tendencias con mi función, que devuelve valores int -1, 0 y +1. En consecuencia, la tendencia bajista = 1, plana = 0, tendencia alcista = 1. Me he dado cuenta de que las flechas aparecen como quieren, pero no en la dirección de las tendencias en diferentes TFs. Así que comenté las flechas durante mucho tiempo y las sustituí por la salida del valor devuelto por la función de tendencia. En dos lugares del código, coloqué la salida del estado devuelto por esta función. Devuelve su estado correctamente; en la esquina superior izquierda del gráfico se muestran los valores de la función directamente después de la llamada de esta función. A continuación, en la ventana del indicador también se muestran los valores de la función. Numéricamente todo es correcto, pero en algún lugar toma el cuarto valor de la función, que por definición devuelve sólo tres números... Así, en este cuarto valor, la ventana del indicador muestra el mensaje "Fuck you"... Bueno, ya lo he escrito yo mismo por rabia... :)

¿Me ayudas a entender cuál es el problema? No quiero creer en Hassan Obdurahman ibn Hottab... :):)

   ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Aquí ya he intentado comprobar los cuatro estados, no sólo -1, 1 y else...

Y eso es lo que me produce a mí, si no

trM15 es una variable a la que se le asigna un valor devuelto por la función de tendencia

En la imagen se puede ver que los valores se devuelven correctamente, pero se imprime la "inscripción graciosa", que sólo es si no

Mi cabeza ya está en las costuras...

 
artmedia70:

Chicos, entiendo que los milagros no ocurren, pero no puedo ganar... Ya estoy mirando debajo de la mesa para ver si Hottabych está sentado allí... :)

Intenté mostrar algunos datos del EA en la ventana del indicador y decidí mostrar las tendencias en la misma ventana. Calculo las tendencias con mi función, que devuelve valores int -1, 0 y +1. En consecuencia, la tendencia bajista = 1, plana = 0, tendencia alcista = 1. Me he dado cuenta de que las flechas aparecen como quieren, pero no en la dirección de las tendencias en diferentes TFs. Así que comenté las flechas durante mucho tiempo y las sustituí por la salida del valor devuelto por la función de tendencia. En dos lugares del código, coloqué la salida del estado devuelto por esta función. Devuelve su estado correctamente; en la esquina superior izquierda del gráfico se muestran los valores de la función directamente después de la llamada de esta función. A continuación, en la ventana del indicador también se muestran los valores de la función. Los números son correctos, pero el cuarto valor de la función, que por definición devuelve sólo tres números, está sacado de algún sitio... Así que en este cuarto valor, la ventana del indicador muestra el mensaje "Fuck you"... Bueno, ya lo he escrito yo mismo por rabia... :)

¿Me ayudas a entender cuál es el problema? No quiero creer en Hasan Obdurahman ibn Hottab... :):)

Aquí ya he intentado comprobar los cuatro estados, no sólo -1, 1 y else...

Y eso es lo que me produce a mí, si no

trM15 es una variable a la que se le asigna un valor devuelto por la función de tendencia

En la imagen se puede ver que los valores se devuelven correctamente, mientras que se muestra la "inscripción graciosa" que sólo si

Mi cabeza ya está en las costuras...



Así es.

ObjectCreate("trM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("trM15",OBJPROP_XDISTANCE,x*10);
   ObjectSet("trM15",OBJPROP_YDISTANCE,y*10);
   
   ObjectCreate("ArrowM15",OBJ_LABEL,1,0,0,0,0);
   ObjectSet("ArrowM15",OBJPROP_XDISTANCE,x*17);
   ObjectSet("ArrowM15",OBJPROP_YDISTANCE,y*10);
   
   if (trM15==1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",Lime);
//         ObjectSetText("ArrowM15",CharToStr(241),10,"Wingdings",Lime);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",Lime);
      }
   else if (trM15==-1)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(242),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else if (trM15==0)
      {
         ObjectSetText("trM15","Тренд M15",9,"Tahoma",OrangeRed);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",OrangeRed);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",OrangeRed);
      }
   else
      {
         ObjectSetText("trM15","Хрен вам",9,"Tahoma",LightGray);
//         ObjectSetText("ArrowM15",CharToStr(240),10,"Wingdings",LightGray);
         ObjectSetText("ArrowM15",DoubleToStr(trM15,0),9,"Tahoma",LightGray);
      }

Puede probar esta variante

 
Vinin:


Así es.

Puedes probar esto

DE ACUERDO. Gracias, Víctor. Hasta ahora funciona correctamente. Hasta ahora, porque no lo he seguido durante mucho tiempo, pero NUNCA me había salido Trend Up. Ahora sí:


Sabía que siempre había un hechicero-mago más poderoso para un hechicero-aspirante... :)

Por supuesto, todo es una broma, pero... Víctor, no sólo quiero copiar la solución correcta, sino averiguar y entender dónde está el problema, cuál es la razón del comportamiento de un código tan incomprensible.

 
artmedia70:
Sí... Un diente malo puede hacer maravillas... Dondequiera que vayas con él... :) Si te gusta un indicador y quieres trabajar con él - ya sea iCustom o código EA, creo. Pero sobre el TP de tendencia - tenga cuidado, puede comprarlo al final del movimiento, es decir, antes de la reversión. Entonces el alce quedará colgado en el aire (como yo ayer con un diente malo... :))). En estos momentos estoy trabajando en la definición del agotamiento de la tendencia, espero compartir mis resultados.

Sí, estoy tratando de ser cauteloso con los retrocesos y las correcciones. Pero respecto al agotamiento de la tendencia también me interesa, me he paseado por el foro y he mirado el CodeBase pero no he encontrado ningún índice sobre este tema. Será interesante leer sus resultados. Tengo otra pregunta, me enviaron un EA que controla mis pérdidas y ganancias, como en la imagen debería funcionar, pero la pregunta es, tiene un beneficio de 15 puntos y veo que el precio puede subir aún más, si aumento el beneficio en una u otra operación, puede romper los cálculos generales y el funcionamiento del EA?
Razón de la queja: