Perguntas de um "boneco" - página 137

 
alph:

Poderia dar-me algum código para um EA fechar uma posição após 5-6 horas? Ou dê-me um link.

Se estiver interessado, experimente-o você mesmo. Primeiro, usando a função PositionSelect(), verifique a posição aberta. Se for bem sucedida, descubra o tempo de abertura de uma posição usando PositionGetInteger(POSITION_TIME) e verifique o seu estado de 5-6 horas. Quando é altura de fechar a posição, descobre-se o tipo de posição (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) e o seu volume PositionGetDouble(POSITION_VOLUME) . Depois estabelece-se uma ordem oposta com o mesmo volume. Pode ver um exemplo do método de fecho de posição em MQL5\Incluído em MQL5\PositionClose (const string symbol,ulong deviation=ULONG_MAX).

 
joo:
Obrigado, parece ser isso que precisamos.

Nem por isso.

Para obter o evento "clique do rato", OnChartEvent() deve ser usado, mas não pode ser usado em scripts, o que devo fazer? Então não existe uma função universal?

 
joo:

Nem por isso.

Para obter o evento "clique do rato", OnChartEvent() deve ser usado, mas não pode ser usado em scripts, o que devo fazer? Então não há uma função universal?

Depois utilizar GetKeyState + GetPosition + coordenadas conhecidas de objectos gráficos.
 
sergeev:
Depois utilizar GetKeyState + GetPosition + coordenadas conhecidas de objectos gráficos.

VinApi?

É isso, perdi o meu desejo de fazer uma função universal para navegar e seleccionar um ficheiro a partir de uma lista (algum tipo de gestor de mini-arquivos). :(

 
joo:

WINAPI?

É isso, perdi o desejo de fazer uma função universal para navegar e seleccionar um ficheiro a partir de uma lista (algum tipo de gestor de mini-arquivos). :(

porquê um guião? como quer fazer uma função e esperar pela escolha do utilizador por mais do que um carrapato?
 
sergeev:
porquê então o guião?
Porque não importa se as carraças estão ou não a fazer tic-tac.
 
Yedelkin:

Ver um exemplo de método para fechar uma posição em MQL5\Incluir{Comércio}Comércio.mqh\PosiçãoFechar(const string symbol,ulong deviation=ULONG_MAX).

Obrigado.

Mas ainda não sou capaz de compreender as aulas, embora o que tenho normalmente se deva ao facto de ter visto algures e de o ter descoberto.

 
joo:
porque não se importa se as carraças estão a fazer tic-tac ou não.
O perito também não se importa. porquê o guião?
 
alph:

Mas com as aulas, ainda não estou a apanhar-lhe o jeito, embora o que eu ganho normalmente seja à custa de o ver algures e de o descobrir.

Bem, qualquer método de classe é apenas um simples código. Tente analisar este código aqui:

   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:
para que o perito não se importe. porquê um guião?
Se não for um guião, toda a lógica deve ser executada/calocada para/de OnChartEvent()?
Razão: