どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 972

 
rapid_minus:

こんにちは。

なぜ、ヘルプに書いてある通りになっているのに、結果が0.0と表示されるのでしょうか?

なぜ、フラクタル値が抽出されないのでしょうか?

フラクタルには最低でも3本のバーが必要です
 

//+------------------------------------------------------------------+
#property copyright"Copyright 2015, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#プロパティの厳密さ

double gdClose_array[1]。

//+------------------------------------------------------------------+
//| 専門家による初期化機能
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| エキスパートティック機能
//+------------------------------------------------------------------+
void OnTick()
{
//---
int x=Fr_sign();
Print(x);
}
//+------------------------------------------------------------------+

int Fr_sign()
{
int iX;
double dX=0;
int giResult=0;
iX=CopyClose(Symbol(),PERIOD_CURRENT,1,1,gdClose_array)。
dX=gdClose_array[0];
プリント("dX ", dX)。
dX=NormalizeDouble(gdClose_array[0],Digits)。
Print ("NormalizeDouble(dX,Digits) ", dX);
return(0)です。
}
//+------------------------------------------------------------------+

その結果、私は

2015.11.30 23:30:37.645 2015.10.30 22:54 111 EURUSD,H1: NormalizeDouble(dX,Digits) 1.05934

テストによる同値

 
Vinin:
フラクタルには最低でも3本のバーが必要です
私は間違った方から来ているに違いない。何かアドバイスがあれば - ここに1バーのフラクタルがあります。その値をボリンジャーラインの値と比較して、フラクタルが内側か外側かを判断する必要があります。これをコードで表現するにはどうしたらよいでしょうか。
 
少なくとも私の目的では、フラクタルは必要ありません。フラクタルは、それが出現したバーの高値または安値の値を持つので、バーの 最小 または最大 値とボリンジャーラインの上限値または下限値を比較する必要があります。そうだろ?
 

フラクタルは5本のバーの高値または安値の値です。

1本の棒にデータを持たせても、正しいフラクタル値は得られません。

 
n0name:

フラクタルは5本のバーの高値または安値の値です。

1本の棒にデータを持たせても、正しいフラクタル値は得られません。

フラクタル」インジケータをチャートに配置すると、インジケータの矢印が最大または最小のバーに配置され、その値がそのバーの高値または安値と等しいことがすぐにわかります。フラクタルが何本のバーで計算されているかは問題ではありません。とにかく、私の戦略にとって重要なことではないのです。

とにかくありがとうございます。

 
n0name:

...

その結果

2015.11.30 23:30:37.645 2015.10.30 22:54 111 EURUSD,H1: NormalizeDouble(dX,Digits) 1.05934

テストによる同値

A) フォーラムでコードを 正しく貼り付けるには、SRCをクリックし、コード自体を開くフィールドで行います。


B) 次のコードを試してみてください。

#property strict

int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Fr_sign();
  }
//+------------------------------------------------------------------+

void Fr_sign()
  {
   double gdClose_array[1];
   if(CopyClose(_Symbol,PERIOD_CURRENT,1,1,gdClose_array)!=1) return;

   Print("Close price = ",DoubleToStr(gdClose_array[0],_Digits));
  }
 
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  Fr_sign();
  }
//+------------------------------------------------------------------+
 void Fr_sign()
  {
   double gdClose_array[1];
   if(CopyClose(_Symbol,PERIOD_CURRENT,1,1,gdClose_array)!=1) return;

   Print("Close price = ",DoubleToStr(gdClose_array[0],_Digits));
  }
//+------------------------------------------------------------------+ 

2015.12.01 22:24:01.683 2015.10.02 17:49 111 EURUSD,H1:終値= 1.06181

2015.12.01 22:24:09.433 2015.11.27 10:04 111 EURUSD,H1: 終値=1.06181

2015.12.01 22:24:09.701 2015.11.30 23:59 111 EURUSD,H1: 終値 = 1.06181

試着

2015.12.01 22:35:58.830 2015.11.30 23:59 111 GBPUSD,H1: 終値=1.50718

2015.12.01 22:35:58.683 2015.11.27 20:59 111 GBPUSD,H1: 終値=1.50718

2015.12.01 22:35:50.434 2015.09.17 21:55 111 GBPUSD,H1: 終値=1.50718

 
n0name:

2015.12.01 22:24:01.683 2015.10.02 17:49 111 EURUSD,H1: 終値 = 1.06181

2015.12.01 22:24:09.433 2015.11.27 10:04 111 EURUSD,H1: 終値=1.06181

2015.12.01 22:24:09.701 2015.11.30 23:59 111 EURUSD,H1: 終値 = 1.06181

試着

2015.12.01 22:35:58.830 2015.11.30 23:59 111 GBPUSD,H1: 終値=1.50718

2015.12.01 22:35:58.683 2015.11.27 20:59 111 GBPUSD,H1: 終値=1.50718

2015.12.01 22:35:50.434 2015.09.17 21:55 111 GBPUSD,H1: 終値=1.50718

再現できない、2回目の日付がどこから来たのか不明、こんなのあるんだ

2015.12.01 22:10:04.250 111 EURUSD,H1:終値=1.06336
2015.12.01 22:10:00.531 111 EURUSD,H1:終値=1.06336

2015.12.01 22:10:00.531は日付と時間です。

111 - Expert Advisorの名前です。

EURUSD,H1 - シンボル名とタイムフレーム;

終値=1.06336 - 指数1(前時間)のローソク足の終値なので、新しい時間が来るまで取得します。

 
Mislaid:

再現できません、2回目の日付がどこから来るのか不明です、私はこれ

2015.12.01 22:10:04.250 111 EURUSD,H1:終値=1.06336
2015.12.01 22:10:00.531 111 EURUSD,H1:終値=1.06336

2015.12.01 22:10:00.531は日付と時間です。

111 - Expert Advisorの名前です。

EURUSD,H1 - シンボル名とタイムフレーム;

終値 = 1.06336 - インデックス1のローソクの終値(前の時間)、あなたは新しい時間までこれを受け取ることになります。

すべて正解です。数日分を選択してテストしてください。その結果、どうなるのでしょうか。