错误、漏洞、问题 - 页 525

 

下午好,有可能以任何方式改变标准的图形工具 吗?更具体地说:在Fibo网格上添加一条垂直线,以1.3的系数绘制。

 

一个关于使用指标的问题。我写了一个测试代码。

int Fractals;
double bar_val[];
bool start;
int OnInit()
{
   Fractals = iFractals(_Symbol, _Period);
   if (Fractals == INVALID_HANDLE) return (1);
   if (!ArrayResize(bar_val, 2)) return (1);
   if (!ArraySetAsSeries(bar_val, true)) return (1);
   start = false;
   return(0);
}

void OnTick()
{
   if (start) return; else start = true;
   for (int i = 0; i < 10; i++)
   {
      CopyBuffer(Fractals, UPPER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("1. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
      CopyBuffer(Fractals, LOWER_LINE, i, 2, bar_val);
      if (EMPTY_VALUE != bar_val[0])
         Print("2. i = " + string(i) + ", bar_val = " + string(bar_val[0]));
   }
}

它定期显示i=2的分形,但在屏幕上并不存在(来自标准指标Fractals)。

请告知什么是错误

 
由于某些原因,在2001年至2006年期间,没有专家接受测试。我看了看欧元和英镑。关闭了终端,删除了历史记录。又下载了。都是一样的。有可能在2001年之前开启交易。而从2001年到2006年,它在有信号时就会跳过。为什么?
 

终端栏上的时间框架按钮被卡住了。有时在频繁地从一个TF切换到另一个TF时,会同时出现几个。也许,这是因为有大量的窗口、指标、模板......。然而,我以前有那么多的窗口,但没有观察到这种效果。该截图是一个例子,说明按下的时间框架按钮与图表左上角显示的真实值不一致。更多的是长期影响,尽管它确实迟早会消失。

有时根本就没有人按下。

 

我可以用mql5控制窗口的大小吗?

 
ilunga:

一个关于使用指标的问题。我写了一个测试代码。

它定期显示i=2的分形,但在屏幕上并不存在(来自标准指标Fractals)。

请告知错误是什么

你不应该一目了然地知道专家顾问的确切代码
 
tol64:
2001年至2006年期间,不知何故,专家们没有得到测试。我看了看欧元和英镑。关闭了终端,删除了历史记录。又下载了。都是一样的。有可能在2001年之前开启交易。而从2001年到2006年,它在有信号时就会跳过。为什么?
其他信息。只有当你在测试器设置中选择了D1 时间框架时才会发生这种情况。如果我在专家顾问的设置 中选择时间框架D1,在测试器的设置中选择较小的TF,那么就不会出现跳转。这是一个错误还是有什么解释?
 

我做了一个简单的指标,但我不明白为什么它不愿意工作;(

//+------------------------------------------------------------------+
//|                                                      testind.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot Vol
#property indicator_label1  "UniPrice"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLightSlateGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
#include <MovingAverages.mqh>
//--- input parameters
input int      Smooth=50;
//--- indicator buffers
double         SmoothSpreadBuffer[];
double         SpreadBuffer[];
double         UniPriceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,UniPriceBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SpreadBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,SmoothSpreadBuffer,INDICATOR_CALCULATIONS);
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   int i;
   for(i=1;i<rates_total;i++)
     {
      SpreadBuffer[i]=(high[i]-low[i]);
     }  
     
   SmoothedMAOnBuffer(rates_total,prev_calculated,
                         1,  // с какого индекса есть значения в массиве для сглаживания 
                         Smooth,  // период экспроненциальной средней
                         SpreadBuffer,       // буфер для взятия средней
                         SmoothSpreadBuffer);  // в этот буфер помещаем значения средней      
   for(i=1;i<rates_total;i++)
     {
      UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];//не показывает
      //UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[rates_total-1];//показывает
      //UniPriceBuffer[i]=close[i];//показывает
      //UniPriceBuffer[i]=SmoothSpreadBuffer[i];//показывает
     }  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

为什么它不想用一个除以另一个并显示结果?

有时它给出了一个结果,但并不符合实际情况,例如欧元兑美元 的数值应该在300-400的时间内...

 
Olegts:

我做了一个简单的指标,但我不明白为什么它不愿意工作;(

close[i]时,我把它替代,SmoothSpreadBuffer[i]时,我把它替代,为什么它不想用一个除以另一个并显示结果?

这是真的,有时它给出了一个结果,但它并不符合现实,例如,欧元兑美元的时钟应该有一个300-400的数值...

UniPriceBuffer[i]=close[i]/SmoothSpreadBuffer[i];

只要把这里的欧元兑美元数值替换成当前时间就可以了。

以马云为例,以收盘价 计算的平均数为16

UniPriceBuffer[i] = 1,33846 / 1.33932 = 0,99935

或更好地使用

handle=iMA(name,period,ma_period,ma_shift,ma_method,applied_price);
и т.д
 

在最后一次构建后,终端在加载时挂起。无法访问菜单或上下文菜单。无法访问菜单或上下文菜单。WIn7。符号概览窗口是空的。连接图标为红色。没有CPU负载。该怎么做,何时能获得稳定?

Описание:
  Ошибка привела к остановке взаимодействия программы с Windows.

Сигнатура проблемы:
  Имя события проблемы:    AppHangB1
  Имя приложения:    terminal.exe
  Версия приложения:    5.0.0.514
  Отметка времени приложения:    00343800
  Сигнатура зависания:    86b5
  Тип зависания:    1
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Доп. сигнатура зависания 1:    86b56845a796dcc49c1ed94bca152915
  Доп. сигнатура зависания 2:    4dea
  Доп. сигнатура зависания 3:    4dea45bbcdd37e9fd7bef8af1f8c0d94
  Доп. сигнатура зависания 4:    1df5
  Доп. сигнатура зависания 5:    1df5990b738955081f33bb6a466caece
  Доп. сигнатура зависания 6:    b4e6
  Доп. сигнатура зависания 7:    b4e6e85bfba9e3852328760498392cb4