初学者的问题 MQL5 MT5 MetaTrader 5 - 页 878

 
Artyom Trishkin:
现在用文字描述你所描述的图形。使用高、低、开、关。
只要你用语言描述它,你就已经写好了你的ToR :)
剩下的就是用代码取代口头结构。
好吧,我现在就去做)
 

蜡烛大小=高点[i]-低点[i]

上影线 = high[i] - open[i]

蜡烛体 = open[i] - close[i]

下影线 = close[i] - low[i]

烛台主体与其尺寸的比率 - (high[i] - low[i]) / (open[i] - close[i])

空头影子的大小不能超过某个阈值--( close[i]-low[i])<= close[i]。

蜡烛方向 - 高点[i]>开盘[i]>收盘[i]>低点[i]

 
Artyom Trishkin:

我在用鼠标打赌。

  • 点击上面的价格+Ctrl - 卖出限制
  • 点击下面的价格+Ctrl -购买限制
  • 点击上面的价格+Ctrl+Shift - 买入停止
  • 点击价格下方+Ctrl+Shift - 卖出止损
我们也可以把买入止损点和卖出止损点用shifft来表示。

你在MT5的测试器中是这样下单的,在视觉模式下?事件 是如何处理 的?OnChartEvent()不起作用,对吗?

 
Vladimir Karputov:

测试仪工作正常。错误在于程序的逻辑:两个符号就像两个不同人的生活(这里的 "人 "类似于 "符号")。而第二个人不一定要和第一个人同时醒来("醒来 "类似于"新出现的酒吧")。

所以你必须等待一个新的条形图出现,并且在第一个符号上和第二个符号上。


新增: 文章"新酒吧 "事件处理程序

谢谢你的及时答复。我将考虑如何在多币种模式下实现这一切。
 

这样的问题--条件的排列顺序对寻找烛台组合是否重要?

例子。

    if(((high[i-1]-low[i-1]) < (high[i]-low[i])) && (open[i-1] >= Lower1[i]) && ((close[i-1]-open[i-1]) >= 3*(close[i]-open[i])) &&
      (close[i-1 <= Base[i]]) && (high[i-1] <= 0.5*(high[i]-close[i])) && (close[i-1] <= open[i]) && ((close[i]-open[i])<= 0.33*(high[i]-close[i])) &&
      ((close[i]-open[i]) >= (open[i]-low[i])) && (close[i] <= Base[i])) // когда пин-бар ниже, либо равен линии Base
 

你好。扣除账户,我想计算有多少相同方向的限价单成为头寸。

该函数不能正确计算,为什么?

int CurrentPos_sell_nettin()
  {
  string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена
   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         //--- Получим количество сделок в полученном списке
         total=HistoryDealsTotal();
         //--- Пройдем по всем сделкам в полученном списке
         for(int i=0; i<total; i++)
           {
            ulong dt = HistoryDealGetTicket(i);
            long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
            ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
            if(did==pt && in_out==DEAL_ENTRY_IN)
              {
               if(m_position.PositionType()==POSITION_TYPE_SELL)
                 {
                  count++;
                 }
              }
           }
        }
     }
//---
   return(count);
  }
 
lil_lil:

你好。扣除账户,我想计算有多少相同方向的限价单成为头寸。

该函数不能正确计数,为什么?

HistorySelectByPosition 开始。那么你将只得到该位置所涉及的交易。

 
clickaider:

这样的问题--条件的排列顺序对寻找烛台组合是否重要?

例子。

看一下这个例子--有三十种不同的模式。

 
Artyom Trishkin:

Artyom,我将重复这个问题,请回答。

关于交易、自动交易系统和交易策略测试的论坛

初学者的问题 MQL5 MT5 MetaTrader 5

Alexey Kozitsyn, 2018.06.03 15:39

你在MT5测试器中是这样下单的吗,在视觉模式下?那么你是如何处理事件 的呢?OnChartEvent()不起作用,对吗?


 
Alexey Viktorov:

HistorySelectByPosition 开始。那么你将只得到该位置所涉及的交易。

谢谢你。

现在怎么了?

int CurrentPos_sell_nettin()
  {
   string symb=_Symbol;
   int    total       =0;  // Всего сделок в списке выбранной истории
   int    count       =0;  // Счетчик сделок по символу позиции
//--- Если история позиции получена

   for(int i=0; i<PositionsTotal(); i++)
     {
      ulong pt=PositionGetTicket(i);
      long ID=PositionGetInteger(POSITION_IDENTIFIER);
      if(PositionGetString(POSITION_SYMBOL)==symb && HistorySelect(PositionGetInteger(POSITION_TIME),TimeCurrent()+60))
        {
         if(PositionSelect(symb))
           {
            long pos_id=long(PositionGetInteger(POSITION_IDENTIFIER));

            if(pos_id>0)
              {
               if(HistorySelectByPosition(ulong(pos_id)))
                  total=HistoryDealsTotal();
               //--- Пройдем по всем сделкам в полученном списке
               for(int i=0; i<total; i++)
                 {
                  ulong dt = HistoryDealGetTicket(i);
                  long did = HistoryDealGetInteger(dt, DEAL_POSITION_ID);
                  ENUM_DEAL_ENTRY in_out=HistoryDealGetInteger(dt,DEAL_ENTRY);
                  if(did==pt && in_out==DEAL_ENTRY_IN)
                    {
                     if(m_position.PositionType()==POSITION_TYPE_SELL)
                       {
                        count++;
                       }
                    }
                 }
              }
           }
        }
     }
//---
   return(count);
  }