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

 
Artyom Trishkin:

不得从其他指标中调用 :)

或者展示你是如何做到的。

我从这个函数中调用它


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

而它又从这个

bool CheckOnePrices(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int count_fractals, int bar_fractal, double match_price, int delta_points, int shift) {
   if(count_fractals<1) return(false);
     double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
   int    n=1, dg=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
   for(int i=n; i<=count_fractals; i++) {
      double price_fractal=GetPriceFractal(symbol,timeframe,mode_fractal,count_find,n,bar_fractal,shift);
      double result_compare=fabs(NormalizeDouble(price_fractal-match_price,dg));
      if(result_compare<delta_points*pt) {
         if(mode_fractal==0) BufferFractalUp[bar_fractal]=price_fractal;
         else BufferFractalDn[bar_fractal]=price_fractal;
        /// Print("Цена бара с фракталом ",n," совпала с проверяемой ценой, возвращаем true");
         return(true);
         }
      n++;
      }
   return(false);
}

这就是OnCalculate()中的内容

if(CheckOnePrices(Symbol(),PERIOD_CURRENT,0,rates_total,numFractals,bar,low[i],delta,i+1)) { BufferPointDn[i]=low[i]-distanc*Point;}
 
mila.com:

从这个函数中调用


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

嗯...你没有正确地调用它--它在设置中只有两个参数,而你在名字后面加了3。

而你为什么要把它正常化?没有必要这样做。

 
mila.com:

我从这个函数中调用它


double GetPriceFractal(string symbol, ENUM_TIMEFRAMES timeframe, int mode_fractal, int count_find, int number_fractal, int &bar_fractal, int shift) {
   int n=0;
   for(int i=shift; i<count_find; i++) {
      //double price_fractal=iFractals(symbol,timeframe,mode_fractal,i);
      double price_fractal=NormalizeDouble(iCustom(symbol,timeframe,"X-bars",InpLeftSide,InpRightSide,mode_fractal,i),Digits);
      if(price_fractal>0) {
         n++;
         if(n==number_fractal) {
            bar_fractal=i;
            return(price_fractal);
            }
         }
      }
   return(EMPTY_VALUE);
}

请注意,在mode_fractal中,你必须写上这个自定义指标的缓冲区编号--上为0,下为1。否则,在标准分形中,分形的标识符值与这个自定义指标的缓冲区值不一致。

标准分形。

恒定

价值

描述

MODE_UPPER

1

上线

模式_Lower

2

底线


自定义指标的缓冲器。

0 上线
1 底线

 
Artyom Trishkin:

嗯...你没有正确地调用它--它在设置中只有两个参数,而你在名称后面放了3个。

而你为什么要把它正常化?你在这里不需要它。

mode_fractal是上分形或下分 形,你不能没有它。

零写在句号之后

 
mila.com:

mode_fractal是上分形或下分形,如没有它。

0被刻在周期之后

我在上面写道,标准指标的值和你的自定义指标的值不一致。
 
Artyom Trishkin:
我在上面写道,标准指标的值和你的自定义指标的值不一致。
错了--他们确实如此。你需要看的更深...
 
为什么Meta Trader 4中没有Fibonacci,但在描述中却有?
 
SLANDOV:
为什么Meta Trader 4中没有Fibonacci,但在描述中却有?
怎么会没有呢?有:插入菜单项-->斐波那契
 
Artyom Trishkin:
你是什么意思,不?有:"插入 "菜单项-->"斐波那契"。
PlayMarket的MetaTrader4
 
SLANDOV:
PlayMarket的MetaTrader4
不幸的是,目前我在安卓或iOS设备上看不到MT4...
原因: