MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 838 1...831832833834835836837838839840841842843844845...1953 新しいコメント Alexandr Sokolov 2019.05.08 05:18 #8371 インジケーターのHighとLowの値を空にするにはどうしたらいいですか?例えば、最大値を100、最小値を0に設定し、すべてを可視化するインジケーターが必要な場合、どのように整理すればよいでしょうか。問題は、いくつかのモードを持つインジケータを書き、そのうちの1つは最大値と最小値を使用しますが、入力パラメータでモードを切り替えた後、最大値は100のままで、最小値も0になることです。 MQL5 Alexander Layzerevich 2019.05.08 05:48 #8372 Alekseu Fedotov:すでに、Deviation(Kanal) が返す値をEnvelopes(......) 関数に呼び出して渡していますね。 そして、Envelopes(......) 関数自体で、最後のパラメータを宣言します。 このように ありがとうございます、より理解できました。 Alexander Layzerevich 2019.05.08 07:36 #8373 アドバイスに従ってMT5用のコードを少し修正したところ、以下のようになりました。 input string Parametrs_Indicator = "Настройки Индикатора";// Настройки Индикатора input ENUM_TIMEFRAMES Time_Frames = PERIOD_M5; // Временной период int Ma_Period = 120; // Период int Ma_Shift = 0; // Cдвиг средней ENUM_MA_METHOD Ma_Method = MODE_SMMA; // Mетод усреднения ENUM_APPLIED_PRICE Applied_Price = PRICE_CLOSE; // Tип цены //************************************************************************************************/ void OnTick() { //--------------------------------------------------- double Signal_Sell = Envelopes(0, Deviation(1)); // Сигнал на Продажу Print ("Signal_Sell = ", Signal_Sell); if (Signal_Sell < 0) { Print("Signal_Sell error #",GetLastError()); } double Signal_Buy = Envelopes(1, Deviation(1)); // Сигнал на Покупку Print ("Signal_Buy = ", Signal_Sell); if (Signal_Buy < 0) { Print("Signal_Buy error #",GetLastError()); } //--------------------------------------------------- double Signal_Sell_2 = Envelopes(0, Deviation(2)); Print ("Signal_Sell_2 = ", Signal_Sell); if (Signal_Sell_2 < 0) { Print("Signal_Sell_2 error #",GetLastError()); } double Signal_Buy_2 = Envelopes(1, Deviation(2)); Print ("Signal_Buy_2 = ", Signal_Sell); if (Signal_Buy_2 < 0) { Print("Signal_Buy_2 error #",GetLastError()); } //--------------------------------------------------- } //************************************************************************************************/ double Envelopes(int buff, double _Deviation) { double buf[1]; int handle=iEnvelopes(Symbol(), TimeFrames, Ma_Period, Ma_Shift, Ma_Method, Applied_Price, _Deviation); if(handle<0) { Print("Failed to create handle iEnvelopes, Error: ",GetLastError()); return(WRONG_VALUE); } else { if(CopyBuffer(handle,buff,0,1,buf)<0) { Print("Failed to copy data from the indicator iEnvelopes, Error: ",GetLastError()); return(WRONG_VALUE); } } return(buf[0]); } //************************************************************************************************/ ただ今は、なぜ毎ティックごとに 最初の計算値があちこちに書き込まれるのかが理解できません。 どうすれば直るのか、教えてください。 Artyom Trishkin 2019.05.08 07:44 #8374 Alexander Layzerevich:アドバイスに従ってMT5用のコードを少し修正したところ、以下のようになりました。 ただ今は、なぜ1ティックごとに 1つの計算値があちこちに書き込まれるのかが理解できません。 //--------------------------------------------------- double Signal_Sell = Envelopes(0, Deviation(1)); // Сигнал на Продажу Print ("Signal_Sell = ", Signal_Sell); if (Signal_Sell < 0) { Print("Signal_Sell error #",GetLastError()); } double Signal_Buy = Envelopes(1, Deviation(1)); // Сигнал на Покупку Print ("Signal_Buy = ", Signal_Sell); if (Signal_Buy < 0) { Print("Signal_Buy error #",GetLastError()); } //--------------------------------------------------- double Signal_Sell_2 = Envelopes(0, Deviation(2)); Print ("Signal_Sell_2 = ", Signal_Sell); if (Signal_Sell_2 < 0) { Print("Signal_Sell_2 error #",GetLastError()); } double Signal_Buy_2 = Envelopes(1, Deviation(2)); Print ("Signal_Buy_2 = ", Signal_Sell); if (Signal_Buy_2 < 0) { Print("Signal_Buy_2 error #",GetLastError()); } //---------------------------------------------------すぐにわかります。強調表示されなくても Alexander Layzerevich 2019.05.08 09:20 #8375 Artyom Trishkin:すぐに目に飛び込んでくる。ハイライトなしでもありがとうございます。 WinProject 2019.05.08 12:51 #8376 Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 WinProject(ウィンプロジェクト) 2019.05.07 18:38 同じコードがMT4で動作し、MT5で動作しない理由を教えてください。MT5では変数strNumは常に=1ですが、MT4では++カウンターがそのまま動作し、strNum=ファイル内の行数となっています。 int strNum; void OnStart() { FileNum(); Alert1(); } void FileNum() { int handle=FileOpen("File.csv",FILE_CSV|FILE_READ,';'); strNum=0; while(!FileIsEnding(handle)) { FileReadString(handle); strNum++; if(FileIsEnding(handle)==true) break; } FileClose(handle); } void Alert1() { Alert (strNum); } 自分への回答ですが、MT5で配列や構造体にファイルを開いたり読み込んだりするときにループがない人には便利かもしれませんね。MT5では、MT4と異なり、.csvファイルを読み込む際に、ファイルオープンフラグ FILE_ANSIを追加で設定 する必要があります。つまり、MT5では以下のようなラインになるはずです。int handle=FileOpen("File.csv",FILE_READ|FILE_ANSI|FILE_CSV,";");なぜだろう、わからない、もしかしたら誰か知っているかも? Seric29 2019.05.08 18:54 #8377 EAのログにこのような形式の通知 - uninit reason 3(通知はTMが切り替わったため)が表示されても、ロボットがチャートから削除されない場合、変数の値や受信したすべての計算は保持されますか。 ukrop1203 2019.05.08 22:50 #8378 理由は不明ですが、"OrderSend error 130 "が発生しました。プログラムはデモ口座のストラテジーテスターで実行されているので、私が理解する限り、ブローカーからの制限はありません。テスト中に一定の間隔でこのエラーが発生し、ストップはすべての取引でATRのパーセンテージで固定されていますが、正常に発注されるものとされないものがあります。 Print("!!!long level = ", level, ", stop = ", NormalizeDouble(level - stop, Digits)); if(Bid < level) { tickets[orders] = OrderSend(symbol, OP_BUYSTOP, volume, level, 5, NormalizeDouble(level - stop, Digits), NormalizeDouble(level + take, Digits), NULL, magicNum, TimeLocal() - TimeLocal() % 1800 + 7200, clrBlue); orderLevels[orders] = level; directions[orders] = true; orderIsTheLast[orders] = lastOrder; firstTouchTimes[orders] = firstTouchTime; orders++; } else { tickets[orders] = OrderSend(symbol, OP_BUYLIMIT, volume, level, 5, NormalizeDouble(level - stop, Digits), NormalizeDouble(level + take, Digits), NULL, magicNum, TimeLocal() - TimeLocal() % 1800 + 7200, clrBlue); orderLevels[orders] = level; directions[orders] = true; orderIsTheLast[orders] = lastOrder; firstTouchTimes[orders] = firstTouchTime; orders++; } 何度も注文を断られ、合格することもありますが...。 Alexandr Sokolov 2019.05.10 00:47 #8379 CodeBaseで同じコードを異なる言語の読者向けに公開するにはどうしたらよいでしょうか (例えば、対応する言語のマーケットプレイスでフォームに記入するにはどうしたらよいでしょうか)。 私はすでにCodeBaseでこれを見たことがありますが、以下に例を示します。 どうすれば同じことができるのか? Konstantin Lebedev 2019.05.10 06:52 #8380 例えば、マウスでローソク足の目盛りを限界まで小さくすると、インジケータの読みが変わりますが、インジケータコード内の何千ものローソク足は、ローソク足のサイズの変化について何も言っていません。 例えば、4時方向のボリュームを縮小して表示すると一つの値になりますが、ローソク足の目盛りをわずかに大きくすると、別の設定が正しいものとみなされるのです。 1...831832833834835836837838839840841842843844845...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
インジケーターのHighとLowの値を空にするにはどうしたらいいですか?例えば、最大値を100、最小値を0に設定し、すべてを可視化するインジケーターが必要な場合、どのように整理すればよいでしょうか。問題は、いくつかのモードを持つインジケータを書き、そのうちの1つは最大値と最小値を使用しますが、入力パラメータでモードを切り替えた後、最大値は100のままで、最小値も0になることです。
MQL5
すでに、Deviation(Kanal) が返す値をEnvelopes(......) 関数に呼び出して渡していますね。
そして、Envelopes(......) 関数自体で、最後のパラメータを宣言します。
このように
ありがとうございます、より理解できました。
アドバイスに従ってMT5用のコードを少し修正したところ、以下のようになりました。
ただ今は、なぜ毎ティックごとに 最初の計算値があちこちに書き込まれるのかが理解できません。

どうすれば直るのか、教えてください。アドバイスに従ってMT5用のコードを少し修正したところ、以下のようになりました。
ただ今は、なぜ1ティックごとに 1つの計算値があちこちに書き込まれるのかが理解できません。
すぐにわかります。強調表示されなくても
すぐに目に飛び込んでくる。ハイライトなしでも
ありがとうございます。
MQL4に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。
WinProject(ウィンプロジェクト) 2019.05.07 18:38
同じコードがMT4で動作し、MT5で動作しない理由を教えてください。MT5では変数strNumは常に=1ですが、MT4では++カウンターがそのまま動作し、strNum=ファイル内の行数となっています。
自分への回答ですが、MT5で配列や構造体にファイルを開いたり読み込んだりするときにループがない人には便利かもしれませんね。MT5では、MT4と異なり、.csvファイルを読み込む際に、ファイルオープンフラグ FILE_ANSIを追加で設定 する必要があります。
つまり、MT5では以下のようなラインになるはずです。
なぜだろう、わからない、もしかしたら誰か知っているかも?
理由は不明ですが、"OrderSend error 130 "が発生しました。プログラムはデモ口座のストラテジーテスターで実行されているので、私が理解する限り、ブローカーからの制限はありません。テスト中に一定の間隔でこのエラーが発生し、ストップはすべての取引でATRのパーセンテージで固定されていますが、正常に発注されるものとされないものがあります。
何度も注文を断られ、合格することもありますが...。
CodeBaseで同じコードを異なる言語の読者向けに公開するにはどうしたらよいでしょうか (例えば、対応する言語のマーケットプレイスでフォームに記入するにはどうしたらよいでしょうか)。
私はすでにCodeBaseでこれを見たことがありますが、以下に例を示します。
どうすれば同じことができるのか?
例えば、マウスでローソク足の目盛りを限界まで小さくすると、インジケータの読みが変わりますが、インジケータコード内の何千ものローソク足は、ローソク足のサイズの変化について何も言っていません。 例えば、4時方向のボリュームを縮小して表示すると一つの値になりますが、ローソク足の目盛りをわずかに大きくすると、別の設定が正しいものとみなされるのです。