来自一个 "傻瓜 "的问题 - 页 137

 
alph:

你能给我一些EA的代码,让我在5-6小时后平仓 吗?或者给我一个链接。

如果你有兴趣,可以自己试试。首先,使用PositionSelect() 函数,检查开仓情况。 如果成功,使用PositionGetInteger(POSITION_TIME)找出开仓时间,检查你的条件是5-6小时 当到了平仓的时候,你会发现位置的类型(ENUM_POSITION_TYPEPositionGetInteger(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 + 图形对象的已知坐标。

VinApi?

就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种小型文件管理器)。:(

 
joo:

WINAPI?

就是这样,我已经失去了做一个浏览和从列表中选择文件的通用功能的愿望(某种迷你文件管理器)。:(

你怎么会想做一个函数并等待用户的选择超过一个刻度?
 
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()中执行/调用?