FORTS SL y TP

 

¡Hola!

Nunca ha utilizado SL y TP

Por favor, aclárese.

El Stop Loss y el Take Profit se fijan en una posición existente

¿O podemos establecer estos parámetros en una orden en curso, es decir, cuando la posición aún no está abierta?

Si podemos especificar los parámetros en una orden, ¿cómo debemos calcular el SL y el TP en una orden de mercado(el precio de la posición no es fijo)?

 
prostotrader:

¡Hola!

Nunca ha utilizado ST y TP

Por favor, aclárese.

El Stop Loss y el Take Profit se fijan en una posición existente

¿O podemos establecer estos parámetros en una orden en curso, es decir, cuando la posición aún no está abierta?

Si podemos especificar los parámetros en una orden, ¿cómo debemos calcular el SL y el TP en una orden de mercado(el precio de la posición no es fijo)?


Puede especificar cualquier parámetro, los niveles se almacenan en el servidor. El mismo servidor puede negarse a ejecutar sus paradas.
 
Sergey Chalyshev:

Puedes configurar como quieras, los niveles se almacenan en el servidor. El mismo servidor puede negarse a ejecutar sus paradas.


Por eso no quiero recibir las negativas del servidor.

Es decir, ¿es mejor fijar una posición existente (para estar seguros)?

 
prostotrader:


Por eso no quiero que me rechacen los servidores.

Es decir, ¿es mejor instalar en una posición existente (para estar seguros)?


Los topes no deben ponerse en absoluto, poned limitadores.
 
prostotrader:


Por eso no quiero que me rechacen los servidores.

Es decir, ¿es mejor instalar en una posición existente (para estar seguros)?

Soy analfabeto en la ejecución de acciones, pero sin embargo. Si se produce un deslizamiento, los niveles serán exactamente iguales al tamaño que hayas establecido. No lo he comprobado personalmente, pero he leído que sin SL y TP, la orden se ejecuta más rápido. Si realmente es así, entonces sería mejor esperar a que se abra la posición, y luego trabajar con ella.
 
Sergey Chalyshev:

Los topes es mejor no ponerlos, poner límites.


Por eso nunca los he utilizado.

Pero, ahora estoy escribiendo una clase CFORTSOrder y debe tener una función para establecer SL y TP

Añadido

POSICIÓN_SL


POSICIÓN_TP

¿Son estos los niveles mínimos?

 
Vitaly Muzichenko:
Soy analfabeto en la ejecución de acciones, pero aún así. Si se produce un deslizamiento, los niveles serán exactamente los mismos que el tamaño que hayas establecido. No lo he comprobado personalmente, pero he leído que sin SL y TP, la orden se ejecuta más rápido. Si realmente es así, entonces sería mejor esperar a la apertura de la posición, y luego trabajar con ella.

Gracias
 
prostotrader:

Gracias
Si no te importa, puedes comprobar personalmente la velocidad de ejecución con y sin órdenes preestablecidas, y así comprobar o desmentir que"sin SL y TP la orden se ejecuta más rápido". Creo que será útil para algunas personas.
 
Vitaly Muzichenko:
Soy analfabeto en la ejecución de los intercambios, pero sin embargo. La orden en su conjunto es mejor colocarla en una posición existente, si hay deslizamiento, los niveles serán exactamente del tamaño que usted estableció. No lo he comprobado personalmente, pero he leído que sin SL y TP, la orden se ejecuta más rápido. Si realmente es así, entonces sería mejor esperar a que se abra la posición, y luego trabajar con ella.


Las órdenes de stop en sí mismas se activan muy rápidamente porque se almacenan en el servidor, y el propio servidor envía las órdenes según las condiciones. Esto ahorra ping al servidor, en comparación con si se cerrara en el mercado.

Pero los limitadores son más fiables y la velocidad es incomparable (latencia = 0).

No he medido la velocidad físicamente, pero puedo verlo a ojo - el precio no ha llegado al stop y el trato ha sido ejecutado y mostrado en el historial, y entonces el gráfico empieza a mostrar el precio y el trato.

 
prostotrader:


Por eso nunca lo he utilizado.

Pero, ahora estoy escribiendo una clase CFORTSOrder y debe tener una función para establecer SL y TP

Añadido

POSICIÓN_SL


POSICIÓN_TP

¿Son estos los niveles mínimos?



¿Por qué no escribir una función sin muletas que se almacenan en el servidor?

Escriba directamente con los límites. O al menos TR con límites, y SL a medida que lo consigas.

 
Sergey Chalyshev:


¿Por qué no escribir la función sin muletas que se almacenan en el servidor?

Escriba de una vez con límites. O al menos TR con límites, y SL como puedas.


Y porque probablemente publicaré el código de la clase.

Yo no lo necesito, pero los principiantes pueden necesitarlo.

void CFORTSOrder::SetSlTp(const string a_symbol, const double a_sl=0, const double a_tp=0)
{
  if(PositionSelect(a_symbol))
  {
    ulong pos_ticket = ulong(PositionGetInteger(POSITION_TICKET));
    ENUM_POSITION_TYPE pos_type = ENUM_POSITION_TYPE(PositionGetInteger(POSITION_TYPE));
    double sl_level = PositionGetDouble(POSITION_SL);
    double tp_level = PositionGetDouble(POSITION_TP);
    MqlTradeRequest request = {0};
    MqlTradeResult  result  = {0};
    mem_magic = magic_storage + 1;
    if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
    request.symbol = a_symbol;
    request.action = TRADE_ACTION_SLTP;
    request.comment = "Установка SL/TP";
    request.magic = mem_magic;
    request.position = pos_ticket;
    switch(pos_type)
    {
      case POSITION_TYPE_BUY:
        if (a_sl == 0)
        {
          request.sl = sl_level;
        }
        else
        if(a_sl <= sl_level)
        {
          request.sl = a_sl;
        }
        else request.sl = sl_level;
        if (a_tp == 0)
        {
          request.tp = tp_level;
        }
        else
        if(a_tp >= tp_level)
        {
          request.tp = a_tp;
        }
        else request.tp = tp_level;
      break;
      case POSITION_TYPE_SELL:
        if (a_sl == 0)
        {
          request.sl = sl_level;
        }
        else
        if(a_sl >= sl_level)
        {
          request.sl = a_sl;
        }
        else request.sl = sl_level;
        if (a_tp == 0)
        {
          request.tp = tp_level;
        }
        else
        if(a_tp <= tp_level)
        {
          request.tp = a_tp;
        }
        else request.tp = tp_level;
      break;
    }
    if(OrderSend(request, result))
    {
      if(result.retcode == TRADE_RETCODE_DONE)
      {
        magic_storage = mem_magic;
        Print(__FUNCTION__, ": SL и/или TP установлен.");
      }
    }
    else Print(__FUNCTION__, ": SL и/или TP не установлен.");
  }
}