Meta Trader中的价差交易 - 页 144

 
Scorp1978 >>:

rid спасибо хорошая идея (от тиков придется тогда отказываться), фильтр от сильных убыточных движений ты имеешь ввиду "если сумарный профит меньше чего то, то закрыть все позиции".......

不,我是指最初的条目--"/if
//第一根蜡烛的尺寸大于设定值,不允许交易..."

 
大家下午好!祝所有把这一天当作节日的人节日快乐!"。
//---------------------------------------
出现了一个问题。这里有一个函数,可以输出(计算)最后一个NBars 的工具间的平均价差。
 double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars)
{
   int k;
   double N = 0;
   double Sum = 0;
   for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
   {
      if(N == NBars)
         break;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)
      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return(avarageSpread);
}
请告诉我如何设置
//-------------
int k;
double N = 0; double Sum = 0;
for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
{
if(N == NBars)
//------------------------
这样,函数不是为所有的NBars条数返回平均价差值,
,而是为除最后一个条数以外的NBars条数返回平均价差值。
换句话说,我想在计算中排除最新的条形图!甚至一定数量的最近的条形图也不应该包括在计算中。
有什么方法可以 "组织 "这个吗?
(作为回报,我可以在5月3日星期一给出一个好的市场入口)。有很高的概率后续盈利的关闭!)
 
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars, int NBarsSkip)
{
   int k;
   double N = 0;
   double Sum = 0;
   if(NBars > iBars(Symbol_1,Timeframe)) NBars=iBars(Symbol_1,Timeframe); // если н больше чем баров на графике то обрезаем
   if(NBarsSkip >= NBars) NBarsSkip=0; // если пропускаем баров больше/равно чем NBars, то ничего не пропускаем
   for(k = NBarsSkip; k < NBars; k++)
   {

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)
      {
         Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
         N++;
      }
   }
   double avarageSpread = Sum / N;
   return(avarageSpread);
}
NBarsSkip设置不参与计算的漏掉的条数,c NBarsSkip由NBars参与计算。
 
谢谢你,NCI !
我一会儿就给你发一个潜在的条目。

还有一个问题。
我只是有一个想法。
让它变得更简单如何。像这样设置:
而不是 for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
设置
for(k =M; k < iBars(Symbol_1,Timeframe); k++),
其中 M 是计算中排除的柱子数量。
它能起作用吗?


 
只不过不是k=M,而是k=M+1...。没有考虑到酒吧M
 
谢谢你!我也发了一篇文章。
 
老实说,我一开始没有注意到NBars应该只考虑同时存在于两个工具上的条形,那么我发布的代码就不符合这个逻辑。而且 M结构 也不正确。在这种情况下,你可以做以下事情:
double CalculateAvarageSpread(string Symbol_1, string Symbol_2,
                              int Timeframe, int NBars, int NBarsSkip)
{
   int k;
   double N = 0;
   int NReal = 0;
   double Sum = 0;
   for(k = 0; k < iBars(Symbol_1,Timeframe); k++)
   {
      if(N == NBars)
         break;

      int symb2Shift = iBarShift(Symbol_2,Timeframe,iTime(Symbol_1,Timeframe,k),true);
      if(symb2Shift != -1)
      {
         N++;
         if(N>NBarsSkip)
         {
            Sum += iClose(Symbol_1,Timeframe,k) - iClose(Symbol_2,Timeframe,symb2Shift);
            NReal++;  // счетчик Н которые не пропущены и посчитаны
         }
      }
   }
   if(NReal==0) return(0); // так как у нас не получилось рассчитать ни одного бара
   else
   {
      double avarageSpread = Sum / NReal;
      return(avarageSpread);
   }
}


 
谢谢你。由于某些原因,我的代码一开始没有编译,它返回了一个错误(括号)。
直到我将 ,从函数名称"...., int NBarsSkip "
对EA的外部参数
extern int NBarsSkip =2
我不知道为什么会出现错误。
但当我移动它时,一切都很正常。
 

我从头到尾读完了这个分支--全部145页。感谢每个人:RED、LIONID553、FDUCH、NEOCLICS、GETCH、FORX-K、GOLDTRADER、TIMBO、FORTRADER。我有很多信息,我还在消化。我的主要结论如下:你必须在这里挖掘,这是很值得的。P.s.:好的资源丰富的主题,几乎没有水灾。再次感谢2rid

 

谢谢你!

"需要思考的信息。

从周一开始,ZM-ZL牌面包(面粉-油,5:6)。

!