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

まあ...設定には2つのパラメータしかないのに、名前の後に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

上段

MODE_LOWER

2

ボトムライン


カスタムインジケーターのバッファーです。

0 上段ライン
1 ボトムライン

 
Artyom Trishkin:

まあ...設定には2つのパラメータしかないのに、名前の後に3つも付けているのは、正しく呼んでいないのでしょう。

そして、なぜそれを正常化するのですか?ここでは必要ありません。

mode_fractal は上限または下限のフラクタルで、これがないとどうしようもない。

ピリオドの後にゼロが書かれています

 
mila.com:

mode_fractal は、それがない場合と同様、上部または下部フラクタルである。

の後に0が入ります。

上記で、標準のインジケータとカスタムインジケータの値が一致しないと書きました。
 
Artyom Trishkin:
上記で、標準のインジケータとカスタムインジケータの値が一致しないと書きました。
違う - そうなんです。もっと深く見る必要がある...
 
Meta Trader 4にはフィボナッチがないのに、説明文にはフィボナッチがあるのはなぜですか?
 
SLANDOV:
Meta Trader 4にはフィボナッチがないのに、説明文にはフィボナッチがあるのはなぜですか?
どうしてないんだろう?挿入]メニュー→[フィボナッチ]があります。
 
Artyom Trishkin:
ダメってどういうこと?挿入 "メニュー→"フィボナッチ "があります。
PlayMarket社製MetaTrader4
 
SLANDOV:
PlayMarket社製MetaTrader4
残念ながら今のところAndroidやiOSの端末ではMT4が見れないのですが...。
理由: