[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 215

 
Qra:

¡Buenos días a todos!

Estoy escribiendo mi primer bot, y al mismo tiempo me estoy familiarizando con MQL. Tengo el siguiente problema durante las pruebas:

La orden OP_BUYSTOP se ejecuta justo después de la colocación de la orden, aunque a juzgar por el gráfico, el precio no alcanza el valor objetivo (véase más abajo)

TiempoTipoPidaVolumenPrecioS / LT / PBeneficiosSaldo
12011.09.19 02:10comprar stop10.0176.93576.73577.135
22011.09.19 02:10comprar10.0176.93576.73577.135

USDJPY,M5 (visual)

Fecha 2011.09.19

Hora 02:15

Abierto 76.903

Alta 76.909

Bajo 76.890

Cerrar 76.890

Volumen 66

Estoy probando todas las garrapatas.

¿Quizás no entiendo bien la orden OP_BUYSTOP? Para comprar si el precio supera un determinado valor, ¿no?

Aquí hay un poco de código fuente que hace un pedido

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP);

Muchas gracias a todos por adelantado.

En el gráfico de velas, todos los precios son Bid y cualquier orden de compra se ejecuta al precio Ask.
 
PapaYozh:
En el gráfico de velas, todos los precios son Bid y cualquier orden de compra se ejecuta al precio Ask.

Gracias.

 
Hola a todos.

Quiero eliminar las líneas horizontales pendientes si su nivel ha sido roto por el precio actual. Otra forma de decirlo: si el nivel ha sido superado o "renegociado" ya después de la creación de OBJ_HLINE.

Gracias a Roll por la ayuda. ¿Podría decirme cómo seguir correctamente la condición de mantener el nivel en un periodo conocido?
//----------------------------------------------------------------------+ 
//  Удаление  OBJ_HLINE при пробитии его уровня   /Red-Up/Blue-Down|    |
//----------------------------------------------------------------------+   
void DelHLine( string nm="")  
   {
    int obj_total=ObjectsTotal();

       for(int i=1;i<obj_total;i++) 
      { 
        nm=ObjectName(i);
         if(nm==ObjectName(i)&&ObjectType(nm)==OBJ_HLINE)
         {
          color    cl     = ObjectGet(nm,OBJPROP_COLOR);
          double   pl     = ObjectGet(nm,OBJPROP_PRICE1);
          datetime timeSet= ObjectGet(nm,OBJPROP_TIME1);
          int      shift  = iBarShift(NULL,0,timeSet);
   
          if((cl==Red  && pl<High[iHighest(NULL,0,MODE_HIGH,shift,1)])||
             (cl==Blue && pl>Low [iLowest (NULL,0,MODE_LOW, shift,1)]) ) ObjectDelete(nm); 
         } 
      }
    return(0);  
  }
//+------------------------------------------------------------------+
 

¡Hola! Por favor, ayúdenme.

No puedo entender por qué este script no muestra los datos en excel como columnas.

Al ejecutarlo en excel, sólo aparece la cabecera de la tabla, sin datos.

Ayúdame a entender por qué el delimitador no es percibido por Excel.

Archivos adjuntos:
writefile.mq4  3 kb
 

Estoy empezando con la programación, así que me surgen muchas dudas, ¡gracias de antemano por su atención!

Escribí un script llamado NewScript, que realiza una función simple - mostrar los precios OHLC por barras en un gráfico...

Mi pregunta es - si BARS es exactamente el número de barras en el gráfico actual, entonces ¿por qué en mi registro EA muestra el número de barras en la pantalla (alrededor de 200), pero en mi registro más de 2000?

Gracias.

Archivos adjuntos:
 
Vinin:


Pequeña corrección


double Hi (int pos=0) //создали Hi, зависящую от pos
{ 
  int i=pos; //присваиваем "i" значение от "pos", то есть i равно pos
  double H=0;
  while (i<=pos+10) //как она может быть меньше, если она равна?
  {
    if (H<iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i))  //это мне вообще не понятно... то есть если значение "Н" будет меньше, то присваиваем...  
      H=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i); //то есть он определит мне наинизший, но не наивысший бар


    i++; //ну тут мы добавляем к "i" плюс 1
  }
  return(H); //возвращаем Hi в самое начало
}

Lo siento, no puedo entender la función...

 
CLAIN:



La opción más fácil

double Hi (int pos=0) 
{ 
  double H[10]; // Объявили массив
  
  for (i=pos+1;i<=pos+10;i++) // формируем массив
  {
    H[i]=iMACD (NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
  }
  int MaxId=ArrayMaximem(H); ищем индекс максимального элемента
  return(H[MaxId]); // возвращаем максимальный элемент
}
 

¡Hola!

¿Puedes ayudarme a escribir el código para detener el EA por un tiempo?

Escribí el código así.

int init() {
string OrderStop="OrderStop "+ Symbol();
OrderSig =GlobalVariableGet(OrderStop);
// Print (OrderSig);

return (0);
}

int deinit() {
return (0);
}

int start() {
string OrderStop="OrderStop "+ Symbol();
OrderSig = GlobalVariableGet(OrderStop);

si (OrderSig==1)return(0);

si no {

EA body(código)

}

return(0);

}

En el trailer este código funciona, pero cuando compilo o vuelvo a ejecutar Terminal,

El EA comienza a funcionar (abre la posición) y no vuelve a operar.

¿Qué puede ser?

O dime otra opción.

 
alega:

O sugerir otra opción.

Utiliza una f:

  Sleep (3000);
 
Gracias, lo probaré.
Razón de la queja: