Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 752

 

cómo cerrar una orden al cierre de una barra o vela

int start()
  {
      if ((Time[0] == prevtime) && openbarspriceonly) {
      return(0);
      }
   
      if (! IsTradeAllowed()) {
      Comment("Trades disallow");
      return(0);
      }
   
      prevtime = Time[0];

    if (CountTrades() == 0)
    {
        open = iOpen(Symbol(), PERIOD_D1, 0);
        close = iClose(Symbol(), PERIOD_D1, 1);

     if (DayOfWeek()==1&& Ask >= open)
     { 
        ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, NULL, Magic, 0, Blue);
        if (ticket>0)
        {
          Print("Ордер ошибка в Лонг: ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }
     }
     if (DayOfWeek()==5&& Bid <= open)
     {
        ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, NULL, Magic, 0, Red);
        if (ticket>0)
        {
          Print("Ордер ошибка в Шорт ", GetLastError());
        }
        else 
           Print("Ордер открыт успешно");
        if(OrderSelect( ticket, SELECT_BY_POS))
        {
          if(OrderClose(ticket, lots, close,Slippage,0))
          return(0);
        }

     }
    }
    return(0);
  }
 
ikatsko:

Enel probador de estrategias el comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Esto ocurre en situaciones en las que, por ejemplo, el instrumento es EURUSD y la moneda de balance es RUR .... y en otras combinaciones. Tengo entendido quela moneda de equilibrio debe ser la misma que el nombre de la segunda moneda del par de divisas. En caso contrario, devuelve el valor cero (en el probador de estrategias), lo que imposibilita la realización de pruebas con las combinaciones deseadas. ¿Cómo resolver este problema?

El resaltado no es correcto. Estoy calculando en euros con EURUSD, GBPUSD, etc. Sólo cuando está activado puede dar 0 antes del primer dato, por eso pongo una condición antes de los cálculos conTICKVALUE que si != 0;

En el probador,MarketInfo() puede no funcionar, así que conociendo el precio aproximado de un tick, lo establezco con la condición IsTesting() || IsOptimization() | IsVisualMode().

¿ "Conocer elprecio aproximado de una garrapata "? Mi solución es la siguiente: precio aproximado de un tick = 10*CURRENCY (USDCurrencyBalance). Se ajusta en todos los parámetros. Por supuesto, sería bueno que el tipo de cambio del par de divisas (divisa USDBalance) se tomara automáticamente en el terminal. A saber, conociendo la moneda del saldo (AccountInfoString(ACCOUNT_CURRENCY)), por ejemplo, RUR, formar una cadena de caracteres de nombre, por ejemplo, USDRUR. ¿Ver si hay un símbolo de este tipo en el terminal? ¿Quizás exista un símbolo de este tipo, por ejemplo USDRUR_c ? Obtenga un par de divisas que esté disponible en el terminal.

 
artmedia70:
¿Qué tiene que ver Vista con esto? El ratón, el ratón ya se está muriendo. Pronto se va a quedar rancio ;)
¡Tengo un portátil sin ratón, no como antes que con un ordenador grande el ratón me hacía doler el dedo índice!
 
ikatsko:

Enel probador de estrategias el comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Esto ocurre en situaciones en las que, por ejemplo, el instrumento es EURUSD y la moneda de balance es RUR .... y en otras combinaciones. Tengo entendido quela moneda de equilibrio debe ser la misma que el nombre de la segunda moneda del par de divisas. En caso contrario, devuelve el valor cero (en el probador de estrategias), lo que imposibilita la realización de pruebas con las combinaciones deseadas. ¿Cómo resolver este problema?

El resaltado no es correcto. Estoy calculando en euros con EURUSD, GBPUSD, etc. Sólo cuando está activado puede dar 0 antes del primer dato, por eso pongo una condición antes de los cálculos conTICKVALUE que si != 0;

En el probador,MarketInfo() puede no funcionar, así que conociendo el precio aproximado de un tick, lo establezco con la condición IsTesting() || IsOptimization() | IsVisualMode().

¿ "Conocer elprecio aproximado de una garrapata "? Mi solución es la siguiente: precio aproximado de un tick = 10*CURRENCY (USDCurrencyBalance). Se establece en todos los parámetros. Por supuesto, sería bueno que el tipo de cambio del par de divisas (divisa USDBalance) se tomara automáticamente en el terminal. Es decir, conociendo la moneda del saldo (AccountInfoString(ACCOUNT_CURRENCY)), por ejemplo, RUR, formar una cadena de caracteres con el nombre, por ejemplo, USDRUR. ¿Ver si hay un símbolo de este tipo en el terminal? ¿Quizás exista un símbolo de este tipo, por ejemplo USDRUR_c ? Obtenga un par de divisas que esté disponible en el terminal.

No lo necesito porque el precio de la garrapata no cambia durante la prueba, así como el spread y muchas otras cosas. Por eso siempre tengoMarketInfo(Symbol(),MODE_TICKVALUE) en el gráfico de cualquier símbolo, adjuntado por cualquier indicador gráfico que utilice, y pongo su valor en el código del EA antes de probarlo.
 
borilunad:
Tengo un portátil sin ratón, no como antes que tenía un gran ordenador y el ratón me hacía doler el dedo índice.

Así que el panel táctil tiene fallos. También tiene botones.

O tal vez mis dedos han cambiado ... :) Pero no creo que el "zumbido" sea la causa del SO

 
artmedia70:

Así que el panel táctil tiene fallos. También tiene botones.

O tus dedos ya no están bien... :) Pero no creo que el "traqueteo" sea la causa del SO

No soy bueno con los términos, el panel táctil, la"charla" ... ¡¿Aunque el panel táctil es cuando el coche se cae?! Pero no me da miedo, no tengo coche y no lo necesito. Me gusta pasear por una ciudad bonita, y cuando tengo que hacerlo, un transporte público muy cómodo con buenas carreteras y sin atascos. :)
 
borilunad:
No soy muy bueno con los términos, touchpad,"traqueteo" ... Aunque un panel táctil es cuando un coche se cae... Pero no me da miedo, no tengo coche ni lo necesito. Me gusta pasear por una ciudad bonita, y cuando tengo que hacerlo, un transporte público muy cómodo con buenas carreteras y sin atascos. :)

¿Te han expulsado de Google?

Touchpad( paneltáctil), elpanel táctil es undispositivo de entrada de señalización; la invención se relaciona con la automatización y la ingeniería informática y se puede utilizar para leer e introducir información en un ordenador, como símbolos, así como información sobre las coordenadas de la posición de los elementos y piezas de material magnético en la superficie del panel táctil. El panel táctil contiene un paquete de placas de circuito impreso. En las capas de cada placa de circuito impreso hay elementos inductivos-capacitivos planos en espiral conectados en cadenas en serie a lo largo de las filas y columnas de la matriz. Las matrices de todos los PCB están alineadas entre sí. Se coloca una capa aislante entre las superficies adyacentes del PCB. Las salidas de las filas (columnas) de la placa de impresión i están conectadas a las entradas de las filas (columnas) de la placa de impresión (i+1), y las entradas de las filas y columnas de la matriz de la primera placa de circuito impreso del paquete son las entradas del panel táctil, cuyas salidas son las salidas de las filas y columnas de la matriz de la última placa de circuito impreso del paquete. Al igual que otros dispositivos señaladores, un touchpad suele utilizarse para controlar un "puntero"moviendo un dedo por la superficie del dispositivo. Las almohadillas táctiles tienen distintos tamaños, pero suelen tener menos de 50 cm². La forma más frecuente es la rectangular, pero también hay modelos circulares.

 

¿Podéis decirme cuál puede ser la causa del fallo que se ha producido hoy?

El EA tiene la opción de dejar de operar 15 minutos antes del cierre del mercado el viernes.

Cuando aparece un nuevo día el EA comprueba si es viernes, entonces hoy dejamos de operar en StringToTime("23:59")-15*60

datetime FinishInFriday;
void OnTick()   {
   datetime cur=TimeCurrent();
   if(PrevDay!=Day()) {                               // при наступлении нового дня
      PrevDay =Day();
      
       if(TimeDayOfWeek(cur)==5) {                    // если сегодня пятница
         FinishInFriday=StringToTime("23:59")-15*60;    // время окончания торговли
         Print("Finish In Friday = ",FinishInFriday);   
       }
   }
   if(TimeDayOfWeek(cur)==5)
      if(cur>FinishInFriday) 
         return;
}

En el probador de estrategias, esta función funciona correctamente. Sin embargo, en el comercio real, veo una situación totalmente diferente - el Asesor Experto deja de operar en el primer tick cuando llega el viernes.

Aquí están las impresiones del diario de Expert Advisor:

Corredor #1, demo:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Corredor 2, real:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

Es decir, cuando aparece la barra diaria de hoy (viernes, 24 de octubre) en el primer tick, el EA

convertirá la línea "23:59" a la hora de ayer en lugar de asignar el día de hoy.

Pero si el EA se reinicia el viernes a mitad del día, determinará correctamente la hora de finalización.

 
tuner:

¿Podéis decirme qué puede estar causando el fallo que se ha producido hoy?

El EA tiene la opción de dejar de operar 15 minutos antes del cierre del mercado el viernes.

Cuando aparece un nuevo día el EA comprueba si es viernes, entonces hoy dejamos de operar en StringToTime("23:59")-15*60

En el probador de estrategias, esta función funciona correctamente. Sin embargo, en el comercio real, veo una situación totalmente diferente - el Asesor Experto deja de operar en el primer tick cuando llega el viernes.

Aquí están las impresiones del diario de Expert Advisor:

Corredor #1, demo:

0 05:59:47.731 Scalper GBPAUDpt,M1: Finish In Friday = 2014.10.23 23:44:00

Corredor 2, real:

0 03:00:11.999 Scalper EURUSD,M1: Finish In Friday = 2014.10.23 23:44:00

Es decir, cuando aparece la barra diaria de hoy (viernes, 24 de octubre) en el primer tick, el EA

convertirá la línea "23:59" en la hora de ayer, en lugar de asignar el día de hoy.

Pero si el EA se reinicia el viernes al mediodía, determinará correctamente la hora de finalización.

Mira más de cerca.

Si el día de ayer no es igual al día de hoy...

Sólo entrarás en esa unidad una vez al día.

De alguna manera dudo que funcione correctamente en el probador tampoco.

Mira MqlDateTime y TimeToStruct en la documentación.

Es una estructura sencilla, y es mucho más cómodo trabajar con ella que con esas conversiones de fecha y hora.

 
Vinin:

¿Te han expulsado de Google?

Touchpad( paneltáctil), elpanel táctil es undispositivo de entrada de señalización; la invención se relaciona con la automatización y la ingeniería informática y se puede utilizar para leer e introducir información en un ordenador, como los símbolos, así como la información sobre las coordenadas de la posición de los elementos y piezas de material magnético en la superficie del panel táctil. El panel táctil contiene un paquete de placas de circuito impreso. En las capas de cada placa de circuito impreso hay elementos inductivos-capacitivos planos en espiral conectados en cadenas en serie a lo largo de las filas y columnas de la matriz. Las matrices de todos los PCB están alineadas entre sí. Se coloca una capa aislante entre las superficies adyacentes del PCB. Las salidas de las filas (columnas) de la placa de impresión i están conectadas a las entradas de las filas (columnas) de la placa de impresión (i+1), y las entradas de las filas y columnas de la matriz de la primera placa de circuito impreso del paquete son las entradas del panel táctil, cuyas salidas son las salidas de las filas y columnas de la matriz de la última placa de circuito impreso del paquete. Al igual que otros dispositivos señaladores, un touchpad suele utilizarse para controlar un "puntero"moviendo un dedo por la superficie del dispositivo. Las almohadillas táctiles tienen distintos tamaños, pero suelen tener menos de 50 cm². La forma más frecuente es la rectangular, pero también hay modelos circulares.

Como yo en Vista, y rectangular en mi nuevo 8-ka, que me decepcionó con sus payasadas, es imposible trabajar tranquilamente, de repente todo sale volando, debe ser una moda de los teléfonos móviles, ¡piensan que todo el mundo vive sólo para el entretenimiento! Gracias por el mensaje informativo (¿no puedes hacer un chiste?)