[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 361

 
vilard:
如何使不同时间段的指标在测试器中得到考虑,这是否可能?
在策略测试器中考虑一个指标是什么意思?(1)也许另一个时间框架的指标应该在可视化过程中显示,或者(2)在EA代码中,在指标函数中你应该计算另一个时间框架的值?
 
vilard:
如何使不同时间段的指标在测试器中得到考虑,这是否可能?

可能:https://docs.mql4.com/ru/indicators/icustom

https://docs.mql4.com/ru/constants/timeframes

 

该EA被设计为在指数为1和2的条形上产生信号(即在新条形开端时的开仓和平仓指令)。

在测试器中,它对OrderClose交替产生了138 和4051的错误(似乎在对票据发誓)。

请帮助我解决这个问题。

   if(Mas_Ord_New[0][0]!=0)
    {
     if(Signal==2)
      {
        for(i=0; i<=Mas_Ord_New[0][0]; i++)
         {
           ticket=Mas_Ord_New[i][4];
           lts=Mas_Ord_New[i][5];
           Ans=OrderClose(ticket,lts,Bid,5);
           if(Ans==false) 
           Alert("Закрыть BUY ",ticket, " не удалось. Ошибка: ", GetLastError());
         }
      }
     if(Signal==3)
      {
        for(i=0; i<=Mas_Ord_New[0][0]; i++)
         {
           ticket=Mas_Ord_New[i][4];
           lts=Mas_Ord_New[i][5];            
           Ans=OrderClose(ticket,lts,Ask,5);
           if(Ans==false) 
            Alert("Закрыть SELL ",ticket, " не удалось. Ошибка: ", GetLastError());
         }       
      }
    }

 // Функция из учебника

int Terminal()
 {
   int Qnt=0;
   
   ArrayCopy(Mas_Ord_Old, Mas_Ord_New); // Сохранение информации
   Qnt=0; // Обнуление счетчика
   ArrayInitialize(Mas_Ord_New,0);  // Обнуление массива
   ArrayInitialize(Mas_Tip,0);  // Обнуление массива
   
   for (int n=0; n<=OrdersTotal(); n++)
    {
      if ((OrderSelect(n,SELECT_BY_POS)==true) &&
          (OrderSymbol()==Symbol()) && (OrderMagicNumber()==Magic))
       {
         Qnt++;
         Mas_Ord_New[Qnt][1]=OrderOpenPrice();
         Mas_Ord_New[Qnt][2]=OrderStopLoss();
         Mas_Ord_New[Qnt][3]=OrderTakeProfit();
         Mas_Ord_New[Qnt][4]=OrderTicket();
         Mas_Ord_New[Qnt][5]=OrderLots();
         Mas_Tip[OrderType()]++;
         Mas_Ord_New[Qnt][6]=OrderType();
         Mas_Ord_New[Qnt][7]=OrderMagicNumber();
         if (OrderComment()=="")
            Mas_Ord_New[Qnt][8]=0;
         else
            Mas_Ord_New[Qnt][8]=1;
       }
    }
   Mas_Ord_New[0][0]=Qnt;
   return;
 }
 
silhouette:

该EA被设计为在指数为1和2的条形上产生信号(即当一个新条形打开时的开仓和平仓指令)。

在测试器中,它对OrderClose交替产生了138和4051的错误(似乎在对票据发誓)。

请帮助我们解决这个问题。

试试下面的结构来关闭这个位置

int err;
// ---
if (...) // условие закрытия позиции
{  if (OrdersTotal()>0)
   {  for (int i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  // фильтрация позиции по текущему символу:
            if (OrderSymbol()!=Symbol()) continue;
            // фильтрация позиции по магик-номеру:
            if (OrderMagicNumber()!=MagNum) continue;
            // ... можно и другие фильтры поставить.
            // --- закрытие позиции Buy.
            if (OrderType()==OP_BUY)
            // перед открытием или закрытием позиции
            // обновляйте котировки с помощью RefreshRates()
            // дабы избежать устаревание запрошенной цены,
            // возможной причины ошибки 138
            {  RefreshRates(); 
               OrderClose(OrderTicket(),OrderLots(),Bid,30);
               err=GetLastError();
               if (err>0)  Alert("Ошибка при закрытии позиции Buy (",err,").");
               if (err==0) Alert("Позиция Buy закрыта успешно.");
               err=0; return(0);
            }
            // --- закрытие позиции Sell.
      else  if (OrderType()==OP_SELL)
            {  RefreshRates();
               OrderClose(OrderTicket(),OrderLots(),Ask,30);
               err=GetLastError();
               if (err>0)  Alert("Ошибка при закрытии позиции Sell (",err,").");
               if (err==0) Alert("Позиция Sell закрыта успешно.");
               err=0; return(0);
            }
   }  }  }
}
 
chief2000:
美元兑日元


谢谢
 
Roman.:


0.01 -NDD美分账户。TR和SL=0。

一切都是一样的,哪里都一样。

第四,货币对方面,毫无疑问,一切都按照算法进行测试。

在阿尔卑斯山上--黄金--根据算法测试。

我想把金属添加到我的GRAAL中,它在第四阶段工作,到目前为止只在货币上。


所以货币没有问题?
 
Vinin:

所以货币方面没有问题?


是的,没有任何问题。

维克多-伊万诺维奇,由衷地感谢你,我在你的引导问题上已经想通了。

4中的NDD 没有金属,只有货币,这就是为什么在测试过程中会出现131号错误--错误的数量。我没有意识到这一点。

关于黄金和白银,我已经开始在Alps中优化参数。

 
paladin80:

为了平仓,请尝试这种结构。


谢谢你,它起作用了!
 

你能告诉我如何插入横幅的HTML代码,例如?

 
把它放在哪里?