[¡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 572

 
¿lo he hecho bien? NumberOfPositions(Symbol(),OP_BUY,Magic); ¿es este el número de posiciones de compra abiertas?
 
Frostr:
¿Lo he hecho bien? NumberOfPositions(Symbol(),OP_BUY,Magic); ¿es el número de posiciones de compra abiertas?


Su Asesor Experto no define las condiciones de apertura, sino que se limita a abrir en la dirección que usted ha especificado (variables COMPRA y VENTA). Puedes añadir una condición para comprobar si la última operación se cerró con beneficios o pérdidas en este EA o en el tuyo. Pero, en mi opinión, ya cumple con su cometido, lo que demuestra más claramente la falta de rentabilidad de esta estrategia. En realidad, ni siquiera necesitamos un Asesor Experto para esto, se puede calcular en media hora en el historial incluso sin calculadora. Si el Stop Loss es igual al Take Profit, la pérdida es igual al spread multiplicado por el número de operaciones, en todos los demás casos - el spread más la mitad de la diferencia entre el Stop Loss y el Take Profit.

P.D. En general, aunque el código de owl es diferente, hace exactamente lo mismo que tu EA, si le añades la condición que quieres. Es decir, si el precio ha cambiado y ha ido en la otra dirección, abrirá dos operaciones opuestas en cada cierre. Simplemente me resultó más fácil eliminar del código todas las cosas "innecesarias" que no están relacionadas con la tarea en cuestión.

P.P.S.Has acertado con lo deNumberOfPositions(Symbol(),OP_BUY,Magic).

 
gheka:
¿qué oficina de correos puede enviar mensajes de texto sobre el correo entrante y su contenido?

Por ejemplo, mail.ru
 
rigonich:

Su Asesor Experto no tiene condiciones de apertura, simplemente se abre en la dirección que usted establece (las variables de COMPRA y VENTA). Puedes añadir una condición para comprobar si la última operación se cerró con beneficios o pérdidas en este EA o en el tuyo. Pero, en mi opinión, ya cumple con su cometido, lo que demuestra más claramente la falta de rentabilidad de esta estrategia. En realidad, ni siquiera necesitamos un Asesor Experto para esto, se puede calcular en media hora en el historial incluso sin calculadora. Tan pronto como añada su condición a cualquier Asesor Experto (abrir dos operaciones opuestas y cerrar sólo por Stop Loss o Take Profit), la cantidad de pérdida se convierte en fija y depende sólo del número de operaciones.



¡No sé por qué depende el número de posiciones abiertas, no puedo ajustarlo(!

La única manera de reducir el número de posiciones abiertas es aumentar el lote. Si se fija el lote al máximo, entonces se abrirán de 1 a 3 posiciones a la vez

Si se ajusta el lote al mínimo, se abrirán entre 500 y 1500 posiciones a la vez

 
Frostr:



No sé por qué depende el número de posiciones abiertas, no puedo controlarlo((...) Estoy tratando con un EA que me dio durante las pruebas.

La única manera de reducir el número de posiciones abiertas es aumentar el lote. Si se fija el lote al máximo, entonces se abrirán de 1 a 3 posiciones a la vez

Si se ajusta el lote al mínimo, se abrirán entre 500 y 1500 posiciones a la vez

1. Sólo se puede abrir un número limitado de pedidos a la vez.

2. Si el lote se incrementa de forma significativa, no se pueden abrir puestos adicionales por falta de fondos.

 
Frostr:



Mi Asesor Experto, que me diste durante las pruebas, por alguna razón abro 500-800 posiciones a la vez, no entiendo qué determina el número de posiciones abiertas y no puedo ajustar(

La única manera de reducir el número de posiciones abiertas es aumentar el Lote, si usted pone el Lote al máximo, entonces abrirá 1-3 posiciones a la vez.

Si se ajusta el lote al mínimo se abrirán entre 500 y 1500 posiciones a la vez

Archivos adjuntos:
 
rigonich:


 

Escribí algo parecido a trailing para mi EA, pero no funciona, dependiendo de lo que intente cambiar para que funcione, genera el error 1 al modificarlo, o simplemente no va más allá de la primera impresión (Print("Leading Buy position"); )... ¿cuál podría ser la razón, me encantaría escuchar cualquier sugerencia, gracias de antemano!

bool TrailingStop()
   {
   int MD0=MarketInfo(Symbol(),MODE_STOPLEVEL);
   if ((OrderMagicNumber()==11111)==true)
      {
      Print("Ведём позицию Buy");
      while(OrderCloseTime()==0)
         {
         if ((NormalizeDouble(Bid-OrderStopLoss()+StepStop*Point,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Bid,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(Bid-OrderStopLoss(),Digits),", новый стоп-",NormalizeDouble(Bid-StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
         Sleep(1000);
         }
      if (OrderCloseTime()>0)
         {
         Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
         return(true);
         }
      }
   else
      {
      if ((OrderMagicNumber()==22222)==true)
         {
         Print("Ведём позицию Sell");
         while(OrderCloseTime()==0)
            {
            if ((NormalizeDouble(OrderStopLoss()+StepStop*Point-Ask,Digits)>NormalizeDouble(StopLevel*Point,Digits))&&(NormalizeDouble(MD0,Digits)<NormalizeDouble(StopLevel*Point,Digits)))
               {
               RefreshRates();
               Print("текущий бид-",Ask,", текущий стоп-",OrderStopLoss(),", текуйщий тейк-",OrderTakeProfit(),", цена открытия-",OrderOpenPrice(),", расстояние от текущего стопа до текущего бида-",NormalizeDouble(OrderStopLoss()-Ask,Digits),", новый стоп-",NormalizeDouble(Ask+StopLevel*Point,Digits));
               if (OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+StopLevel*Point,Digits),OrderTakeProfit(),0)==true)
                  Print("Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", успешно изменён на ",OrderStopLoss());
               else Print("Не удалось переместить уровень Stop Loss ордера с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),". Ошибка ",GetLastError());
               }
            Sleep(1000);
            }
         if (OrderCloseTime()>0)
            {
            Print("Ордер с номером ", OrderTicket(),", и магическим числом ",OrderMagicNumber(),", закрыт по цене ",OrderClosePrice(),", с прибылью/убытком ",OrderProfit());
            return(true);
            }
         }
      else return(false);
      }
   }
 
Ekburg:

Escribí algo parecido a trailing para mi EA, pero no funciona, dependiendo de lo que intente cambiar para que funcione, genera el error 1 al modificar, o simplemente no pasa de la primera impresión (Print("Leading Buy position"); )... ¿cuál podría ser la razón, me encantaría escuchar cualquier sugerencia, gracias de antemano!


Su condiciónwhile(OrderCloseTime()==0). Si entra en este bucle, los intentos de modificación se repetirán hasta que se cierre la orden o se encuentre el operador brek o return, que no tiene en el bucle.

Lo siento, lo he estropeado. Están ahí, pero no los noté de inmediato sin gafas. He eliminado el paréntesis superfluo y he añadido la salida. Pruébalo, puede que funcione.

Archivos adjuntos:
0101.mq4  3 kb
 
Ekburg:

Escribí algo parecido a trailing para mi EA, pero no funciona, dependiendo de lo que intente cambiar para que funcione, genera el error 1 al modificarlo, o simplemente no va más allá de la primera impresión (Print("Leading Buy position" ); )... ¿cuál podría ser la razón, me encantaría escuchar cualquier sugerencia, gracias de antemano!

Por el bien del interés dime como se comporta ESTO - "algo así como trailing" en el EA??? Mi opinión es que el código debería congelarse. ¿Y qué ocurre en realidad? ¿Abre más de un pedido?
Razón de la queja: