[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 78

 

こんにちは!mquel4の勉強を始めました。ローソク足の最大値と最小値を計算し、ローソク足の極値で画面上の2つのバッファに線を引くというシンプルなインジケータを例に 説明します。

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
SetIndexBuffer(1,Buf_1); // Назначение массива буферу
SetIndexStyle (1,DRAW_LINE,STYLE_DOT,1);// Стиль линии
return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
int i,// Индекс бара
Counted_bars; // Количество просчитанных баров 
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
i=Bars-Counted_bars-1;
// Индекс первого непосчитанного
while(i>=0) // Цикл по непосчитанным барам
{
Buf_0[i]=High[i]; // Значение 0 буфера на i-ом баре
Buf_1[i]=Low[i]; // Значение 1 буфера на i-ом баре

i--; // Расчёт индекса следующего бара
}
//--------------------------------------------------------------------
return; // Выход из спец. ф-ии start()
}

では、バッファーラインを1本ずつではなく、2本(3本など)のローソク足を経由させるにはどうしたらいいのでしょうか?

 
wolf05632:

では、バッファーラインをすべてのローソク足ではなく、2本(3本など)のローソク足を経由させるにはどうすればよいのでしょうか?

まず、「SRC」ボタンを使って、メッセージをコードに正しく挿入する方法を学び、読みやすい形にして、MetaEditorと同じように見えるようにします。


第二段階は、Counted_bars変数とif文の連動を試みることになります。

例えば、こんな感じです。

2本目のバーごとにインジケータの計算を入力します(奇数本はスキップ、偶数本は残す)。

if (MathMod(Counted_bars, 2) == 0)
{
   // расчёт для буферов индикатора
}
else return(0);

ここでは、関数MathMod() について説明します。でも、使わなくてもいいんです。if文の中に任意の条件を挿入することができます。

しかし、このようなコードの改変は、バッファ内のいくつかの値を失うことになることを忘れてはならない。必要なのか、必要でないのか、それはわからない。すべては、あなたのタスク次第です。

 

少し混乱しています。サイクルステップを2に等しくしてみたのですが(同じ意味になると思います)、うまくいきません。具体的に1本ではなく、任意の本数のキャンドルを通す必要があるんです。私の理解では、このような構成になるはずです。

バッファ配列[1]=ローソク足[1]の配列

バッファ配列[2]=ローソク足[2]の配列

バッファ配列[3]=ローソク足[4]の配列

...

バッファ配列[5]=ローソク足[x]の配列など。でも、うまくいかないんです。

 
wolf05632:

バッファ指数と ローソク足指数の間にパターンがないのですが...。

また、欲しいものの写真を添付していただくとさらに良いと思います。

 

それは次のようなものです。

そして、このように必要なのです。

しかし、ロウソクに引かれる線にこだわる必要はなく、2本、3本と引かれてもいいのです。

 
sergeev:

ここではなく、テレパスのところに持っていくべきだったと思います。

彼は私たちをからかっているだけだ。


コードを見て、あなたはどこの注文を送信した 結果、そのエラーコードと楽器のための桁をスペースなしで見ることができます。
 

そうすると、ジグザグのようなインジケータを使うしかない(私の見解)。

#property indicator_chart_window // Индик. рисуется в основном окне
#property indicator_buffers 2 // Количество буферов
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[], Buf_1[]; // Объявление массивов (под буферы индикатора)
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
   SetIndexBuffer(0, Buf_0); // Назначение массива буферу
   SetIndexStyle (0, DRAW_SECTION);
   SetIndexBuffer(1, Buf_1); // Назначение массива буферу
   SetIndexStyle (1, DRAW_SECTION);
   return; // Выход из спец. ф-ии init()
}
//--------------------------------------------------------------------
int start() // Специальная функция start()
{
   int i,// Индекс бара
   Counted_bars; // Количество просчитанных баров 
   //--------------------------------------------------------------------
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   if (MathMod(Bars, 2) != 0 && Counted_bars == 0)
      return(0);
   i = Bars-Counted_bars-1;
   // Индекс первого непосчитанного
   while(i >= 0) // Цикл по непосчитанным барам
   {
      if (MathMod(i, 2) == 0)
      {
         Buf_0[i] = High[i]; // Значение 0 буфера на i-ом баре
         Buf_1[i] = Low[i]; // Значение 1 буфера на i-ом баре
      }
   
      i--; // Расчёт индекса следующего бара
   }
   //--------------------------------------------------------------------
   return; // Выход из спец. ф-ии start()
}

変更点は把握できると思います。唯一間違っていたのは、計算するバーのインデックスとしてIndicatorCounted()ではなく、Barsパラメータを 使用する方が良いということです。

これからの課題は、デバイダを外部パラメータに取り込むことです。通過したローソク足の本数と同じになります。

 
grell:

コードを見れば、注文を送った結果、そのエラーコード、商品の数字がスペースなしでわかります。

その通りです。だからテレパスの話なんです。

先ほど、コードを教えていただきました。

Alert("Ordersend_Number",res,err);

コードに目を通したわけではないのですが、残念ながら、エラーを見つけることができませんでした...。多通貨のExpert Advisorを 書いた経験がない。私はただ、いくつかの原則を知っているだけです。

 
1129がエラーコード であることは明らかですが、エラー番号1292はどこで確認したのでしょうか?
 
grell:
1129がエラーコードであることは明らかですが、エラー番号1292はどこで見たのですか? 。

何が起こるかわからない...

EAを1つのDCでしかテストしていないのですか?エラー129は 表示されるまでに時間がかかるのでしょうか?あるいは、何度かリクエストした後に注文が開く?