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

 
Dimka-novitsek:
¡Buenos días! La condición no funciona

Ya he mirado la cadena ife, la he mirado, la he mirado, la he mirado.... Debe haber alguna razón, puede que me confunda y no vea algo simple y elemental, eso pasa.

He mirado por la mañana. Salí. Volví y miré de nuevo. Ahora es más fácil, si, más, menos... No lo entiendo en absoluto.



Y esto es bajo mi inicio.


p.d. Todo es parte de esta condición de estrategia

EMA - período 10 cruza de arriba a abajo EMA - período 200 , CCI cruza 0.100 o 100 de arriba a abajo; Vela cierra o está por debajo de LMA - período 100


Poner un paréntesis para mostrar cómo y qué se hace

if( CCI_50S>100&&CCI_50<100 ||CCI_50S>0&&CCI_50<0|| CCI_50S>-100&&CCI_50<-100 )CCInapravlenie=true;
 
Chiripaha:

He puesto banderas para la dirección de la operación. Condición: Si alcanza una zona entre las líneas, comprar y no vender, si alcanza otra zona, no comprar y vender. Regulo este proceso con líneas horizontales.

Antes de eso pido los precios de las líneas expuestas. Y después un bloque de colocación o cierre de órdenes - según la bandera.

El código es trivial. Pero... - Pregunta...

Cuando este diseño empieza a funcionar, los valores de compra y venta resultan ser imprevisibles (caóticos). ¿Por qué ocurre esto? Porque hay condiciones claras para la función "if" y los operadores "end" y "over/under".

Es decir, el programa se comporta según sus propias razones: o compra o vende, o no hace nada independientemente de lo que se escriba en los valores de las variables.

¿Cómo y qué tengo que escribir para que las condiciones funcionen y, sobre todo, para que funcionen? ¿Qué estoy haciendo mal y qué no estoy teniendo en cuenta? (Creo que he mencionado todo lo que necesito en las condiciones de la función).

También hay otra cuestión en este tema: cuando las variables cambian en función de las condiciones, sus valores en la configuración del Asesor Experto (cuando se accede a ellos a través de F7) serán los mismos que fueron establecidos por el usuario. Por eso es imposible ver el estado actual de estas variables. ¿Cómo hago para que pueda ver cuáles son sus valores en este momento?

Empieza por agrupar las condiciones:

    extern bool    Покупать  = false;
    extern bool    Продавать = false; 

    if (pl > Ask) {if (Ask > psb || Ask > ps) Продавать = true;}
    else {if (pl < Bid) if (Bid < pcs || Bid < pb) Покупать = true;}
Tal vez así sea más fácil de entender. (No he entrado en el significado del código en sí).
 

A primera vista, probablemente se trate de las variables, no de las condiciones. ¡¡¡Yo empezaría por sacar las variables con alertas, ya que el código en sí parece NORMAL !!!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );

 

¿Cómo puedo cambiar el formato de los datos al escribir en un archivo?

escribe en fuentes ilegibles :(

 
TarasBY:

Reemplazar:

Para:

Y por qué se abre la orden de VENTA (en su variante) (en base a lo que he dicho antes) ¡¡¡encuentra la respuesta YO MISMO!!!


Resulta que no es necesario llamar a los parámetros desde el indicador. Todo se puede registrar directamente en el Asesor Experto.

Analizaré mi error.

Reescribí mi indicador con las funciones iLowest y iHighest, ¿es correcto este código o puede ser truncado?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Red

extern int Quant_Bars = 5; //количество баров

//--- buffers
double Line_1[];     //объявление массивов под..
double Line_2[];     //..буферы индикаторов

int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(0,Line_1);                    //назнач. массива буферу
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);    //стиль линии
   SetIndexBuffer(1,Line_2);                    //назнач. массива буферу
//----
   return(0);                                      
  }

int start()
  {                        
   double Minimum;
   double Maximum;
   int k;
   
   Maximum= High[iHighest(NULL,0,MODE_HIGH,Quant_Bars,1)];
   Minimum= Low[iLowest(NULL,0,MODE_LOW,Quant_Bars,1)];
   
   for(k=1; k<=Quant_Bars; k++)
      {
       Line_1[k]= Minimum;
       Line_2[k]= Maximum;
      }
    return(0);
    }
               
 
Ahora... Mi hermano está aquí, el mayor... Es probable que los soportes se obstruyan. Ahora
 
Dimka-novitsek:

A primera vista, probablemente se trate de las variables, no de las condiciones. ¡¡¡Yo empezaría por sacar las variables con alertas, ya que el código en sí parece NORMAL !!!

Alert(" pcb " , pcb ); Alert(" pl " , pl ); Alert(" pb " , pb );


Ya lo he hecho - todas las variables son correctas: tanto los precios como los parámetros están ajustados.
 
TarasBY:

Empieza por agrupar las condiciones:

Quizá así sea más fácil de entender. (No he entrado en el significado del código en sí).


Si lo pones así, será una cuestión diferente - si por debajo de la línea, entonces... Y necesito cuando cae entre líneas específicas - en el área de esas líneas.

 
Pacman:


Resulta que no es necesario llamar a los parámetros desde el indicador. Todo puede ser prescrito en el Asesor Experto.

Tendré que averiguar cuál es mi error.

He reestructurado mi indicador con las funciones iLowest y iHighest, ¿es correcto este código o se puede acortar?

En cuanto se introduce el indicador en el EA, es una "grada para el caballo" cuando se trabaja en el probador. ¡¡¡En tu caso, el indicador NO es necesario!!!
 
Chiripaha:

Si lo pones así, será diferente - si está por debajo de la línea, entonces... Y lo quiero cuando cae entre líneas específicas - en el área de estas líneas.

Lo siento, me perdí los paréntesis. Corregido el original.
Razón de la queja: