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

 

Ayúdenme a escribir un indicador simple que dibuje líneas de máximos y mínimos en la ventana principal para el período requerido (que se establece con una variable externa).

 

Por favor, díganme dónde encontrar un planificador de 15 días de la semana.

Por favor, dame un enlace o un archivo o nombre.

Y como siempre, gracias por su tiempo.

 
41ckm39fi:

Buenas noches.

Podrían decirme cuál es el error, el indicador no da un mensaje sobre el cruce de dos MAs.


¿Pensaste bien antes de escribir este indicador?

Por favor, explique la lógica, al menos para usted.

#property indicator_chart_window

extern int        Period_MA_fast         = 5,
                  Period_MA_med          = 8,
                  Period_MA_slow         = 16,
                  period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  Speed_MA_fast[],
                  Speed_MA_med[],
                  Speed_MA_slow[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,DeMarker_buffer0);
   SetIndexBuffer(1,Speed_MA_fast);
   SetIndexBuffer(2,Speed_MA_med);
   SetIndexBuffer(3,Speed_MA_slow);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   //----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
   
   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
   //----
   for(i=limit; i>=0; i--) {
      DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
      Speed_MA_med[i]=iMA(NULL,0,Period_MA_med,0,MODE_LWMA,PRICE_CLOSE,i);
      Speed_MA_slow[i]=iMA(NULL,0,Period_MA_slow,0,MODE_LWMA,PRICE_CLOSE,i);
   }
   
   for(i=limit; i>=0; i--)
      Speed_MA_fast[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
   
   static int PrevTime = 0;

   if(PrevTime >= Time[0] ) return(0);
   PrevTime = Time[0];

   if(Speed_MA_fast[SIGNAL_BAR] - 0.3 > 0)
      if (0.3 - Speed_MA_fast[SIGNAL_BAR+1] >= 0)
         Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );

   if(0.7 - Speed_MA_fast[SIGNAL_BAR] > 0)
      if (Speed_MA_fast[SIGNAL_BAR+1] - 0.7 >= 0)
         Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");

   if(Speed_MA_med[SIGNAL_BAR] - Speed_MA_slow[SIGNAL_BAR] > 0)
      if (Speed_MA_med[SIGNAL_BAR+1] - Speed_MA_slow[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );   

   if(Speed_MA_slow[SIGNAL_BAR] - Speed_MA_med[SIGNAL_BAR] > 0)
      if (Speed_MA_slow[SIGNAL_BAR+1] - Speed_MA_med[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SELL!!!" );     
  
  
   return(0);
}
//+------------------------------------------------------------------+
Podría funcionar, no lo he probado
 

¡Gracias a todos! Hay una pregunta más.........

Tengo un EA con condiciones de entrada y salida basadas en ciertas señales(no importa qué)

es decir, tres pantallas-un indicador, por ejemplo Fuerza o Stohostick

condiciones de salida también sólo por él -

todo está bien, pero se necesita un Stop Loss adicional para proteger las posiciones

es decir, =10p.

................. puedo utilizar este EA sin pérdidas adicionales, al menos

puede ser posible utilizar tal Asesor Experto sin Pérdidas adicionales al menos en lotes pequeños=0.01 porque la señal de salida de todos modos

P.D. Estaba pensando en el correo electrónico o ICQ-acaba de abrir y MT te envió un mensaje

y estás pensando en cuál sería tu mejor parada.

....... no digas que no a nadie que te lo pida.

 
KlugerX35:

¡Gracias a todos! Hay una pregunta más.........

Tengo un EA con condiciones de entrada y salida basadas en ciertas señales(no importa qué)

es decir, tres pantallas-un indicador, por ejemplo Fuerza o Stohostick

condiciones de salida también sólo por él -

todo está bien, pero se necesita un Stop Loss adicional para proteger las posiciones

es decir, =10p.

................. ¿puedo utilizar este EA sin pérdidas adicionales, al menos

puede ser posible utilizar tal Asesor Experto sin Pérdidas adicionales al menos en lotes pequeños=0.01 porque la señal de salida de todos modos

P.D. Estaba pensando en el correo electrónico o ICQ-acaba de abrir y MT te envió un mensaje

y estás pensando en cuál sería tu mejor parada.

....... no digas que no a nadie que te lo pida.


Si el Asesor Experto tiene una salida "técnica", no necesita un stop, si quieres poner un stop por si acaso, por seguro, entonces pon uno más grande.

10 peniques es una pérdida real.

¿Para qué período es tan pequeño, para un minuto? Por supuesto, es una locura, y cortará incluso las operaciones potencialmente rentables.

¿Es posible utilizar un Asesor Experto de este tipo sin LOS adicional, al menos

sólo utilice un lote pequeño=0,01

Si funciona de forma estable, maneja los errores con normalidad y estás satisfecho con los resultados de las operaciones, entonces puedes hacerlo.
 

Esta es una pregunta - puede alguien explicar.

¿Por qué dice que el cierre por contraorden ahorra un diferencial? Después de todo, la primera operación, por ejemplo, de compra, se compra al precio Ask y se vende al precio Bid en ese momento (no hay beneficio en el tamaño total de la posición), y la segunda operación, de venta, se abre al precio Bid y, en consecuencia, la longitud de la posición se calcula sobre la base del precio de cierre de Ask.

El manual da algún ejemplo poco claro https://book.mql4.com/ru/trading/orderclose en el que la diferencia no está en el diferencial como se indica, sino en el tamaño de la segunda operación - en un cierre de 2 por 15 de una operación, y la contraria - sólo 15, es decir, desaparecen todas las pérdidas de la operación, pero no el diferencial.

¿Cuál es el problema?

 
FatyM:

Por favor, díganme dónde encontrar un planificador de 15 días de la semana.

Por favor, dame un enlace o un archivo o nombre.

Y como siempre, gracias por su tiempo.

Archivos adjuntos:
 
Vinin:


¿Pensaste bien antes de escribir este indicador?

Escribe la lógica, al menos para ti.

Tal vez funcione, no lo he comprobado

Volví a escribir la lógica de comparación de muwings todavía no hay mensajes, no puedo averiguar cuál es el error.
#property indicator_chart_window
#property  indicator_level1 0.3
#property  indicator_level2 0.7
//---- 
extern int        Period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  MA0[],
                  MA1[],
                  MA11[],
                  MA2[],                        
                  MA22[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(0,DeMarker_buffer0);
SetIndexBuffer(1,MA0);
SetIndexBuffer(2,MA1);
SetIndexBuffer(3,MA2);
SetIndexBuffer(4,MA11);
SetIndexBuffer(5,MA22);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
SetIndexStyle(4,DRAW_NONE);
SetIndexStyle(5,DRAW_NONE);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
//----
if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA0[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
//----   
  static int PrevTime = 0;
//---- 
  if(PrevTime >= Time[0]) return(0);
//---- 
  PrevTime = Time[0];
//----
                if(MA0[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA0[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
if(PrevTime <= Time[0]) 

return(0);
//---- 
  PrevTime = Time[0];
//----          
                if(0.7 - MA0[SIGNAL_BAR] > 0 && MA0[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                                
                                
MA1[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA2[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);

MA11[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA22[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);                                                       
                
//----   
if((MA1[i]>MA2[i]) && (MA11[i+1]<MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL1!!!" );    

if((MA1[i]<MA2[i]) && (MA11[i+1]>MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL2!!!" );   

   return(0);
  }
 

Cómo consigo que MathRand funcione correctamente, obtengo el mismo conjunto de números aleatorios cada vez que lo ejecuto. Lo que significa que no son aleatorios.

 

Cómo consigo que MathRand funcione correctamente, obtengo el mismo conjunto de números aleatorios cada vez que lo ejecuto. Lo que significa que no son aleatorios.