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

 

ありがとうございます、でも彼女は

Vitaly Muzichenko:

アイカスタムから支援


iCustomはiCustomのための良いソリューションですが、iCustomは常に指標のコード全体を実行し、私はEAで多くの指標のパラメータを必要とする場合(そしてそれはある)、1つの指標の計算の代わりに我々は、現在のティックが欠落するまで大幅にプロセスを遅くすることができます、私は定義済みの変数を忘れて しまった......。

int rates_total=Bars;

定義済みグローバル変数

int prev_calculated=0;

配列の要素数でクラッシュ

 
ijonhson:

申し訳ありませんが、なぜoncalculateが定義済み 変数の値を渡す必要があるのか、それがグローバルで利用可能である場合は理解できません。

一例をご覧ください。

//+-------------------------------------------------------+
//|Параметры функции                             PROBA.mq4|
//+-------------------------------------------------------+
#property   strict

void OnStart()
{
 Alert(Сумма(2,5));
 
 int Сум=0;
 Сумма(2,5,Сум);  // Передаем в функцию 2 числа и получаем сумму
 Alert(Сум);
}

int Сумма(int a, int b)
{
  return a+b;
}

void Сумма(int a, int b, int & s)
{
  s= a+b;
}

関数のパラメータは、入力(関数に渡すもの)と出力(関数が返すもの)があります。

 
ijonhson: int rates_total=Bars; int prev_calculated=0;

これらの変数は指標線 全体を計算するのに必要なものですが、1つの値が必要です。すべてがよりシンプルになりました。指標プログラムを分析し、どの計算式が使われているかを判断する。そして、Expert Advisorでこの数式を使用します。

 

みんな、このアルゴリズムを実装する方法を教えてくれ。

ボリュームを持つ時系列が存在する Volume

Volume[1]が以前のVolume[1]の各バーより 大きいかどうかを比較したいので、外部変数(extern int)で以前のバーのウィンドウ(数)を指定します。


難しいことでなければ、コードサンプルを書く

 
John Smith:

みんな、このアルゴリズムを実装する方法を教えてくれ。

ボリュームを持つ時系列が存在する Volume

Volume[1]が以前のVolume[1]の各バーより 大きいかどうかを比較したいので、外部変数(extern int)で以前のバーのウィンドウ(数)を指定します。


難しいことでなければ、コードサンプルを書く

  for(int i=1; i<NumBar; i++) {
    ArrayResize(Buf, i);
    Buf[i-1] = Volume[i];
  }

 double min= Buf[ArrayMinimum(Buf)];
 double max= Buf[ArrayMaximum(Buf)];

 if(max < Volume[0]) { ... }
 
STARIJ:

効果はあったのでしょうか?以前はどうだったのでしょうか?


エラーなく動作しました、ctrl+hによる自動置換で自分で削除していたようで、気がつきませんでした>_<。とにかく、イルミナティの仕業でしょう。ありがとうございました。

 
John Smith:

みんな、このアルゴリズムを実装する方法を教えてくれ。

ボリュームを持つ時系列が存在する Volume

Volume[1]が以前のVolume[1]の各バーより 大きいかどうかを比較したいので、外部変数(extern int)で以前のバーのウィンドウ(数)を指定します。


難しいことでなければ、コードサンプルを書く

難しいことではありません。記憶を頼りに膝に書いてみました...(見落としがあるかもしれません)。

//+------------------------------------------------------------------+
bool IsLastVolumeTheLargest(const string symbol_name, const ENUM_TIMEFRAMES timeframe,const int start_pos,const int count)
  {
   long array[];  // Массив для хранения объёмов
   //--- если скопировалось меньше, чем нужно, вернём false
   if(CopyTickVolume(symbol_name,timeframe,start_pos,count,array)<count) return false;
   //--- вернём флаг того, что максимальный объём находится в последней ячейке массива (соответствует индексу start_pos)
   return ArrayMaximum(array)==count-1;
  }
//+------------------------------------------------------------------+
 

こんにちは。ファイルの共有ができないタスク - МТ4 (MQL4) テスターでの手動テスト中に、古い期間(例えばM20)のファイルをМ1に生成する必要があります。そのために、PeriodConverterスクリプトをベースにしたインジケータを書きました。テストモードでは、ファイル(EURUSD20.csv)をHistoryフォルダに直接保存できないため、全端末の共有フォルダである \MetaQuotesTerminalCommon に保存されます。次に、標準のM1チャートで動作するループスクリプトは、ファイルEURUSD20.csvから、フォルダHistoryにあるファイルEURUSD20.hstにデータをコピーします。 同時にテスターのインディケータで開かれると、ファイルEURUSD20.csvはスクリプトで開くことができません(5004 ERR_FILE_CANNOT_OPEN ファイルオープンエラー)。テスターからインジケータを外しても、スクリプトのファイルは問題なく開かれ、コピーされます。ExtHandle=FileOpen(c_symbol+(string)20+".のようにインジケータでファイルを開きます。
ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
私の間違いをご指摘ください。

 
tvv:

こんにちは。ファイルの共有ができないタスク - МТ4 (MQL4) テスターでの手動テスト中に、古い期間(例えばM20)のファイルをМ1に生成する必要があります。そのために、PeriodConverterスクリプトをベースにしたインジケータを書きました。テストモードでは、ファイル(EURUSD20.csv)をHistoryフォルダに直接保存できないため、全端末の共有フォルダである \MetaQuotesTerminalCommon に保存されます。次に、標準のM1チャートで動作するループスクリプトは、ファイルEURUSD20.csvから、フォルダHistoryにあるファイルEURUSD20.hstにデータをコピーします。 同時にテスターのインディケータで開かれると、ファイルEURUSD20.csvはスクリプトで開くことができません(5004 ERR_FILE_CANNOT_OPEN ファイルオープンエラー)。テスターからインジケータを外しても、スクリプトのファイルは問題なく開かれ、コピーされます。ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_COMMON);
ファイルは以下のようにスクリプトでオープンされます: ExtHandleR=FileOpen("EURUSD20.Csv", "EURUSD20.Csv", "EURUSD20.Csv"; "EURUSD20.Ccv").csv",FILE_BIN|FILE_READ|FILE_SHARE_READ|FILE_COMMON);
私の間違いを ご指摘ください。

指摘されたのでしょうか?

 
Alexey Viktorov:

指定したのでしょうか?

理解できない。このオプションは、ファイル - \MetaQuotesTerminal⇄Common の場所を示します。このオプションがないと、テスターで生成されたファイルを取得することができません。このオプションがない場合、ファイルはMQL4™Filesで検索され、テスターからのファイルをそこに置くことはできません。