[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 340

 
dyxaa:

gente, ¿cómo se cierra una orden pendiente en n, número de pips si no se ha disparado?

No puede cerrarse, pero sí borrarse.

 

Dibujo un indicador con fines de entrenamiento (es decir, estoy aprendiendo) y obtengo este resultado cuando cambio los datos:


Las líneas rojas y azules no fluyen suavemente entre sí.

¿Por qué ocurre esto y cómo puedo evitarlo?

  for(i = limit; i >= 0; i--) 
    {
     cciTrendNow      = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i);
     cciTrendPrevious = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, i+1);

     if (cciTrendNow > st && cciTrendPrevious < st)
      {
       TrendUp[i+1] = TrendDown[i+1];
       ArrayInitialize( TrendDown[i+1], 0 ); // Попытался обнулить, чтобы обойти некрасивую отрисовку.
      }

     if (cciTrendNow < st && cciTrendPrevious > st) 
      {
       TrendDown[i+1] = TrendUp[i+1];
       ArrayInitialize( TrendUp[i+1], 0 );   // Попытался обнулить, чтобы обойти некрасивую отрисовку.
      }
    }

El problema aparece en esta parte del código. Pero cómo superarlo - no podía averiguar o pensar en algo a mí mismo. Por favor, avisa.

 
dyxaa:

gente, ¿cómo se cierra una orden pendiente en n, número de pips si no se ha disparado?

Haz clic en la cruz.
 
artmedia70:

No estaba hablando de variables externas. Estaba hablando de esto.

Imaginemos una situación. Hay que tomar una decisión en función de la última posición abierta.


Para el probador:

Creamos variables, en las que almacenaremos los datos necesarios de la última posición abierta.

En cuanto se abra una nueva posición, añadiremos inmediatamente los datos necesarios en estas variables.

Cuando llega una señal para abrir una siguiente posición (por ejemplo, después de 20 minutos de prueba), necesitamos comprobar algunos criterios, por los cuales decidimos los datos de la posición a abrir. Estos criterios, por convención, dependen de la posición anterior abierta. Los leemos desde las variables (los guardamos en la apertura anterior) y los utilizamos como datos adicionales para una nueva posición.

Cuando abrimos una posición, almacenamos los nuevos datos sobre la posición recién abierta en las variables.


De verdad:

Imaginemos la misma situación, pero... Imagina que después de abrir la última posición y almacenar sus datos en variables, han pasado 10 minutos (tienen que pasar otros 10 minutos antes de que se abra la siguiente posición (lo acabamos de suponer en un "probador")). Y en este intervalo de tiempo, el Asesor Experto se reinició por alguna razón.

¿Qué sucede después de reiniciar el EA con los datos de la última posición abierta que se almacenaron en variables? No existirán.

Entonces, ¿de dónde tenemos que sacarlas? Derecho - búsqueda. Por eso necesitamos la función de buscar los datos necesarios. Por lo tanto, es mejor encontrar todo de una vez, cuando lo necesitamos, y no almacenarlo en variables, lo que es realmente mucho más fácil y rápido.


Perdón por la aclaración tardía - acaba de salir al mundo ... :))



Gracias Artyom. Todo tiene sentido, por supuesto. Por eso estoy aprendiendo a escribir con funciones. Pero a veces la lógica no es tan buena. Por eso tropiezo. La última vez que resolví este problema expandiendo todos los datos del bucle de una función a otra, me tomé un descanso de la programación en general durante un par de días para solucionar las cosas. ¡Ahora voy a seguir adelante!
 
solnce600:

Señores, por favor, aconsejen cómo codificar el siguiente algoritmo utilizando un bucle.

if (iLow (Symbol (),0,1) > iLow (Symbol (),0,10))// si el MÍNIMO de la primera vela > MÍNIMO de la décima vela

OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point, "jfh",123 ); // abrir la orden.

TENGO QUE

Si la baja 1 y simultáneamente la baja 2 y simultáneamente la baja 3...... . ...y simultáneamente vela baja 9> vela baja 10 ( es decir, vela baja de 1 a 9)

/ /abrir una orden.

Gracias.

Aun así, si he oído bien tu pregunta, el código sería

bool have = true;

for (int i=0; i<10; i++)
  {
   if (Low[i] > Low[10])        // Как вариант:  if ( iLow(Symbol(),0,i) > iLow(Symbol(),0,10) )
    {
     have = false;
     break;
    }
  }

if(have) OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );    //открыть ордер.

Pero eso es con la insinuación de las preguntas frecuentes. No podría haberlo hecho sin él.

 

Tengo una idea, pero cómo hacerlo en la vida real y cómo funcionará de forma fiable en la vida real, no lo sé realmente.

La esencia es la siguiente. Debemos entrar en el mercado después de colocar el búho en el gráfico inmediatamente después del cierre de la barra, es decir, en la apertura de una nueva barra. Esta es la primera orden. Además, cuando la orden es cerrada por un TP o un precio Stop, debemos abrir una orden en la apertura de una nueva barra inmediatamente. ¿Cómo hacerlo de forma más razonable?

Entiendo que debemos crear una variable. Coloca el precio de apertura de la barra actual. Y compara este valor con el precio de apertura de la barra actual. Si el valor de la variable no es igual al precio de apertura de la barra actual con el índice cero, abriremos una orden.

¿Es esta la mejor opción?

 
Chiripaha:

Dibujo un indicador con fines de entrenamiento (es decir, estoy aprendiendo) y obtengo este resultado cuando cambio los datos:


Las líneas rojas y azules no se unen suavemente entre sí.

¿Por qué ocurre esto y cómo puedo evitarlo?

El problema aparece en esta parte del código. Pero cómo superarlo - no podía averiguar o pensar en algo yo mismo. ¿Puede decirme, por favor.


¡Uf!... Ya lo tengo resuelto... : )))

Ahora, si pudiera resolver el resto del problema, sería mucho mejor. ¡Gracias a todos los que han querido ayudar! : ))

Abro otros 2 búferes exactamente iguales - no dibujan... ¿Cuál es la magia... - Bien, estudiaremos y buscaremos. Sin embargo, es una pena perder el tiempo en la "bicicleta". En este caso, ¿cuándo inventar uno nuevo?

 
hoz:

Tengo una idea, pero cómo hacerlo en la vida real y cómo funcionará de forma fiable en la vida real, no lo sé realmente.

La esencia es la siguiente. Debemos entrar en el mercado después de colocar el búho en el gráfico inmediatamente después del cierre de la barra, es decir, en la apertura de una nueva barra. Esta es la primera orden. Además, cuando la orden es cerrada por un TP o un precio Stop, debemos abrir una orden en la apertura de una nueva barra inmediatamente. ¿Cómo hacerlo de forma más razonable?

Entiendo que debemos crear una variable. Coloca el precio de apertura de la barra actual. Y compara este valor con el precio de apertura de la barra actual. Si el valor de la variable no es igual al precio de apertura de la barra actual con el índice cero, abriremos una orden.

¿Es esta la mejor opción?


Si se implementa, funcionará con la misma fiabilidad en el comercio real que en la demo. Pero no el hecho de que sea rentable.

Hay que abrir un pedido y ya está . Pero no has formulado en qué dirección debe abrirse la orden y en qué condiciones se determina este lado.

No tiene que comparar nada - simplemente abra una orden cuando aparezca una nueva barra (basada en su entrada).

newBars = iBarShift(Symbol(), PERIOD_H1, lastH1BarTime);    // Это было найдено через поиск на форуме

Si no tienes ni idea:

"Y la experiencia es el hijo de los errores difíciles.
Y el genio es amigo de las paradojas" (Alexander Sergeyevich por su ayuda).

Tienes que hacer (escribir) un búho y comprobarlo experimentalmente. - No creo que nadie te escriba el búho (gratis). Dar una pista es una cosa. Pero poner en práctica las ideas (pensamientos) no es una ayuda, sino un trabajo.

 
borilunad:
Haz clic en la cruz.

Exactamente. Brillantemente simple))))

Os pido ayuda) aquí está poniendo una orden pendiente vamos acomprar stop por ejemplo necesito que se borre si el precio pasó de 100 puntos hacia abajo se puede hacer?

 
borilunad:
Haz clic en la cruz.

Exactamente. Brillantemente simple))))

Te pido ayuda) aquí es poner una orden pendiente vamos acomprar stop por ejemplo necesito que se borre si el precio pasó 100 puntos hacia abajo puede hacer eso?