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

 
Маргарита Королёва:

La respuesta oficial de mi corredor (extracto):

"Nuestros documentos normativos estipulan que sólo proporcionamos el terminal de negociación MT4 para operar con contabilidad de cobertura y operaciones multidireccionales".

Así que... Una trampa es una trampa... Estoy disgustada de nuevo :(

...mejor me voy con mis amigas a un striptease, mirelación con el forex no va bien últimamente:(
¿Lo has leído? Y esto es una tendencia.
 
Маргарита Королёва:

Así que... Una trampa es una trampa... Me siento desgarrado de nuevo :(


...y cuanto más se escarbe en MT5, más se estropearán)
empezar con MT4
 
Маргарита Королёва:

La respuesta oficial de mi corredor (extracto):

"Nuestros documentos normativos estipulan que sólo proporcionamos el terminal de negociación MT4 para operar con contabilidad de cobertura y operaciones multidireccionales".

Dígame, por favor, ¿por qué necesita cobertura? El sistema de red es fácil de operar, especialmente para el scalping. También hay un mercado para eso. Si el precio sube, compro 0,01 lotes. También aumento el lote hasta 0,02. Cuando el precio baja, vendo 0,02. La compra se cierra automáticamente, el lote 0,01 restante se vende. En un movimiento se invierte la operación. No es necesario cerrar la posición. Y así sucesivamente. Es rápido y cómodo. En todo momento hay una posición total, que es conveniente gestionar. Abre todas las órdenes que quieras, y la posición es la media. Mientras que los operadores tendrán problemas para cerrar una gran cantidad de posiciones dirigidas en sentido contrario. Para el comercio, MT5 es más adecuado, mientras que para el estudio inicial del lenguaje MQL4 es más adecuado. Esto es lo que te dice el lobo de Rostov con años de experiencia en el comercio y la programación.

Vamos a simular la cobertura en nuestro bazar de la ciudad.

Puedes venderle patatas a una comerciante por 50 (BID) y comprarle por 100 (ASK). Venimos y compramos un cubo de patatas por 100 rublos. Y acordamos que lo devolveremos en una hora a precio de mercado (por 50). Después de todo, en el mercado de divisas, una posición abierta debe cerrarse tarde o temprano con una operación inversa. Suponemos que vendrán a por patatas a la cantina. Y el precio se multiplicará por tres. Entonces se venden por 150 y 50 extra se quedan en el bolsillo. Pero entonces llegan los agricultores colectivos con un camión de patatas y el precio baja (40 y 80): la tendencia ha cambiado. Lo inteligente sería vender nuestro cubo por 40 (para vender el depósito) y olvidarnos del Forex. Pero lo cubriremos. Vendemos nuestra patata a otro comerciante por 40 y acordamos que en media hora compraremos la patata a precio de mercado (aparentemente por 80) para devolver al primer comerciante. ¿Hay algún error en la descripción del seto en alguna parte? Entonces corríjalo, o ponga otro ejemplo para demostrar la cobertura.

 
Recordaré mi primera paga el resto de mi vida. Vivía en un albergue y era libre como un pájaro.
Sigo evitando el alcohol, e incluso entonces le tenía aversión. Decidí darme algo de comer con mi sueldo, así que fui al mercado.
Conocí a un tipo, apodado "Indicador", de nuestro patio trasero. Nos saludamos y me dice:
- Toma una herramienta de mí. Te lo daré por 100. Y dentro de dos semanas, cuando por fin llegue la primavera, los hombres saldrán de los garajes,
les darás la herramienta para 130. Lo tendrás para la cerveza.
Me ha gustado el razonamiento del indicador. Le quité una herramienta por 100.
La semana siguiente, fui al mercado de nuevo para comprobar mi beneficio.
Donde la última vez fue el Indicador, ahora había un hombre llamado el Mediador. Dice:
- "Golpeamos al Indicador. Ha bajado el precio. Toma otra herramienta, te la daré por 80.
Tienes 180 por los dos, es decir, 90 por cada uno. Te devolveremos un billete de diez.
Si mueves el take profit de 130 a 120, también venderás más rápido. Con eso te compras dos cervezas.
También me ha gustado el razonamiento del Oddsmaker. Le quité la segunda herramienta por 80.
La semana que viene, corro al mercado para averiguar el beneficio. Orediator dice:
- Toma dos herramientas más, te las daré por 70. Resulta que diste 320 por cuatro, es decir, 80 por cada uno.
Si mueves el take-profit de 120 a 110, también venderás más rápido. Tendrás suficiente para cuatro cervezas.
Pensé - resulta que, como si me dan veinte de vuelta, y el beneficio será más rápido. Coge las herramientas.
Justo cuando me los meto en los bolsillos, Mihalych se acerca y le dice al mediador:
- Aquí hay cinco más, ¿quieres tomar 50 cada uno?
El mediador coge las herramientas, Mikhalych se mete el dinero en el bolsillo y se va. Lo alcanzo y le digo:
- Espera, Mikhalych. Algunas personas aquí están promediando, con el fin de obtener mayores beneficios más tarde. ¿Y qué estás haciendo?
Y le conté todo tal cual. Me miró con rabia, incluso me escupió con rabia, y me dijo:
- ¿Así que eras tú quien compraba las herramientas, subiendo el precio? Sólo que tú compraste 4 mil, y yo traje 15. ¡¡¡Ese es el precio que baja!!!
¿De dónde lo sacaste? Lo tomé prestado de mis vecinos del garaje. No es probable que los compren, sino que esperan que se los devuelva.
Resulta que hay un exceso de herramientas en el bazar, así que el precio baja. Cuando llegue a 20 o al menos a 30,
Los compraré de nuevo y se los devolveré a mis amigos. Y la diferencia es mía. Por supuesto, el precio subirá a 60.
Pero no creo que vuelva a ser de 100.
¿Qué pasó después? Llegó la nueva tecnología, así que me quedé con las herramientas como recuerdo. Estoy harto de los promedios de por vida.
 
Taras Slobodyanik:...y cuanto más se profundice en MT5, más se despejarán) empezar con MT4

Para operar, MT5 con una cuenta de red es mejor. Para dominar la programación, MQL4 es mejor. Luego, en una semana, se cambia a MQL5. Así que ponga ambos

 

Quiero establecer una orden pendiente para que después del tiempo igual al periodo TF la orden se cancele (en la siguiente vela). Lo estoy haciendo:

ulong time = TimeCurrent () + GetSecCountFromTF (PERIOD_CURRENT);
G_LastTicket = SendOrder (Symbol (),
                          lot,
                          type,
                          ORDER_TIME_SPECIFIED, // ORDER_TIME_GTC,
                          (datetime)time,
                          NormalizeDouble (priceOpen, Digits ()),
                          NormalizeDouble (priceSL,   Digits ()),
                          NormalizeDouble (priceTP,   Digits ()),
                          Magic_P,
                          comment,
                          FillReturn_P);

//——————————————————————————————————————————————————————————————————————————————
// Установить отложенный ордер, усех: номер тикета, неудача: -1,
// функция НЕ делает нормализацию значений цены и уровней стопов
ulong SendOrder (string                  symbol,     //символ
                 double                  volume,     //объем
                 ENUM_ORDER_TYPE         type,       //тип ордера, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT
                 ENUM_ORDER_TYPE_TIME    typeTime,   //ORDER_TIME_GTC           - Ордер будет находится в очереди до тех пор, пока не будет снят
                                                     //ORDER_TIME_DAY           - Ордер будет действовать только в течение текущего торгового дня
                                                     //ORDER_TIME_SPECIFIED     - Ордер будет действовать до даты истечения
                                                     //ORDER_TIME_SPECIFIED_DAY - Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.
                 datetime                expTime,    // дата истечения
                 double                  priceOpen,  // уровень цены установки ордера
                 double                  priceSL      = 0.0,  // уровень цены SL
                 double                  priceTP      = 0.0,  // уровень цены TP
                 long                    magic_number = 0,    // уникальный идентификатор
                 string                  comment      = "",   // комментарий
                 ENUM_ORDER_TYPE_FILLING filling = ORDER_FILLING_RETURN) //ORDER_FILLING_FOK - всё или ничего
                                                                         //ORDER_FILLING_IOC - разрешен неполный объем
                                                                         //ORDER_FILLING_RETURN - частичное до полного заполнения
{
  //--- готовим запрос
  MqlTradeRequest request = { 0 }; //торговый запрос
  MqlTradeResult  result  = { 0 }; //результат торгового запроса

  request.symbol       = symbol;               // инструмент
  request.volume       = volume;               // объем
  request.action       = TRADE_ACTION_PENDING; // установка отложенного ордера
  request.type         = type;                 // тип ордера
  request.type_time    = typeTime;             // тип времени истечения ордера
  request.expiration   = expTime;
  request.price        = priceOpen;            // цена для открытия
  request.sl           = priceSL;              // уровень Stop Loss
  request.tp           = priceTP;              // уровень Take Profit
  request.magic        = magic_number;         // уникальный идентификатор
  request.comment      = comment;              // комментарий
  request.type_filling = filling;              // тип заливки ордера

  //--- отправим торговый приказ
  bool success = OrderSend (request, result);
  if(success)
  {
    return ((int)result.order);
  }

  //--- выведем в лог ответ сервера
  Print ("Failed send pending order, comment from server: " + result.comment + ", Retcode: " + (string)result.retcode);

  return (-1);
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
// Возвращает количество секунд в указанном ТФ
int GetSecCountFromTF (ENUM_TIMEFRAMES period)
{
  switch(period)
  {
  case PERIOD_M1:
    return (60);
  case PERIOD_M2:
    return (120);
  case PERIOD_M3:
    return (180);
  case PERIOD_M4:
    return (240);
  case PERIOD_M5:
    return (300);
  case PERIOD_M6:
    return (360);
  case PERIOD_M10:
    return (600);
  case PERIOD_M12:
    return (720);
  case PERIOD_M15:
    return (900);
  case PERIOD_M20:
    return (1200);
  case PERIOD_M30:
    return (1800);
  case PERIOD_H1:
    return (3600);
  case PERIOD_H2:
    return (7200);
  case PERIOD_H3:
    return (10800);
  case PERIOD_H4:
    return (14400);
  case PERIOD_H6:
    return (21600);
  case PERIOD_H8:
    return (28800);
  case PERIOD_H12:
    return (43200);
  case PERIOD_D1:
    return (86400);
  case PERIOD_W1:
    return (604800);
  case PERIOD_MN1:
    return (2592000);
  default:
    return (60);
  }
}
//——————————————————————————————————————————————————————————————————————————————

Pero el servidor devuelve un error:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Fallo en el envío de la orden pendiente, comentario del servidor: Expiración no válida, Retcode: 10022

¿Qué estoy haciendo mal? Estoy comprobando en el probador.

 
Andrey Dik:

Quiero establecer una orden pendiente para que después del tiempo igual al periodo TF la orden se cancele (en la siguiente vela). Lo estoy haciendo:

Pero el servidor devuelve un error:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Fallo en el envío de la orden pendiente, comentario del servidor: Expiración no válida, Retcode: 10022

¿Qué estoy haciendo mal? Estoy comprobando en el probador.

Cuando estaba haciendo la cancelación de pedidos para el quinto tipo, me dio el mismo error. Tal vez, el tiempo de caducidad no se utiliza. Sólo retiro mi propia orden después del tiempo de expiración - si el tiempo actual es mayor o igual al tiempo de colocación de la orden más PeriodSeconds(NEED_PERIOD_WEEK)*número de velas.
 
Andrey Dik:

Quiero establecer una orden pendiente para que después del tiempo igual al periodo TF la orden se cancele (en la siguiente vela). Lo estoy haciendo:

Pero el servidor devuelve un error:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Fallo en el envío de la orden pendiente, comentario del servidor: Expiración no válida, Retcode: 10022

¿Qué estoy haciendo mal? Estoy comprobando en el probador.

La fecha de caducidad más cercana +10 minutos estaba en mql4. No sé cómo es ahora, debería comprobarlo en mql5.
 
Artyom Trishkin:
También me he encontrado con un error de este tipo cuando he tramitado la cancelación de un quinto pedido. Tal vez, el tiempo de expiración de la orden no se utiliza. Acabo de eliminar la orden por mí mismo después del tiempo de expiración - si el tiempo actual es más o igual al tiempo de colocación de la orden más PeriodSeconds(NEED_PERIOD_WEEK)*número de velas.

Gracias por PeriodSeconds (), me había olvidado de esta función.

Alexey Viktorov:
En mql4 la fecha de caducidad más cercana era de +10 minutos. No sé cómo está ahora, debería comprobarlo con mql5.

No quiero cambiarlo con mql5 también.


Ya veo. Tendré que comprobar la fecha del pedido y borrarlo yo mismo, la verdad es que no quiero hacerlo.

 
Por favor, aconséjeme. ¡Cómo escribir el código con esta condición, si antes del cierre de la vela 0 dejó 1 segundo entonces abrir una orden en una dirección o la otra! Agradecería sinceramente la ayuda.