//+------------------------------------------------------------------+bool IsReadyForCalculate(constint rates_total,constint prev_calculated,constdatetime &time[])
{
//--- подключение терминала и синхронизация данныхif(TerminalInfoInteger(TERMINAL_CONNECTED))
if(!SymbolIsSynchronized(_Symbol) ||
!SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) return(false);
//--- некорректное значение prev_calculatedif(prev_calculated<0) return(false);
//---if(prev_calculated==0) prev_time = time[rates_total-1];
//--- произошли изменения в данных, но prev_calculated не сброшен в 0//--- или изменение времени не соответствует одному баруif( (rates_total!=prev_calculated+1 &&
rates_total!=prev_calculated &&
prev_calculated!=0) ||
(time[rates_total-1]>prev_time &&
time[rates_total-2]!=prev_time))
{
loc_prev_calculated = 0; // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что естьreturn(true);
}
//--- корректный сценарийif( (rates_total==prev_calculated || rates_total==prev_calculated+1 || prev_calculated==0) &&
(time[rates_total-1]==prev_time || time[rates_total-2]==prev_time))
{
loc_prev_calculated = prev_calculated;
return(true);
}
//--- return(false); // верну false, пока не знаю, какие варианты ещё могут быть
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,constint prev_calculated,constdatetime &time[],constdouble &open[],constdouble &high[],constdouble &low[],constdouble &close[],constlong &tick_volume[],constlong &volume[],constint &spread[])
{
if(!IsReadyForCalculate(rates_total,prev_calculated,time)) return(0);
//---// вызов функции зигзага//--- return value of prev_calculated for next call
prev_time = time[rates_total-1];
return(rates_total);
}
//+------------------------------------------------------------------+
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
エムティーフォー
このアイテムは何ですか?どこにも説明がないのですが?
デフォルトで無効にするにはどうしたらいいですか?
マニュアルにあるcryptoの例を実行しようとしていますが、CRYPT_DES メソッドの代わりにCRYPT_AES256を 使用しています。結果はCryptEncode メソッド後にエラー4029が 発生
マニュアルにあるcryptoのサンプルを実行しようとしていますが、CRYPT_DES メソッドの代わりにCRYPT_AES256を 使用しています。その結果、CryptEncode メソッド後にエラー4029が 発生する
図式化した。もっと丁寧なキーが必要だ)
こんにちは。
私は頭が悪く、自分では解決できないので、何が問題なのか、少なくとも正しい方向を示すようなアドバイスをお願いします。
異なる指標がシンクロして歴史の断片を示し始めている。毎日ではなく、時々起こります。
インジケータが動的に読み込まれた履歴を正しく処理しないことが原因だと思いました。更新履歴のインジケータの正しい更新に関することはすべて試したのですが、他にどうすればよいのかわかりません。
アルパリ・ブローカー2020.03.13よりMT5 ビルド2363。
スクリーンショットでは、まず "失われた "バージョンを表示しています。
その後、手動アップデート後に正しいバージョンになります。
こんにちは。
MQL5でこんな質問があります。OnChartEvent()関数を 強制的に起動させるにはどうしたらよいですか?何か標準的な方法があるのでしょうか?
そのために、ChartNavigate()関数を使い、OnChartEvent()から実行するようにしています。しかし、動作が不安定です。多くのティックが入ると、なぜかChartNavigate()を呼び出した後、OnChartEvent()が再起動しないことがしばしばあります。ChartNavigate()とtickの到着速度がどう関係しているのか理解できませんが、それにしてもこの現象は起こります。
こんにちは。
私は頭が悪く、自分では解決できないので、何が問題なのか、少なくとも正しい方向を示すようなアドバイスをお願いします。
最近、無駄に追加したのかも...。
削除に置き換えた。
return(false);
今後も注目していきたい。
MT5に標準装備されているインジケーターについて教えてください。上のスクリーンショットのように、バタバタしてしまうのでしょうか?
皆さんこんにちは!
ダブルOnTester()関数とTesterStatistics( )関数をマスターしています。MT4のテスターで、毎日10時、16時、20時、01時に1つずつ注文を出すという簡単なコードを書きました。テスト終了時に、TesterStatistics( )関数は 最小のバランス値(つまり相対的なドローダウン)を返します。
課題
TesterStatistics( ) は、すべてのオープンオーダーの最小のバランス値を返します。
質問
ある特定の時間、 例えば16:00にオープンした注文に対してのみ、TesterStatistics()が最小の残高値を返すようにするには、どのように言語構成を使用すればよいですか?このとき、コードで指定されたすべての命令を同時にテストする必要があります。つまり、TesterStatistics は 16:00 にオープンした 1 つの注文の残高推移を追跡し、テスト終了時に 16:00 にオープンした注文の最小残高値のみを表示する必要があります。
私のコードに必要な言語コンストラクトを挿入していただければ幸いです。自分の問題を解決するアルゴリズムがすぐに理解できるようになる。
以下は私のコードです。
皆さん、ごきげんよう。
ダブルのOnTester()とTesterStatistics()をマスターしました。MT4のテスターで、毎日10時、16時、20時、01時に1つずつ注文を出すという簡単なコードを書きました。テスト終了後、関数TesterStatisticsは最小のバランス値(つまり相対的なドローダウン)を返します。
課題
TesterStatistics( ) は、すべての未決済注文の最低残高値を返します。
質問
TesterStatistics()が、ある特定の時間、 例えば16:00にオープンした注文に対してのみ、最小の残高値を返すようにするには、どのような言語構成を使用すればよいのでしょうか。このとき、コードで指定されたすべての命令を同時にテストする必要があります。つまり、TesterStatistics( )は16:00にオープンした1つの注文のみの残高推移を追跡し、16:00にオープンした注文のみの残高の最小値を返さなければならないのです。
私のコードに必要な言語を挿入していただければ幸いです。これによって、私の問題を解決するためのアルゴリズムが非常に早く理解できるようになります。
以下は私のコードです。
何ですか?
こんなものなのでしょうか?
ご感想をお寄せいただきありがとうございました。おかげさまで、グローバル変数 Hの宣言と一緒にTesterStatistics( ); 関数を指定することに気がつきました。は私のミスです。直しました。