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

 
Maxim Kuznetsov:

你不必从参考文献中扯出废话,写出明显的循环......你以后要忍受它 :-)

   for(long chartId=ChartNext(0);chartId>0 &&!IsStopped();chartId=ChartNext(chartId)) {

      if (ChartSymbol(chartId)=="") continue;

      DoChart(chartId);

   }

我也需要消化这个...
 
Maxim Kuznetsov:

   for(long chartId=ChartNext(0);chartId>0 &&!IsStopped();chartId=ChartNext(chartId)) {

      if (ChartSymbol(chartId)=="") continue;

      DoChart(chartId);

   }

马克西姆,我不知道如何将其应用于我的问题(

 
MakarFX:

请帮助寻找或编写一个函数来搜索开放图表 上的对象。

五个开放的图表,EA在第一个图表上。MT4

这段代码应该可以工作。

#property strict
#include <Arrays\ArrayLong.mqh>
CArrayLong ChartsID;
//+------------------------------------------------------------------+
int OnInit()
{
   FindChartsBySymbol(_Symbol, ChartsID);
   for(int i = ChartsID.Total() - 1; i >= 0; i--)
   {
      long chart_id = ChartsID.At(i);
      Print("ChertID = ", chart_id, " , symbol = ", ChartSymbol(chart_id));
   }
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void FindChartsBySymbol(string symbol, CArrayLong &charts)
{
   for(long currChart = ChartFirst(); currChart >= 0; currChart = ChartNext(currChart))
   {
      if(ChartSymbol(currChart) == symbol) charts.Add(currChart);
   }
}
//+------------------------------------------------------------------+

检查加密货币,他们在周末工作

唯一的事情是监测新图表的打开(和关闭? ),然后更新列表。
 
Igor Makanu:

这段代码应该可以工作。

检查加密货币,他们在周末工作

谢谢你))))。

 
MakarFX:

在每个图表上用最少的代码运行该指标,是否可以接受?是否可以用默认的模板来做这件事。

 
Aleksei Stepanenko:

在每个图表上运行一个代码最少的指标或EA是否可以接受?是否可以用默认的模板来做这件事。

第一个图表上的EA运行DLL

所以只有一个

C# DLL MQ4 построение формы общения
C# DLL MQ4 построение формы общения
  • 2021.04.02
  • www.mql5.com
Еще неделю назад я не знал что такое C#...теперь я знаю что это читается "си шарп"))) Прочитав статьи https://www.mql5...
 

如果这样一个指标被放在每个所需的图表上,那么控制区域(图表)中任何对象的变化都会向图表中的专家发送一个事件。

//идентификатор графика с советником
long ID=1;

int OnInit() 
   {
   //установка флага получения событий создания объектов графика 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_CREATE,true); 
   //установка флага получения событий удаления объектов графика 
   ChartSetInteger(ChartID(),CHART_EVENT_OBJECT_DELETE,true); 
   return(INIT_SUCCEEDED); 
   } 

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) 
   {
   //если объект удалён или создан, или изменён
   if(id==CHARTEVENT_OBJECT_DELETE || id==CHARTEVENT_OBJECT_CREATE || id==CHARTEVENT_OBJECT_CHANGE)
      {
      EventChartCustom(ID,1,lparam,dparam,sparam); 
      }
   }

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[])
   {
   return(rates_total);
   }
作为一个想法的例子。
 
Aleksei Stepanenko:

如果你把这样的指标放在每个需要的图表上,那么控制区域(图表)中任何对象的变化都会向带有专家顾问的图表发送一个事件。

作为一个想法的例子

谢谢,但我检查了我在密码学上的代码,一切都按我的要求进行。

谢谢大家的帮助!

 
MakarFX:

下面是我在Chart_ID()方面的问题

是这样做的

但你不能在测试器中检查它(。

...我必须等这么久才能等到星期一(

在初始化过程中,一切似乎都在工作

但它在现实生活中会如何运作?

当我离开时,.........

乍一看,它似乎很好。你可以在任何一天查看剧本。但在文件中,我不喜欢这个例子。以下是我建议的写作方式

#property strict

/********************Script program start function*******************/
void OnStart()
 {
  long chart = ChartFirst();
  while(chart >= 0 && !IsStopped())
   {
    if(ObjectFind(chart, "00") >= 0)
     Print("Symbol ", ChartSymbol(chart), " Period ", EnumToString(ChartPeriod(chart)));
    chart = ChartNext(chart);
   }
 }/******************************************************************/

/*****************************End program****************************/
 
Aleksei Stepanenko:

如果这样的指标被放在每个所需的图表上,那么被监控区域(图表)中任何对象的变化都会向图表中的专家发送一个事件。

作为一个想法的例子。

对于这项任务

关于交易、自动交易系统和测试交易策略的论坛

新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

MakarFX, 2021.06.19 21:21

说实话,阿列克谢,以我的知识,这听起来很吓人......

如果你还没有 进入市场,你不能回到市场,从货币经纪人那里购买,或从对冲者那里购买。


该指标不适合。
原因: