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

 
Boris.45:
你好,我正在为MT5写一个EA。我在MT5中写了一个EA,我想用它来自动搜索必要的模式并手动开仓。也就是说,EA中没有交易功能。我的问题是,我无法在图表上安装这个EA。EA中没有指标调用。 所有的指标都是用程序写的。我编译了它并在策略测试器中运行了它。没有任何问题。我刚刚把EA放在图表上,允许它 在屏幕上进行交易,在设置和弹出的EA窗口中。专家顾问的图标没有出现在图表上的笑脸,而是出现在价格图表上,是一个绿色的圆圈,里面有一个白色的三角形。我已经试过几次这个程序,仍然得到同样的结果。我在价格图表上改变了周期,显示器上出现了OnDeinit()的信息,也就是说,程序中处理了一个蜡烛,工作就停止了。

我看了一下记录本。

- 其中一次尝试安装EA的结果是出现了Profile change消息。

- 在所有其他尝试中,EA的加载没有任何问题。

我曾经使用 "概况 "工作:我增加 "概况 "的数量,在每个 "概况 "上设置不同的图表。如果那里有什么问题,不幸的是,我不知道它。我不知道什么东西必须被破坏,才能让程序发送关于档案变化的信息。尽管有可能是由于其他原因造成的故障。我不清楚。

为了测试,我今天创建了一个新的EA(模板),在OnInit(), OnDeinit(const int reason), OnTick()函数中没有写任何东西,并试图把这个EA放在图表上,允许交易。

我得到的情况和以前一样。

请帮助我处理这种情况。 谢谢你 !!!!!!

让我们逐一看一下。这里是模板。

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---
   
  }
//+------------------------------------------------------------------+

将其附在图表上,并附上工作室中图表的截图,以及 "日志 "和 "顾问 "标签的条目(如果它们出现在那里)。

附加的文件:
Test.mq5  2 kb
 
我想这里也没有专业人士。 pity......
 
Mihail Marchukajtes:
我认为这里也没有专业人士。 pity......
因此,在测试器中重新打印别人的图表中的动量值
 
Artyom Trishkin:
因此,在测试器中重新打印别人的图表中的动量值
打印显示缓冲区所画的内容。没有任何信息。谁能给出一个合理的答案????不是无法理解的推测....
 
Mihail Marchukajtes:
打印显示缓冲区所画的内容。没有任何信息。谁能给出一个合理的答案????不是一些晦涩难懂的投机....
所以你给出的信息是零。你的代码在哪里?还是这里的每个人都是通灵者还是什么?那么你应该去十度空间的魔术师论坛...
 

同事们,你们能告诉我如何在一个给定的范围内比较烛台参数吗?

如何计算最大或最小值,我明白了。

以下是代码。

空白的OnTick()

{

double H = 0;

for ( shift = Search_Period; shift >0; shift--)

{

如果(High[shift] > H)

{ H = High[shift]; }

警报(H)。

}

}

但问题是,它覆盖了变量的值。

我的目的是要找到,例如,两个或更多的价格值相同的高位蜡烛图。换句话说,在想法中,每次迭代后都应该创建一个变量来存储数值,然后再创建一个,以此类推,直到检查完整个区间。然后它们将能够被进一步比较。

但我不知道该怎么做()。

 
Andrey Koldorkin:

同事们,你们能告诉我如何在一个给定的范围内比较烛台参数吗?

如何计算最大或最小值,我明白了。

以下是代码。

...............


但问题是,它覆盖了变量的值。

而我的目的,是要找到,例如,两个或更多的烛台,其价格值为高。也就是说,在想法中,在每次迭代之后,应该创建一个变量来存储该值,然后再创建一个,以此类推,直到整个区间被检查完。然后它们将能够被进一步比较。

但我不知道如何去做(()。

它看起来像这样。

//+------------------------------------------------------------------+
//|                                                     TestCopy.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Search_Period=100;  // Количество копируемых High
int searchPeriod=(Search_Period<1)?1:Search_Period;
double mass_high[][2];        // массив значений High и их времени
MqlRates array[];             // Массив для копирования Open, High, Low, Close, Time
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()));
   if(CopyRates(Symbol(),PERIOD_CURRENT,1,copy_bars,array)>0) {
      double H=0;
      int size_h=0;
      for(int i=0; i<copy_bars; i++) {
         if(array[i].high>H) {
            H=array[i].high;
            size_h++;
            ArrayResize(mass_high,size_h);
            mass_high[size_h-1][0]=H;
            mass_high[size_h-1][1]=(int)array[i].time;
            }
         }
      }
   for(int i=0; i<ArrayRange(mass_high,0); i++) {
      printf("Время: %s, High: %.5f",TimeToString((int)mass_high[i][1],TIME_DATE|TIME_MINUTES),mass_high[i][0]);
      }
  }
//+------------------------------------------------------------------+
 
如何将两个不同的顾问写成一个?
 
Сергей Зырянов:
你如何将两个不同的EA合并为一个?
你对什么感兴趣?你将代码从一个EA复制到另一个,但你需要正确地复制它,如果你不明白如何做,就向自由职业者订购。
 
Artyom Trishkin:

情况是这样的。

我会努力想办法的。谢谢你。

原因: