Preguntas de un "tonto" - página 137

 
alph:

¿Podría darme algún código para un EA que cierre una posición después de 5-6 horas? O dame un enlace.

Si te interesa, pruébalo tú mismo. Primero, utilizando la función PositionSelect(), compruebe si hay una posición abierta. Si tiene éxito, averigüe la hora de apertura de una posición utilizando PositionGetInteger(POSITION_TIME) y compruebe su condición de 5-6 horas. A la hora de cerrar la posición, se averigua el tipo de posición (ENUM_POSITION_TYPE) PositionGetInteger(POSITION_TYPE) y su volumen PositionGetDouble(POSITION_VOLUME) . Luego se establece una orden opuesta con el mismo volumen. Puede ver un ejemplo del método de cierre de posiciones en MQL5Include\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

 
joo:
Gracias, parece que es lo que necesitamos.

La verdad es que no.

Para obtener el evento "clic del ratón", hay que utilizar OnChartEvent(), pero no se puede utilizar en los scripts, ¿qué debo hacer? Entonces, ¿no existe una función universal?

 
joo:

La verdad es que no.

Para obtener el evento "clic del ratón", hay que utilizar OnChartEvent(), pero no se puede utilizar en los scripts, ¿qué debo hacer? Entonces, ¿no existe una función universal?

A continuación, utilice GetKeyState + GetPosition + coordenadas conocidas de los objetos gráficos.
 
sergeev:
A continuación, utilice GetKeyState + GetPosition + coordenadas conocidas de los objetos gráficos.

¿VinApi?

Ya está, se me han quitado las ganas de hacer una función universal para navegar y seleccionar un archivo de una lista (una especie de minigestor de archivos). :(

 
joo:

¿WINAPI?

Eso es todo, se me han quitado las ganas de hacer una función universal para navegar y seleccionar un archivo de una lista (una especie de minigestor de archivos). :(

¿por qué un script? ¿cómo quieres hacer una función y esperar la elección del usuario durante más de un tick?
 
sergeev:
¿por qué el guión entonces?
Porque no le importa si las garrapatas hacen tictac o no.
 
Yedelkin:

Puede ver un ejemplo de método para cerrar una posición en MQL5Include\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

Gracias.

Pero hasta ahora no soy capaz de entender las clases, aunque lo que tengo suele deberse a que he visto en algún sitio y me lo he imaginado.

 
joo:
porque no le importa si las garrapatas hacen tictac o no.
¿el experto no se preocupa, por qué el guión?
 
alph:

Pero con las clases, aún no le he cogido el tranquillo, aunque lo que consigo suele ser a expensas de verlo en algún sitio y resolverlo.

Bueno, cualquier método de la clase es simplemente código. Intenta analizar este código aquí:

   MqlTradeRequest   m_request={0};         // request data
   MqlTradeResult    m_result={0};          // result data
   MqlTradeCheckResult m_check_result={0};  // result check data
   bool   partial_close=false;
   int    retry_count  =10;
   uint   retcode      =TRADE_RETCODE_REJECT;
  
     do
     {
      //--- checking
      if(PositionSelect(symbol))
        {
         if((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            //--- prepare request for close BUY position
            m_request.type =ORDER_TYPE_SELL;
            m_request.price=SymbolInfoDouble(symbol,SYMBOL_BID);
           }
         else
           {
            //--- prepare request for close SELL position
            m_request.type =ORDER_TYPE_BUY;
            m_request.price=SymbolInfoDouble(symbol,SYMBOL_ASK);
           }
        }
      else
        {
         //--- position not found
         m_result.retcode=retcode;
         return(false);
        }
      //--- setting request
      m_request.action      =TRADE_ACTION_DEAL;
      m_request.symbol      =symbol;
      m_request.deviation   =(deviation==ULONG_MAX) ? m_deviation : deviation;
      m_request.type_filling=m_type_filling;
      m_request.volume      =PositionGetDouble(POSITION_VOLUME);
      //--- check volume
      double max_volume=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
      if(m_request.volume>max_volume)
        {
         m_request.volume=max_volume;
         partial_close=true;
        }
      else
         partial_close=false;
      //--- order check
      if(!OrderCheck(m_request,m_check_result))
        {
         //--- copy return code
         m_result.retcode=m_check_result.retcode;
         return(false);
        }
      //--- order send
      if(!OrderSend(m_request,m_result))
        {
         if(--retry_count!=0) continue;
         if(retcode==TRADE_RETCODE_DONE_PARTIAL)
            m_result.retcode=retcode;
         return(false);
        }
      retcode=TRADE_RETCODE_DONE_PARTIAL;
      if(partial_close) Sleep(1000);
     }
   while(partial_close);
 
sergeev:
así que al experto no le importa. ¿por qué un guión?
Si no es un script, ¿toda la lógica debe ser realizada/llamada a/desde OnChartEvent()?