新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 443

 
Alexey Viktorov: 打开和关闭时出现滑移。

阿列克谢!MT5今天普遍变得啰嗦了--评论中重复了TP。


 
STARIJ:

谢谢你,阿列克谢!!。我也是这么想的--但是你怎么检查呢? 你怎么知道它是什么呢?为什么没有真正的账户。也许是因为它是旧的,而模拟账户是新的?

将订单的价格和收盘价 之差除以_Point,并与订单注释中的条目进行核对。这正是我们发现的情况。随机巧合不可能无限期和稳定地持续下去。我想在真实账户上没有这样的滑坡。虽然我曾经拥有它们。我是在真实账户上计算的。起初我注意到,收盘是在tp上,而收盘价没有突出显示为绿色。

 

你好,请问你能帮助我吗?

我希望在任何时候都能知道指标箭头所在的条形图的编号。

在这个例子中,如果箭头在第10根柱子上,就试图填充缓冲区。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(rates_total<2) return(0);
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-2;
      ArrayInitialize(BufferUP,EMPTY_VALUE);
      ArrayInitialize(BufferDN,EMPTY_VALUE);
     }
   for(int i=limit; i>=0; i--)
     {
      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE
            )
           {
            num_buy=il;
            break;
           }
        }
      //
      if(num_buy==10)
        {
         BufferUP[i+1]=low[i+1]-distance*MyPoint;

        }

      for(int il=i+1;il<=i+300;il++)
        {
         if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",1,il),Digits)!=EMPTY_VALUE
            )
           {
            num_sell=il;
            break;
           }
        }
      if(num_sell==10)
        {
         BufferDN[i+1]=high[i+1]+distance*MyPoint;
         
         
        }

      Comment(num_buy,"num_sell",num_sell);
     }
//--- return value of prev_calculated for next call

   return(rates_total);
  }

错在哪里呢?

 
mila.com: 你好,请问你能帮助我吗?
我想在任何时候都知道指标箭头所在的柱子的编号。
在这个例子中,我试图在箭头位于第十根柱子上的情况下填充缓冲区。
错在哪里呢?

通常,当我检查时,我运行它并看到结果。这只是代码的一部分。这里所有的东西都很小,很难看清--在我的编辑器里,它更大。

if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
{
    num_buy=il;
    break;  // Это выход из цикла. Остальные бары лишаются чести быть просмотренными. Ошибка здесь?
}
 

你好,你能告诉我如何使一个指标将数据保存到一个文件中吗?

代替RSI指标的威廉斯百分比范围


//|专家启动功能|

//+------------------------------------------------------------------+

int start()

{

//----

int iRSI。

iRSI=FileOpen("File.txt",FILE_CSV|FILE_WRITE, '\t')。

//------------------------------------------------//

//-------------------------------------------------//

如果(iRSI>0)

{

FileWrite(iRSI, [0])。

FileClose(iRSI)。

}

//----

return(0);

}

 
STARIJ:

这里的一切都非常小。

在浏览器中有一个选项可以改变比例 )

STARIJ:
Ошибка здесь?


不幸的是,这并不是唯一的错误。

正确的值显示在注释中,从当前栏中,现在num_buy 9

为什么在历史上没有条件?

if(num_buy==10)

我检查了一下,在EA中,当箭头在第10条上时,它就会打开一个位置

for(int il=1;il<=300;il++)
        { 
        if(NormalizeDouble(iCustom(NULL,0,"Arrow v.3",0,il),Digits)!=EMPTY_VALUE)
            
           {
            num_buy=il;
            break;
           }
        }
        if(num_buy==10)
           {
            B_OrderSend();
           }

当箭头在第10条时,我如何在指标中放置一个点?

 
mila.com:

在浏览器中,有一个选项可以改变比例 )


不幸的是,这并不是唯一的错误。

注释显示的是正确的数值,从当前栏位来看,现在是num_buy 9

为什么在历史上没有条件?

检查了它;在EA中,当箭头在第10条上时,它打开了一个位置

当箭头在第10条时,我如何在指标中放置一个点?

一旦你看到第一个非空的指标值,你就会中断这个循环。这就是为什么它没有达到10。

 
Artyom Trishkin:

所以,一旦你遇到第一个非空的指标值,你就在这里打破循环。这就是为什么它没有达到10。

根据STARIJ 的建议,我从指标中删除了一个断点。

图表上仍然没有点,在评论中写了第三和第四个箭头的数字,但第一个和第二个(最接近当前日期)没有看到。

 
mila.com:

在指标中,我去掉了断点;正如STARIJ 所建议的那样

图表上仍然没有点

但你把它留在了专家顾问中。那它是做什么的呢?它找到了指标的第一个点,并...突破

 
Artyom Trishkin:

但这位议员却被甩在了后面。那么它是做什么的呢?它找到了指标的第一个点,并...突破

我做了专家顾问来检查可能性,它正确地打开,但在指标中,它根本看不到最近的两个指标缓冲区 "Arrow v.3 "的值。

原因: