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

 
Mihail Matkovskij:

しかし、このコードが実際の取引で使われるようになるには、かなりの微調整が必要でしょう...。

はい、了解しました。完全な自動売買に至ることは全くないだろう。自分のトレードアイデアを、長期間、多くの取引で徹底的に検証する必要があります。

テスターがいないと、アイデアを定性的にチェックすることができないのが残念なところです。戦略パラメータの最適化も残念なことに。テスターを使えば、その作業はとても簡単です。

 
Alexey Viktorov:

まさか、ドキュメントを引用することになるとは...。

......注文の終了時刻が0...

ありがとうございます、私もそう思っていませんでした。私はあまりしたことがないのですが、チケットの見本があり、それを市場で循環させているためか、問題が起きたことはありません。

 
Igor Makanu:
アレクセイ・ヴィクトロフ

ありがとうございました。

 

こんにちは。インジケーターの計算ミスを見つけようとする。Close[0]の値(以下で使用)をAlertで出力します。小数点以下4桁の数値を出力します。ブローカーは5桁 です。

Alert(Close[0]);

何が間違っているのでしょうか?ありがとうございます。

 
Oleg Bondarev:

こんにちは。インジケーターの計算ミスを見つけようとする。Close[0]の値(以下で使用)をAlertで出力します。小数点以下4桁の数値を出力します。ブローカーは5桁です。

何が間違っているのでしょうか?ありがとうございます。

また、Close[0]はどこから取得したのでしょうか?心霊系の掲示板ではないので、ソースコードを見てもらうと面白いかも...。:)

 

こんにちは、出口を探すのを手伝ってください。

#define           Pmax 1200   //размер массива по периоду
double           ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double            period[Pmax]; 
  };

int OnCalculate(const int rates_total,....)
{
   PosFib BP[Pmax];
   
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p-1].m[b];
        }

   return(rates_total);
}

コンパイル時に、ローカル変数のサイズが大きすぎる(512kb以上)という警告が出ます。

この警告はどの程度重要なのでしょうか?


 
Top2n:

こんにちは、出口を探すのを手伝ってください。

コンパイル時に、ローカル変数のサイズが大きすぎる(512kb以上)という警告が出ます。

この状況を回避する方法をアドバイスしてください

int OnCalculate(const int rates_total,....)
{
   PosFib BP[];
   ArrayResize(BP, Pmax);
....

SZY:計算にはIndicatorバッファを 使うと便利(INDICATOR_CALCULATIONS)なので、問題があれば代わりに使ってください

 
Igor Makanu:

ありがとうございました。

 

皆さん、ごきげんよう。

MQL-4に関する質問です。
ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); という関数があるのですが、これは何でしょうか?あらかじめソートされた配列の要素を検索します。配列が2次元の場合,この関数は1次元目の要素のみを検索します.

Q.配列の 2次元目にある必要な要素を求めるには、どの関数または言語構文を使えばよいか。2つの行を持つ2次元の配列があります。

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
どうすれば、上の行ではなく、下の行に欲しい値を持つ配列要素を見つけることができるでしょうか?ArrayBsearch()は最上段のみを検索するため。
ご協力ありがとうございました。

 
ANDREY:

皆さん、ごきげんよう。

MQL-4に関する質問です。
ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND); という関数があるのですが、これは何でしょうか?あらかじめソートされた配列の要素を検索します。配列が2次元の場合,この関数は1次元目の要素のみを検索します.

Q.配列の 2次元目にある必要な要素を求めるには、どの関数または言語構文を使えばよいか。2つの行を持つ2次元の配列があります。

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
どうすれば、上の行ではなく、下の行に欲しい値を持つ配列要素を見つけることができるでしょうか?ArrayBsearch()は最上段のみを検索するため。
ありがとうございました。

MQL4では、この方法しかありません。

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value1 = 3;
input double value2 = 8;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  double bufer[size2];
  
  int i;
  
  int index;
  
  string str;
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[0, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value1, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[0, i] = bufer[i];
    str += (string)array[0, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[0]: {" + str + "}");
  
  Print("value1 array[0]["+(string)index+"]: ", array[0][index]);
  
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[1, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value2, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[1, i] = bufer[i];
    str += (string)array[1, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[1]: {" + str + "}");
  
  Print("value2 array[1]["+(string)index+"]: ", array[1][index]);
}
//+------------------------------------------------------------------+

結果

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: value2 array[1][6]: 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[1]:{1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: value1 array[0][2]: 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[0]:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


ファイル: