MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 969

 
Vladimir Baskakov:

ありがとうございます。1つだけ条件を満たすと動作します。

そして、必要なのは

なぜかポジションが開かない。

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
int barfrdn_1 = GetLastFractals(1,MODE_LOWER);
int barfrdn_2 = GetLastFractals(barfrdn_1+1,MODE_LOWER);

if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] < Low[barfrdn_2] )
if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] > Low[barfrdn_2] )
 
Igor Makanu:

動作はしますが、条件ではなく、好きな場所でポジションを 開くことができます。

 
Vladimir Baskakov:

動作しますが、条件ではなく、好きな場所でポジションを 開くことができます。

私のコードは単純で、ZigZagのように、フラクタルはループ内の矢印のあるバー上にのみ値を持ち、矢印が現れる前に指標の値を探してループを終了し、フラクタルバー番号を返します。

私はちょうどフラクタルによってExpert Advisorを作った - コードは、チェックされ、それはバー番号1のフラクタルが過描画する可能性があるテスト中に判明 - テスターの可視化モードをオンにし、フラクタル用のインジケータを追加します。

 
Igor Makanu:

それはありえない、私のコードは単純ですが、フラクタルは、ジグザグのように、矢印でバー上の値のみを持って、ループでは、矢印が表示されるまで、指標の値を通過し、ループを終了し、フラクタルがあるバーの数を返します。

私はちょうどフラクタルによってExpert Advisorを作った - コードは、チェックされ、それはバー番号1のフラクタルが過描画する可能性があるテスト中に判明 - テスターの可視化モードをオンにし、フラクタル用のインジケータを追加します。

0または空の値で結果を確認する必要があるのかもしれません。
 
Aleksei Beliakov:
結果が0または空の値であることをチェックする必要があるかもしれません。

空値に0がある場合、_Pointと比較するのはちょっと無理がありますね。

このコードのこの部分で、フラクタルインジケータの 値は動作するはずです。

SZY:もう一度、なぜか自分のコードを議論する...。より多くのコードが動作し、私は他の参加者のコードを見ていない、私は最終的にそれを必要とする人を理解していない?)


PS:私は質問が休まないことを知っているので、チェックされ、すべてが動作し、コードが高速です。

#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   SetIndexArrow(0,SYMBOL_ARROWUP);
   SetIndexArrow(1,SYMBOL_ARROWDOWN);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--
   static int limit=0;   
   if(limit>=10) return(rates_total);
   int b_up = 0, b_dn = 0;
   while(limit<=10)
     {
      b_up = GetLastFractals(b_up,MODE_UPPER);
      Label1Buffer[b_up] = high[b_up];
      b_up++;
      b_dn = GetLastFractals(b_dn,MODE_LOWER);
      Label2Buffer[b_dn] = low[b_dn];
      b_dn++;
      limit++;
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

出来栄え


 
Artyom Trishkin:

インジケータバッファにArraySetAsSeries(true)を指定します。

した。ハンドブックにしたがって行いました
 
Igor Makanu:

それはありえない、私のコードは単純ですが、フラクタルは、ジグザグのように、矢印でバー上の値のみを持って、ループでは、矢印が表示されるまで、指標の値を通過し、ループを終了し、フラクタルがあるバーの数を返します。

私はちょうどフラクタルによってExpert Advisorを作った - コードは、チェックされ、それはバー番号1のフラクタルがオーバー描画する可能性があることがテスト中に判明 - テスターの可視化モードに切り替え、フラクタル用の指標を追加してください。

いいえ、私のポジションはオープンです。当然のように、3小節目にはフラクタルが。しかし、さらにそれは悪いことです。私の条件(fr1_up<fr_2 && fr1_down>fr2_down )では、見つかりません。本質は価格の圧縮であり、それは2つのフラクタルによって見出される
 

やりましたね。

999

ファイル:
IgorM.mq5  17 kb
 
Aleksandr Klapatyuk:

やりましたね。

何ですか?
 
Vladimir Baskakov:
どれだ?

オブジェクト名 move over iFractals