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

 

こんにちは。

ジグザグに 色を塗るのを手伝ってください。

谷から頂点までの距離が100ポイント以上の場合、そのセグメントを緑色にするようにしたい。

 
Dimitry-1983:

こんにちは。

もう、頭を悩ませています。double配列の中に、ある価格があるかどうかを調べるには?

テスト用にこんな風に書きました。



スクリプトは問題なく11, 22, 33, 44を見つける(端末にはそのような命令がある)。しかし、スクリプトが例えば価格45を処理した場合、やはり3(配列中の価格44の位置)を表示します。

もし配列の中に処理中の注文の価格があればtrueを返し、なければfalseを返します。しかし、私はまだそのような機能を言語から見つけ出していません。

この関数は,配列の 1 番目の次元で最初に見つかった要素のインデックスを返しますが求められた値が見つからなかった場合は,求められた値がその間にある,最も小さい値を持つ要素のインデックスを返しますしたがって、このタスクでは、求めた値と見つけた値が等しいかどうかもチェックする必要があります。比較の結果は、真か偽になる

 
STARIJ:

なぜインジケーターから何かを印刷する必要があるのですか?すべてが画面に映し出される--それがインジケーターです。テーブルが必要なときは、iCustom()でスクリプトを実行します。


ここに書かれていること、何も理解できませんでした。ファイルを作ると、なぜかいつも空っぽになるという話でした。データの配列をファイルに取り込むことができないのですが。

データをファイルに保存してほしい。1年間チャートに貼り付けておけば、1年間の読み取り記録はすべてそこにあるはずです

 
Alekseu Fedotov:

面白い縫い方ですね。

間違ってこれを試してみてください。


ありがとうございました。でも、すでに試しましたが、うまくいきませんでした。

 

なぜエラーが出るのか、アドバイスをお願いします。

//--- input parameters
input int      MyLevel=100; // установка уровня (отступ) выше (ниже) текущей цены;
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   double R1 = 0; // служеные переменные принимаются равными 0;
   double R2 = 0; // служебные переменные; принимаются равными 0;
//---
   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[])
  {
//---

   double i=Bid; // переменной i присваивается значение текущего курса;

   if(i>=R1) // если текущий курс >= служебной переменной R1;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break;  // иначе, выходим из оператора
     }
   if(i<=R2) // если текущий курс <= служебной переменной R2;
     {
      R1=i+(MyLevel*Point); // то присваиваем R1 новое значение равное текущему курсу + отступ,
      R2=i-(MyLevel*Point); // также присваиваем R2 новое значение = текущий курс - отступ;
     }
   else
     {
      break; // иначе выходим
     }

   Label1Buffer [0] = R1; // заносим в буфер данные R1
   Label2Buffer [0] = R2; // и R2

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

エラー

'R1' - 未宣言識別子 Mylevel.mq4 61 10

タイプ変換によるデータ損失の可能性 Mylevel.mq4 63 9

'R2' - 未宣言識別子 Mylevel.mq4 64 7

';' - 'break'はループやswitch文の中で使用する必要があります Mylevel.mq4 68 12

';' - 'break'はループやswitch文の中で使用する必要があります Mylevel.mq4 77 12


 
YarTrade:

なぜエラーが出るのか、アドバイスをお願いします。

エラー

'R1' - 未宣言識別子 Mylevel.mq4 61 10

タイプ変換によるデータ損失の可能性 Mylevel.mq4 63 9

'R2' - 未宣言識別子 Mylevel.mq4 64 7

';' - 'break'はループやswitch文の中で使用する必要があります Mylevel.mq4 68 12

';' - 'break'はループやswitch文の中で使用する必要があります Mylevel.mq4 77 12


R1, R2はそれぞれ関数内部で宣言され、そこでしか見ることができない - ローカルなものである。
breakはループやswithで使用されます。
 

mt5用のreportmanagerに似たテストレポートを 結合するプログラムはないでしょうか、reportmanagerでは開けません

 
iv1986:

もしご存知でしたら、mt5のreportmanagerに似たテストレポートを 結合するプログラムがありますが、reportmanagerはそれらを開く ことができませんか?

コードを書き換えてmt5で多通貨のテストをする方が簡単です。mt4プラットフォームでのテスト結果は間違いなく正しくなく、最終結果は決定的に歪んでしまい、分析する意味がありません。

これは23のシンボルテストのうちの1つで、すべてが明確で、ほとんど明白です。


 

楽器ごとに異なるパラメータやストラテジーを設定すれば、マルチ楽器対応EAを作ることができますか?

Vitaly Muzichenko:

コードを書き換えてmt5で多通貨のテストをする方が簡単です。mt4プラットフォームでのテスト結果は明らかに間違っており、最終結果は決定的に歪んでしまい、分析する意味がありません。

以下は、23個のシンボルに対するテストの1つで、すべてが明確で、ほとんど明白です。


また、シンボルごとに異なるストラテジーとそれに対応したコードがあれば、そのようなEAを作ることができるのでしょうか?

 
iv1986:

楽器ごとに異なるパラメータやストラテジーを設定すれば、マルチ楽器対応EAを作ることができますか?

また、楽器ごとに異なるストラテジーやコードを持っている場合、そのようなEAを作ることは可能でしょうか?

多通貨のEAを 書くことができ、それは1つのファイルになります。テスター用に異なるペアのストラテジーを1つのファイルにまとめ、オンラインで1つのチャート上で取引することも可能ですが、EAを配置したシンボルで各ストラテジーが取引するように分離することも可能です。可能性は無限大