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

 
MK07:

Corrección técnica: utilice el botón SRC del panel superior para insertar el código, como hacen sus asesores. Será mucho más fácil de leer.

P.D.
para borrar la línea de comentarios, inserte Comment(") en deinit();
 
granit77:
Corrección técnica: utilice el botón SRC del panel superior para insertar el código, como hacen sus asesores. Será mucho más fácil de leer.

P.D.
Para borrar la línea de comentarios, inserte Comment(") en deinit();
Gracias por la información.Es mi primera vez en los foros.Un agradecimiento especial por el fragmento de código.
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
double ExtMapBuffer1[],ExtMapBuffer2[];
int init(){SetIndexStyle(0,DRAW_LINE);SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);SetIndexBuffer(1,ExtMapBuffer2);
IndicatorShortName("MACD_max-min");return(0);}
int deinit(){Comment("");return(0);}
//+------------------------------------------------------------------+
int start(){int counted_bars=IndicatorCounted(),limit,win_idx;double top;
if(counted_bars>0)counted_bars--;limit=Bars-counted_bars;win_idx=WindowFind("MACD_max-min");
for(int i=0;i<limit;i++){ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);}
  top=WindowPriceMax(win_idx);ObjectDelete("max");
  if(ObjectFind("max")!=win_idx){ObjectCreate("max",OBJ_HLINE,win_idx,Time[0],top);
  ObjectSet("max",OBJPROP_COLOR,Yellow);ObjectSet("max",OBJPROP_WIDTH,0);}
  Comment( "\n"," top = ",DoubleToStr(top,5));return(0);}
//+------------------------------------------------------------------+
 
https://docs.mql4.com/ru/common/Comment
void Comentario(. ...)
La función imprime un comentario definido por el usuario en la esquina superior izquierda del gráfico. Los parámetros pueden ser de cualquier tipo. El número de parámetros no puede ser superior a 64.
Las matrices no se pueden pasar a Comment(). Las matrices deben imprimirse elemento por elemento.
Los datos de tipo double se imprimen con 4 dígitos decimales después del punto. Para obtener números con mayor precisión, utilice DoubleToStr().
Los tipos bool, datetime y color se imprimirán como números.
Para obtener datos de fecha y hora en forma de cadena, utilice la función TimeToStr().

Para dividir la salida en varias líneas, puede utilizar el carácter de avance de línea "\n" o "\r\n".
Véase también Alert() y Print().
 
Me pueden decir cómo se escribe:
El precio ha cruzado la línea horizontal hacia arriba....
¿Y cómo debe describirse esta línea?
 
Roll:
Gracias por la ciencia.
 

Hola,

Este es el problema que tengo.

Trabajando en PERIOD_H1.

Para cerrar al final de la hora hago esto:

   for(j = OrdersTotal()-1; j >= 0; j--){ 
       if(OrderSelect(j, SELECT_BY_POS, MODE_TRADES))
          if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber){
            OpenTime= OrderOpenTime();          
          if(OrderType() == OP_BUY){
            if(TimeCurrent()>Time[0]+3580){ 
             OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),0,Red);}
             }
           else 
          if(OrderType() == OP_SELL){
            if(TimeCurrent()>Time[0]+3580){
             OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),0,Blue);}
             }
           }
         }
Para abrir una posición al principio de la hora hago lo siguiente
   if(TimeCurrent()<Time[0]+3500 && HaveBuy==false && HaveSell==false)
     if(Ask <= EnBuy && IsFreeLevel==true){
          ticket = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),0,0,forecast-5*MyPoint,"",MagicNumber,0,Blue);
         }
     if(Bid >= EnSel && IsFreeLevel==true){
          ticket = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),0,0,forecast+5*MyPoint,"",MagicNumber,0,Red);
         }

Pero para la prueba va así

No puedo entender en qué me estoy equivocando.

No todas las veces funciona así, pero tiene esos momentos.

Gracias a quien responda :).

 
alsu:
No digo eso, digo que qué más da dónde se acople el EA. Si está escrito correctamente, no importa dónde se coloque - sólo colóquelo en un gráfico de cambio de Mongolia, pero si está configurado para operar en EURUSD 1 minuto, lo hará. Y no es difícil programarlo, sólo hay que cambiar un par de líneas.

Muchas gracias por la aclaración.

Lo único que me preocupa es que el probador simule barras de un minuto para realizar modificaciones en la apertura de cada barra de un minuto.

Intentaré cambiar Open[0] por iOpen(NULL,1,0) y añadir una función para comprobar la apertura de la barra de un minuto.

Pasaron unos minutos, durante los cuales retoqué el código y lo probé con el probador en M5 y me aseguré de que en este caso el probador no abre barras de 1 minuto, aunque está prescrito, y lo modifica sólo cada 5 minutos, cosa que me temía. En el modo de todos los ticks es un poco mejor, porque se modifica más a menudo. Pero en M1 sólo en la apertura de la barra funciona igual, tanto con Open[0] como con iOpen(NULL,1,0), ¡por lo que sigo agradecido!

Ahora usaré siempre iOpen verde, ya que veo que puedo prescindir de Open rojo. El beneficio verde es más agradable que la pérdida roja. (:))

 
mario065:

Hola,

Este es el problema que tengo.

Trabajando en PERIOD_H1.

Para cerrar al final de la hora hago esto:

Para abrir una posición al principio de la hora hago lo siguiente
Pero para la prueba va así

No puedo entender en qué me estoy equivocando.

No todas las veces funciona así, pero tiene esos momentos.

Gracias, quien responde :)


Un amigo me dio un consejo:
En lugar de TimeCurrent()

TimeSeconds(TimeCurrent())

Y funcionó.

 
russcand:
¿Me pueden decir cómo se escribe:
El precio ha cruzado la línea horizontal hacia arriba....
¿Y cómo debe describirse esta línea?
Si el valor del indicador en la primera barra es mayor que el valor de la línea horizontal, Y, el valor del indicador en la segunda barra es menor que el valor de la línea horizontal, entonces la línea del indicador ha cruzado la línea horizontal hacia arriba.
La descripción de la línea horizontal es un número constante, es decir, su valor en la dimensión de la ventana del indicador. Pongamos el cursor del ratón sobre él y veamos este valor.
Razón de la queja: