Domande da un "manichino" - pagina 137

 
alph:

Potresti darmi del codice per un EA che chiuda una posizione dopo 5-6 ore? O dammi un link.

Se siete interessati, provate voi stessi. Per prima cosa, usando la funzione PositionSelect(), controllate la presenza di una posizione aperta. Se ha successo, scoprite il tempo di apertura di una posizione usando PositionGetInteger(POSITION_TIME) e controllate la vostra condizione di 5-6 ore. Quando è il momento di chiudere la posizione, si scopre il tipo di posizione (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) e il suo volume PositionGetDouble(POSITION_VOLUME) . Poi si imposta un ordine opposto con lo stesso volume. Potete vedere un esempio del metodo di chiusura della posizione in MQL5\Include\Trade\Trade .mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

 
joo:
Grazie, sembra essere quello di cui abbiamo bisogno.

Non proprio.

Per ottenere l'evento "clic del mouse", OnChartEvent() deve essere usato, ma non può essere usato negli script, cosa devo fare? Quindi non esiste una funzione universale?

 
joo:

Non proprio.

Per ottenere l'evento "clic del mouse", OnChartEvent() deve essere usato, ma non può essere usato negli script, cosa devo fare? Quindi non c'è una funzione universale?

Poi usa GetKeyState + GetPosition + coordinate note degli oggetti grafici.
 
sergeev:
Poi usa GetKeyState + GetPosition + coordinate note degli oggetti grafici.

VinApi?

Questo è tutto, ho perso il desiderio di fare una funzione universale per navigare e selezionare un file da una lista (una specie di mini-file manager). :(

 
joo:

WINAPI?

Questo è tutto, ho perso la voglia di fare una funzione universale per sfogliare e selezionare un file da una lista (una specie di mini-file manager). :(

perché uno script? come vuoi fare una funzione e aspettare la scelta dell'utente per più di un tick?
 
sergeev:
perché lo script allora?
Perché non gli importa se le zecche ticchettano o no.
 
Yedelkin:

Potete vedere un esempio di metodo per chiudere una posizione in MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

Grazie.

Ma finora non sono in grado di capire le classi, anche se quello che ho di solito è dovuto al fatto che ho visto da qualche parte e l'ho capito.

 
joo:
perché non gli importa se le zecche ticchettano o no.
così l'esperto non si preoccupa. perché il copione?
 
alph:

Ma con i corsi, non ci sto ancora prendendo la mano, anche se quello che ottengo è di solito a costo di vederlo da qualche parte e capirlo.

Beh, qualsiasi metodo di classe è solo codice semplice. Prova ad analizzare questo codice qui:

   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:
Quindi all'esperto non interessa. perché uno script?
Se non è uno script, tutta la logica dovrebbe essere eseguita/chiamata a/da OnChartEvent()?