Вопросы от "чайника" - страница 137

 
alph:

Не могли бы подсказать код для советника, чтобы закрывал позицию через 5-6 часов. Или ссылочку подкинуть.

Если интересно, попробуйте сами. Сначала с помощью функции PositionSelect() проверяете наличие открытой позиции. В случае успеха узнаёте время открытия позиции с помощью PositionGetInteger(POSITION_TIME) и проверяете своё условие про 5-6 часов. Если подошло время закрывать позицию, узнаёте тип позиции (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE) и её объём PositionGetDouble(POSITION_VOLUME). Затем выставляете противоположно направленный ордер с тем же объёмом. Пример метода закрытия позиции можете посмотреть по адресу MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

 
joo:
Спасибо, похоже, то что нужно.

Не совсем.

Что бы получить событие "клик мышью", нужно использовать OnChartEvent(), но его нельзя использовать в скриптах, как быть? Значит, универсальной функции не получится?

 
joo:

Не совсем.

Что бы получить событие "клик мышью", нужно использовать OnChartEvent(), но его нельзя использовать в скриптах, как быть? Значит, универсальной функции не получится?

тогда используй GetKeyState + GetPosition + известные координаты графич.объектов.
 
sergeev:
тогда используй GetKeyState + GetPosition + известные координаты графич.объектов.

винАпи?

всё, у меня пропало желание делать универсальную функцию просмотра и выбора файла из списка (некий мини-файлменеджер). :(

 
joo:

винАпи?

всё, у меня пропало желание делать универсальную функцию просмотра и выбора файла из списка (некий мини-файлменеджер). :(

ну а почему тогда скрипт? как ты собирался делать функцию при этом ожидая выбор пользователя не один тик.
 
sergeev:
ну а почему тогда скрипт?
потому что ему пофиг тики - тикают тики или не тикают.
 
Yedelkin:

 Пример метода закрытия позиции можете посмотреть по адресу MQL5\Include\Trade\Trade.mqh\PositionClose(const string symbol,ulong deviation=ULONG_MAX).

Спасибо.

Но с классами у меня пока не получается взаимопонимание, хотя то что у меня получается, как правило за счёт того, что где-то увидел и разобрался.

 
joo:
потому что ему пофиг тики - тикают тики или не тикают.
так и эксперту пофиг.  почему именно скрипт?
 
alph:

Но с классами у меня пока не получается взаимопонимание, хотя то что у меня получается, как правило за счёт того, что где-то увидел и разобрался.

Ну, любой метод класса - это обычный код. Попробуйте разобрать вот этот код:

   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:
так и эксперту пофиг.  почему именно скрипт?
Если не скрипт, то всю логику выполнять/вызывать в/из OnChartEvent()?
Причина обращения: