错误、漏洞、问题 - 页 2958

 
你在说什么呢?
 

这两个链接是有效的。可能是旧的链接格式被或网站基础被更新。

 
Vladimir Karputov:

这两个链接是有效的。也许是旧的链接格式,或者是网站的数据库有了更新。

他们当然能工作,但在我看来,他们并没有做到我所期望的。

我想我看到的第一个是由日期https://www.mql5.com/ru/code/33553。

而第二篇则有一些其他的作者在里面。

当然,这只是一件小事。

 

我想保持简单。当市场观察中的一个新符号被画在图表上时(即当符号改变时),我需要识别它并采取相应的行动。

#property indicator_chart_window

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

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);
  }

void OnDeinit(const int reason)
  {
   string old_symbol=_Symbol;
   string new_symbol;

   Print("The current symbol is ",old_symbol,".");

   if(_UninitReason==REASON_CHARTCHANGE)
   {
      new_symbol=_Symbol;
      Print("Was: ",old_symbol,", now: ",new_symbol,".");
   }

   return;
  }

我把EURUSD 放在USDCHF上,它说。

2021.02.14 17:56:26.700 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 17:56:26.700 test (USDCHF,M20)       Was: USDCHF, now: USDCHF.

当我把指标从图表上移开时,它说(已经太晚了)

2021.02.14 18:02:54.006 test (EURUSD,M20)       The current symbol is EURUSD.

预计马上会有A。

2021.02.14 18:00:44.660 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 18:00:44.660 test (USDCHF,M20)       Was: USDCHF, now: EURUSD.

我做错了什么?

EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
  • www.mql5.com
EURUSD - Euro vs US Dollar - Графики с курсом по самым популярным валютным парам. Используйте фильтр снизу, чтобы отбирать нужные вам курсы валют. Внутри каждого графика показываются цены спроса и предложения, а также прирост за день.
 
x572intraday:

我想保持简单。当市场观察中的一个新符号被画在图表上时(即当符号改变时),我需要识别它并采取相应的行动。

我把EURUSD 放在USDCHF上,它说。

当我把指标从图表上移开时,它说(已经太晚了)

A是预期的。

我做错了什么?

什么在

OnDeinit(

在OnInit中多放一些,一切就都清楚了。

 
x572intraday:

我想保持简单。当市场观察中的一个新符号被抛到图表上时(即当一个符号发生变化时),你需要认识到这一点并采取相应的行动。

在指标中,我们需要在OnDeinit(例如在全局)中保存该符号。在OnInit中等待前一个指标的OnDeinit并读取保存的符号。
#property indicator_chart_window
#property indicator_plots   0

#include <Init_Sync.mqh> // https://www.mql5.com/ru/code/18138

int OnInit()
{  
  // https://www.mql5.com/ru/forum/189649#comment_4854618
  if (GlobalVariableCheck((string)ChartID()))
  {
    const string PrevSymb = _GlobalVariableGet<string>((string)ChartID());
    
    if (PrevSymb != _Symbol)
      Alert(PrevSymb + " -> " + _Symbol);
    
    _GlobalVariableDel((string)ChartID());  
  }
    
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_CHARTCHANGE)
    _GlobalVariableSet((string)ChartID(), _Symbol + "");
}

void OnChartEvent( const int id,
                   const long& lparam,
                   const double& dparam,
                   const string& sparam )
{
}

void OnTimer()
{
}

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);
}
这个例子用(string)ChartID()-name创建一个全局的。如果图表上有一个以上的指标,逻辑应该更复杂一点。
 
fxsaber:
在指标中,你需要在OnDeinit中保存符号(例如,在全局中)。在OnInit中等待前一个指标的OnDeinit的执行,并读取保存的符号。这个例子用(string)ChartID()-name创建一个全局的。如果图表上有一个以上的指标,逻辑应该更复杂一点。

TypeToBytes.mqh和crc64.mqh编译成功,但Init_Sync.mqh产生了大量的错误。也就是说,这件事甚至没有进入到例子的编撰阶段。我在想,这样的小事需要几个短小的库,其中有些库也不愿意编译。我只是以前从未插过任何外部的东西,除了我自己的定制指标。

 
x572intraday:

TypeToBytes.mqh和crc64.mqh编译成功了,但Init_Sync.mqh在编译时产生了大量的错误。

它现在正在编译中。

附加的文件:
 
fxsaber:

它正在为我编撰。

嗯哼,这就是它的作用。