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

 

Karputov Vladimir:
Высылайте.

发送

 
Karputov Vladimir:
把它寄给我。
我还想补充一点,如果改变了输入参数该指标 也能正常工作,没有错误。
 

卡尔普托夫-弗拉基米尔 的帮助下。我通过在OnInit()函数中获得指标句柄,然后在OnDeinit()中删除它来解决这个问题。

你能不能让指标从某一栏开始画线,而不是在整个历史上画?

 

下午好。我有这样一个问题。我已经开始研究MQL,并正在编写一个EA。当我编译并运行我的EA时,它打开了欧元兑美元的一小时图表,但我没有指定要打开哪个图表。我已经规定欧元的开盘时间为5分钟。首先,它将欧元美元打开一个小时,然后打开5分钟。我怎样才能删除小时图?下面是专家顾问的代码。提前感谢您的建议。


//+------------------------------------------------------------------+
//|а.ǞǞǞ
//|Valery Wilkes |
//|https://www.mql5.com ||
//+------------------------------------------------------------------+
#财产版权"Valery Wilkes"
#属性链接 "https://www.mql5.com"
#财产版本 "1.00"
#属性严格
double iAlligator();
bool ObjectSetInteger()。
long a=ChartOpen("EURUSD",PERIOD_M5)。
//+------------------------------------------------------------------+
//| 专家初始化功能|
//+------------------------------------------------------------------+
int OnInit()
{
//-----------------创建计时器
EventSetTimer(5)。

//---
return(INIT_SUCCEEDED)。
}
//+------------------------------------------------------------------+
//| 专家去初始化功能|
//+------------------------------------------------------------------+
空白的OnDeinit(const int reason)。
{
//--------------销毁计时器
EventKillTimer()。

}
//+------------------------------------------------------------------+
//|专家勾选功能|
//+------------------------------------------------------------------+
空白的OnTick()
{


for(int f=3;; f++)
{
double val=iFractals("EURUSD",15,1,f);
如果(val!=0)
{
Alert("Buy Fractal",val, "Bar Left",f);
突破。
}
}
for(int f1=3;; f1++)
{
double val1=iFractals("EURUSD",15,2,f1);
如果(val1!=0)
{
Alert("Fractal to sell" ,val1, "Bar left" ,f1);
突破。
}
警报(Bid)。
}


}
//+------------------------------------------------------------------+
//| 定时器功能|
//+------------------------------------------------------------------+

空白的OnTimer()
{


}
//+------------------------------------------------------------------+
//| 测试器功能|
//+------------------------------------------------------------------+
double OnTester()
{
//---
double ret=0.0。
//---

//---
return(ret)。
}
//+------------------------------------------------------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
valeravilks:

下午好。我有这样一个问题。我已经开始研究MQL,我正在写一个专家顾问。当我编译和运行专家顾问时,它打开了欧元兑美元的小时图,但我还没有指定要打开哪个图表。我已经规定欧元的开盘时间为5分钟。首先,它将欧元美元打开一个小时,然后打开5分钟。我怎样才能删除小时图?下面是专家顾问的代码。提前感谢您的提示。



你必须是启用调试,然后你的EA在默认的符号上启动。在元编辑器设置中指定所需的符号和TF。(见附图)。

附加的文件:
kagfqct9ki.png  28 kb
 
下午好。
int maxValueIdx= ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);
int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);  
你认为这意味着什么?
 
azfaraon:
下午好。
你认为这意味着什么?
这是MQL4代码。首先,它寻找数组中的最大值,检查整个数组,从零元素开始。然后从找到的最大索引开始对数组进行排序(在第一个例子中是升序排序,在第二个例子中是降序排序)。
 

因此,在这一块,我们正在寻找从最大到最小的最大和最小值?

并在此

  int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);
      int minValueIdx=ArrayMinimum(INDEX,WHOLE_ARRAY,0);

从最小到最大?

 
azfaraon:


这个代码。

int maxValueIdx=ArrayMaximum(INDEX,WHOLE_ARRAY,0);

搜索具有最大值的元素的索引。搜索从零元素开始,通过整个数组进行。

 
azfaraon:

以下是代码

//+------------------------------------------------------------------+
//|                                                  test_script.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Инициализация массива
   int INDEX[]={2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66};

//--- Выведем на печать наш массив
   int size;
   string text;

   size=ArraySize(INDEX);        // размер нашего массива
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print("Старт");
   Print(text);
//---
   Print("---");
   Print("Элемент с индексом ",ArrayMaximum(INDEX,WHOLE_ARRAY,0),
         " имеет максимальное значение равное ",INDEX[ArrayMaximum(INDEX,WHOLE_ARRAY,0)]);
   int maxValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMaximum(INDEX,WHOLE_ARRAY,0),MODE_ASCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);

//---
   Print("---");
   Print("Элемент с индексом ",ArrayMinimum(INDEX,WHOLE_ARRAY,0),
         " имеет минимальное значение равное ",INDEX[ArrayMinimum(INDEX,WHOLE_ARRAY,0)]);
   int minValueIdx=ArraySort(INDEX,WHOLE_ARRAY,ArrayMinimum(INDEX,WHOLE_ARRAY,0),MODE_DESCEND);

//--- Выведем на печать наш массив
   size=ArraySize(INDEX);       // размер нашего массива   
   text=NULL;
   for(int i=0;i<size;i++)
     {
      if(i<size-1)
         text=text+IntegerToString(INDEX[i])+",";
      else
         text=text+IntegerToString(INDEX[i]);
     }
   Print(text);
   Print("Конец");
  }
//+------------------------------------------------------------------+

而这就是结果。

2015.05.03 19:20:03.917 test_script #CHL,Daily:  Старт
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,14,32,6,81,46,1,3,31,22,5,78,24,25,66
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет максимальное значение равное 96
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,1,3,5,6,14,22,24,25,31,32,46,66,78,81,96
2015.05.03 19:20:03.917 test_script #CHL,Daily: ---
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Элемент с индексом 4 имеет минимальное значение равное 1
2015.05.03 19:20:03.917 test_script #CHL,Daily: 2,45,21,8,96,81,78,66,46,32,31,25,24,22,14,6,5,3,1
2015.05.03 19:20:03.917 test_script #CHL,Daily:  Конец

探索,请。