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

 
new-rena:

5英镑买一个答案?

)

等待着...

好吧,如果问题需要个人工作,而结果是一个完成的代码,那么一切都有可能......
 

下午。该指标需要从另一个指标中获取数据,当加载该指标时,显示的是历史记录,新的数值没有更新,请告知在循环中或其他地方出现了什么错误。

//+------------------------------------------------------------------+
//| 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 limit;
   int counted_bars = IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit = Bars - counted_bars - 500;
   for (int i=limit; i>=0; i--)
   {
     Buf_1[i]=iCustom(Symbol(), 0,"ATR", 0, i);//При подстановке любого индикатора нет обновления!!!
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

这样的情况下,我得到了一个错误--你能帮助我理解为什么会发生错误--在MQL5中你不能改变用户输入变量的值?

'Slippage' - 常数不能被修改 Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

 
-Aleks-:

这样的情况下,我得到了一个错误--你能帮助我理解为什么会出现这样的错误--在MQL5中,你不能改变用户输入的变量的值?

'Slippage' - 常数不能被修改 Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

5中没有这样的事情

市场信息

我不知道Slippage的情况)

 
new-rena:

这个人不在5人组。

市场信息

什么是地狱--他为什么不把它放在错误里......

我应该使用哪种模拟信号?

 
-Aleks-:

哦,胡说八道--他为什么不把它放在错误......

我应该使用哪种模拟信号?

上周末的这个话题也是关于换成5圆的。

从我的帖子和后面阅读2-3页的所有帖子

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

Вопросы от начинающих
Вопросы от начинающих
  • www.mql5.com
Форум трейдеров MQL5.community
 
new-rena:

上周末的同一个话题涉及到了转到5K的问题。

从我的帖子和后面阅读2-3页的所有帖子

https://www.mql5.com/ru/forum/6343/page662#comment_2930149

是的,是的,我已经打开了那篇文章--谢谢。插入了MarketInfoMQL4函数,但结果是否定的....也许我把它放在了错误的地方......

 
-Aleks-:

是的,我已经打开了这篇文章--谢谢你。我粘贴了MarketInfoMQL4函数,但结果是否定的....。我可能把它放在了错误的地方...

MarketInfo(Symbol(),MODE_DIGITS) 是(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

你最好深入研究一下函数中的替换的深度

它将更加优雅,接近于MQL5。

简而言之,慢慢来。

你不需要任何库和外来函数。你应该学习用纯粹的MQL5编写。

 
-Aleks-:

这样的情况,我得到了一个错误--你能帮助我理解为什么会出现错误--在MQL5中,你不能改变用户输入变量的值?

'Slippage' - 常数不能被修改 Kamikadze_MA-may.mq5 67 7

extern int Slippage    = 10;                       // Проскальзывание

int init()
  {
//3,5 знаков
   if(MarketInfo(Symbol(),MODE_DIGITS)==3 || MarketInfo(Symbol(),MODE_DIGITS)==5)
     {
      Slippage*=10;
     }
   return(INIT_SUCCEEDED);
  }

  }

是的,输入参数不能被修改。说实话,我不明白为什么这个值要按照3/5位数的报价来改变?你确实在输入参数中设置了这个值。你不能只写100(如果是3/5位数)而不去管吗?
 
new-rena:

MarketInfo(Symbol(),MODE_DIGITS) 是(int)SymbolInfoInteger(Symbol(),SYMBOL_DIGITS)

你最好深入研究一下函数中的替换的深度

它将更加优雅,接近于MQL5。

简而言之,慢慢来。

你不需要任何库和外来函数。你应该学习用纯粹的MQL5编写。

顺便说一下,来自MarketInfoMQL4()的函数导致了一个错误--如何修复它?(学习两种语言会让我的大脑沸腾--我需要在不深入编码的情况下能够检查股市中的想法是如何运作的)。

'(' - 预期的名称 Kamikadze_MA-may.mq5 332 17
'::'- 名称预期 Kamikadze_MA-may.mq5 332 17


double MarketInfoMQL4(string symbol,
                      int type)
  {
   switch(type)
     {
      case MODE_LOW:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTLOW));
      case MODE_HIGH:
         return(SymbolInfoDouble(symbol,SYMBOL_LASTHIGH));
      case MODE_TIME:
         return(SymbolInfoInteger(symbol,SYMBOL_TIME));
      case MODE_BID:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Bid=last_tick.bid;
         return(Bid);
        }
      case MODE_ASK:
        {
         MqlTick last_tick;
         SymbolInfoTick(symbol,last_tick);
         double Ask=last_tick.ask;
         return(Ask);
        }
      case MODE_POINT:
         return(SymbolInfoDouble(symbol,SYMBOL_POINT));
      case MODE_DIGITS:
         return(SymbolInfoInteger(symbol,SYMBOL_DIGITS));
      case MODE_SPREAD:
         return(SymbolInfoInteger(symbol,SYMBOL_SPREAD));
      case MODE_STOPLEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL));
      case MODE_LOTSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_CONTRACT_SIZE));
      case MODE_TICKVALUE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE));
      case MODE_TICKSIZE:
         return(SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE));
      case MODE_SWAPLONG:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_LONG));
      case MODE_SWAPSHORT:
         return(SymbolInfoDouble(symbol,SYMBOL_SWAP_SHORT));
      case MODE_STARTING:
         return(0);
      case MODE_EXPIRATION:
         return(0);
      case MODE_TRADEALLOWED:
         return(0);
      case MODE_MINLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN));
      case MODE_LOTSTEP:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP));
      case MODE_MAXLOT:
         return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX));
      case MODE_SWAPTYPE:
         return(SymbolInfoInteger(symbol,SYMBOL_SWAP_MODE));
      case MODE_PROFITCALCMODE:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_CALC_MODE));
      case MODE_MARGINCALCMODE:
         return(0);
      case MODE_MARGININIT:
         return(0);
      case MODE_MARGINMAINTENANCE:
         return(0);
      case MODE_MARGINHEDGED:
         return(0);
      case MODE_MARGINREQUIRED:
         return(0);
      case MODE_FREEZELEVEL:
         return(SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL));

      default: return(0);
     }
   return(0);
  }