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

 
Stells:

Buenas tardes.

Pregunta: ¿Cómo probar o qué resultados son más fiables?

En el Asesor Experto el período H1 está claramente prescrito en todas partes.

Estoy probando en m1 en abierto - pérdida clara.

Lo he probado en H1 con todos los ticks subiendo.

El problema es que los topes son pequeños, apenas unos puntos. Los beneficios son grandes.

Si el EA tiene un control explícito sobre la apertura de una nueva barra y sólo funciona cuando se abre una nueva barra, entonces puede probar en la apertura de una nueva barra. Por lo demás, sólo garrapatas. Además, los stops son pequeños y evidentemente se van a volar en la apertura de una nueva barra, porque en M1 una barra puede pillar tu stop en unos cuantos pips en un minuto. Pruebe todas las garrapatas en M1.
 
artmedia70:
Si el EA tiene un control explícito sobre la apertura de una nueva barra y sólo funciona cuando se abre una nueva barra, entonces puede probar en la apertura de una nueva barra. Por lo demás, sólo garrapatas. Además, los stops son pequeños y evidentemente se van a volar en la apertura de una nueva barra, porque en M1 una barra puede pillar tu stop en unos cuantos pips en un minuto. Pruebe todas las garrapatas en M1.

¿En qué se diferencian (en teoría) todos los ticks del H1?
 

Hola! Por favor, ayúdame a entender el código, lo que estoy haciendo mal. Soy nuevo en la programación. He leído el tutorial de mql4 y he mirado un montón de códigos de Expert Advisor, pero todavía no puedo encontrar las respuestas a mis preguntas. Tengo un terminal con 5 dígitos, cuenta ECN, spread variable + comisión. El Asesor Experto es el más fácil, abre la orden de venta cuando el МА rápido cruza el МА lento de arriba a abajo y viceversa cuando el МА rápido cruza el МА lento de abajo a arriba. De hecho el TS es mucho más complejo, simplemente no tengo todas las funciones básicas funcionando correctamente todavía y no puedo probarlo adecuadamente, y mucho menos optimizarlo, decidí no complicar el código con cálculos redundantes. Aquí está el código del Asesor Experto en sí mismo.

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
     
      if(OrderType()==OP_BUY)
        {
         if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

Tal vez alguien pueda responder a mis preguntas:

1. Cuando abro una orden, mantengo nulos en OrderSend donde deberían estar los parámetros Stopplos y TakeProfit; al intentar poner otros números allí, el experto no abre las operaciones; he comprobado si puedo abrir manualmente una operación y establecer inmediatamente SL y TP, ¿cuál puede ser el problema?

2. No entiendo por qué puse TP, SL y TS de 100 pips, aunque las operaciones se cierran no múltiples de estos pips, incluso teniendo en cuenta el spread. ¿Tal vez mi función de cierre de pedidos no funciona? ¿Cómo puedo limitar la pérdida en este caso, originalmente establecer SL, y cómo puedo conseguir que siga el precio sólo en + dirección?

3. Mi empresa de corretaje tiene Stop Level=100 pips, ¿cómo puedo establecer TP y SL virtuales, para poder establecer niveles más bajos que el Stop Level, como en el cierre manual de posiciones? (Los pips en las cuentas de Ecn no están prohibidos).

4. ¿Es posible hacer lo siguiente, y si es posible: hacer un cierre inverso y cerrar simultáneamente por el SL y el TP con una transferencia al Breakeven (dependiendo de qué evento ocurra primero)? He intentado hacerlo, pero en el probador abre una posición y no la cierra hasta el final de la prueba, sino que sólo recoge los intercambios). Cualquiera de ellos funciona.

¡Gracias de antemano a todos los que respondan!

Archivos adjuntos:
 

Buenas tardes...

Sólo una pregunta

Tomemos un fractal en Diario... Cómo encontrar el precio que termina la formación de este fractal, digamos en H1 .... Es deseable que en el precio aparezca flecha...

 
Cmu4:
Señores, ¿cómo se conecta un EA a un servidor y a un puerto específico? ¿Es posible?
Entonces, ¿no hay expertos en el tema aquí?
 
Cmu4:
Señores, ¿cómo se conecta un EA a un servidor y a un puerto específico? ¿Es posible?

¿Qué significa conectarse a un socket? ¿O leer información vía http?
 
Hola. Tengo una pregunta simple y probablemente estúpida. ¿Puedeun probador de estrategias cometer errores... ¿Qué métodos tiene para probar sus estrategias?... Gracias.
 

Sólo una pregunta

Tomemos un fractal en Diario... Cómo encontrar el precio que termina la formación de este fractal, digamos en H1 .... Es deseable que en el precio aparezca flecha...

 

¡Buenas tardes!

Pregunta sobre las funciones especiales: init(), start(), deinit().

Como sabemos, incluso desde el tutorial, para terminar (salir) de esta función especial, DEBE escribir completamente el operador Return (por ejemplo, el operador condicional IF-ELSE).

Operador de retorno (por ejemplo, en el operador condicional IF-ELSE).

¿Qué significan entonces los valores de retorno? Por ejemplo: Return(0) y posiblemente algún otro entero (Return(1));

 

¡Buenas tardes a todos!

Por favor, ayúdame a editar un poco el indicador "FX5_Divergence_V2.1".

Estoy trabajando con 3 pantallas. El indicador en la ventana aparece con su nombre y algunos otros valores y dificultan la visión del indicador. A menudo, debido a estas cifras, no puedo ver los picos del indicador y es difícil compararlos entre sí (rodeados de amarillo en la captura de pantalla).

(Por favor, ayúdenme a corregir el indicador para que sólo aparezca el nombre del indicador, sin los demás dígitos)

Indicador y pantalla en el apéndice.


Gracias de antemano a quien pueda ayudar)


Archivos adjuntos:
Razón de la queja: