Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 108

 
webip:
Gente, por favor, ayúdenme. Ya han pasado 5 días y no puedo resolverlo. He hecho mi EA para modificar la orden de stop loss cuando los criterios necesarios se disparan. Y la pérdida de la parada - que se debe establecer, tomar ganancias de la última orden cerrada. Pero cuando se inicia la modificación, el robot siempre establece un Stop Loss de 1,0000. No entiendo qué es lo que está mal. Ya me he devanado los sesos. ¿Alguien tiene alguna variante, como tomar el take profit de la orden anterior y colocar el stop loss de la orden actual?

Bueno... parece que lo estás almacenando en una variable de tipo int, mientras que tú quieres que sea un double.

La toma de la orden actual no tiene por qué ajustarse al stop loss de la orden anterior. Puede estar colocado en un lugar donde no debería estar.

 
artmedia70:

Bueno... Parece que lo estás almacenando en una variable de tipo int, mientras que deberías almacenarlo en double.

Y no es necesariamente que puedas colocar la toma actual en la parada de la anterior... Puede estar colocado en un lugar donde no debería estar.


pero es donde se puede poner. Al principio también pensé que estaba memorizando en el tipo equivocado, pero luego lo comprobé y estaba bien.
 
webip:
pero es donde se puede poner. Al principio también pensé que estaba memorizando en el tipo equivocado, pero luego lo comprobé y estaba bien.

Guárdalo en una variable doble, lo más probable es que guardes el precio en una variable int, para que se corte la parte fraccionaria.
 
artmedia70:
Guárdalo en una variable doble, lo más probable es que guardes el precio en una variable int, para que se corte la parte fraccionaria.


Lo he vuelto a comprobar. No entendí nada, pero todas las variables están en su sitio. El único problema ahora es que cuando se dispara el criterio de modificación de una orden, el gráfico del Probador de Estrategias simplemente se congela. ¿Qué debo hacer? Creo que hemos memorizado todo por partida doble.
 
webip:

Lo he vuelto a comprobar. No he entendido nada, pero todas las variables están en su sitio. El único problema ahora es que, cuando se dispara el criterio de modificación de una orden, el gráfico del Probador de Estrategias simplemente se congela. ¿Qué debo hacer? Creo que hemos memorizado todo por partida doble.

Se olvidó de cerrar la nevera en la cocina :)

Bueno, ¿qué otra cosa puedo decir en un lugar sin nada?

¿Así? ¿O está seguro de que almacena los precios en una variable de tipo double?

 
artmedia70:

Se olvidaron de cerrar la nevera de la cocina :)

Bueno, ¿qué más puedo decir sobre lo esencial?



No. La nevera está cerrada. :))

No sé cuál es el problema. He hecho todas las variables correctamente. Aquí está el trozo donde se modifica. Quizá entiendas cuál es el problema.

int modify_2(int tip)
 {

 int ticket;  //номер ордера
 double 
 price,   //Цена открытия
 tp;     //Новое значение цены
 double ts;
 bool modify=false;
 double take;
 
  for(int n=1;n<=OrdersTotal();n++)
   {
    ticket=mas_ord[n][1];
    if(mas_ord[n][4]!=tip)
     continue;
    price=mas_ord[n][6];
    tp=mas_ord[n][2];                          
    
    switch(tip)
     {

      case 0:
     OrderSelect(1,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
       modify=true;
       break;
      
      case 1:
       ts=Ask+Level_sell_138*Point;
       modify=true;        
     } 
    //--------------
    if(modify==false)
     continue;
    
    bool ans=OrderModify(ticket,price,ts,tp,0);
    
    if(ans==false)
     { 
      n--;
     }
     else ord_2=true;
   }
   return;
 }
 
webip:


No. La nevera está cerrada. :))

No sé cuál es el problema. He hecho todas las variables correctamente. Aquí está la pieza donde se hacen las modificaciones. Tal vez puedas averiguar cuál es el problema.

¿Esto es de un libro de texto o algo así?

for(int n=1;n<=OrdersTotal();n++)

Tienes que ir a través de las órdenes así:

for(int n=0;n<OrdersTotal();n++)

En consecuencia, el resto de las matrices flotarán...

Yo buscaría el último pedido cerrado intentando buscar en el historial, no señalando explícitamente el 1

Y así sucesivamente... No puedo mirar más allá - en primer lugar, sin la integridad del código es poco probable que ayude, y en segundo lugar, son las siete de la mañana y aún no me he ido a la cama...

 
webip:


No. La nevera está cerrada. :))

No sé cuál es el problema. He hecho todas las variables correctamente. Aquí está la pieza donde se hacen las modificaciones. Tal vez puedas averiguar cuál es el problema.

¡Intenta hacer el doble! No haría daño, pero podría ayudar a resolver el problema.
 
artmedia70:

¿Esto es de un libro de texto?

Hay que sobrepasar las órdenes así:

En consecuencia, el resto de las matrices flotarán...

Buscaría el último pedido cerrado intentando buscar en el historial, no señalando explícitamente el 1

Y así sucesivamente... No puedo buscar más - primero, apenas me ayudaría sin la integridad del código, y segundo, son las 7 de la mañana y aún no me he acostado...



También ha funcionado bien con este rebasamiento. Y ese último pedido cerrado, lo apunté directamente para saber si el programa funciona bien del todo (y funciona como una mierda). Y como estoy probando en el probador (y sé que la orden que me interesa se abrirá primero), mi código es muy largo, no podré copiarlo aquí:)
 
webip:


No. La nevera está cerrada. :))

No sé cuál es el problema. He hecho todas las variables correctamente. Aquí está la pieza donde se hacen las modificaciones. Tal vez puedas averiguar cuál es el problema.

El conjunto

mas_ord

¿Qué tipo tiene usted?

¿De qué tipo son las variables de precio, tp, take? ¿Por qué debemos adivinar aquí?

Razón de la queja: