初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1345 1...133813391340134113421343134413451346134713481349135013511352...1504 新しいコメント Igor Makanu 2021.09.12 20:43 #13441 Vitaly Muzichenko #:繰り返しになりますが、次のコピーを読み込む際に、プレフィックスを変更する必要があるのでしょうか? その目的は何ですか? ボタンを作成し、窓の外からコントロールすることができます。 どうなるんだろう Vitaly Muzichenko 2021.09.12 21:05 #13442 Igor Makanu #:その目的は何ですか?また、ボタンを作成し、ウィンドウの外からコントロールすることも可能です。なんだろう よくわかりませんが、サブウィンドウに作成し、クリックするとこのサブウィンドウの番号を取得する、というような感じでいいと思います。何も描画する必要はなく、クリックするとAlertにサブウィンドウの番号に関する情報が表示されるボタンがあるだけです。 Igor Makanu 2021.09.12 21:32 #13443 Vitaly Muzichenko #:よくわかりませんが、サブウィンドウで作成し、それをクリックするとサブウィンドウの番号が表示される、という方法です。何も描画する必要はなく、クリックするとAlertにサブウィンドウの番号に関する情報が表示されるボタンがあるだけです。 は、最初のソースで確認しました。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #include <Controls\Button.mqh> CButton button; //--- indicator buffers double Label1Buffer[]; input int MASlow = 21; // Период медленной МА input int MAFast = 8; // Период быстрой МА //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping string short_name = MQLInfoString(MQL_PROGRAM_NAME) + "=Set (" + (string)MASlow + "/" + (string)MAFast + ")"; IndicatorSetString(INDICATOR_SHORTNAME, short_name); // IndicatorSetString(INDICATOR_SHORTNAME, "IndicatorSetString() Demo"); SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA); srand(GetTickCount()); long c_id = ChartID(); int c_wf = ChartWindowFind(); Print(c_id, " / ", c_wf); button.Create(c_id, "button" + (string)rand(), c_wf, 10, 10, 100, 100); button.Text("Button"); //--- 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[]) { for(int i = prev_calculated == 0 ? 0 : prev_calculated - 1; i < rates_total; i++) { Label1Buffer[i] = close[i]; } return(rates_total); } //+------------------------------------------------------------------+ このインジケータをデフォルトのパラメータで複数回実行すると、ボタンはサブウィンドウの最初のインジケータにのみ表示されます。 が、起動中にパラメータを変更すると全てOKになる いっぱんにわからなくなる Vitaly Muzichenko 2021.09.12 21:41 #13444 Igor Makanu #:最初のソースで確認しました。このインディケータをデフォルトのパラメータで複数回実行すると、ボタンはサブウィンドウの最初のインディケータにのみ 表示されます。が、起動中にパラメータを変更すると全てOKになるいっぱんにわからなくなる そこで質問ですが、設定に入らずに、自動的にパラメータを変更する方法はありますか? 今のところ何も動いていない・・・。 --- 追伸:理想はともかく、残念なことに input long MASlow = TimeLocal(); // Igor Makanu 2021.09.12 21:53 #13445 Vitaly Muzichenko #:今のところうまくいっていない・・・。 そして、そうならない。 を追加しました。 int OnInit() { Print(__FUNCTION__); あるインジケータを置くと、ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまりインジケータの1つのコピーだけが本当に実行されていて、他のインジケータは単なるグラフィックシェルである。 Vitaly Muzichenko 2021.09.12 22:09 #13446 Igor Makanu #:となってしまい、うまくいきません。を追加しました。インジケータを置いた - ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまり、インジケータの1つのコピーだけが実際に実行されており、他のインジケータは単なるグラフィックシェルである。 そういうものなんです。mt5のアーキテクチャがおかしいのでしょう。mt4端末は正常に動作しています。 mt5でそうすることにした場合、存在するようで存在しないので、同じ入力パラメータでインジケータのコピーを実行することを禁止することになります。 Artyom Trishkin 2021.09.13 01:11 #13447 Vitaly Muzichenko #:そういうことなんです。mt5のアーキテクチャは滅茶苦茶なんだろうな。mt4ではすべて正常に動作しています。mt5でそう決めたのであれば、あるようで実はないのだから、同じ入力パラメータを持つインジケータコピーの起動を禁止すべきでしたね。 インジケーターの計算部分は、グラフィカルなものと同じではありません。したがって、計算部分はどれも同じです。グラフィカルなものがいくつかあります。 1つのインジケーターで全てのサブウィンドウを検索し、サブウィンドウ番号を記載したラベルを貼ることはできないのでしょうか?同時に、チャートのサブウィンドウの数をタイマーでキャッチするために:増加 - 新しいサブウィンドウのラベルに追加します。でも、どんなインジケーターが配置されているかも検索してみてください。もし違うのであれば、追加しないでください...。 ただ、未検証のアイデアです。 ZS.「曲率」については、納得がいきません。20の同じ指標に対して20の計算部があるより、20の同じ指標に対して1つの計算部がある方が良い。 Vitaly Muzichenko 2021.09.13 08:17 #13448 Artyom Trishkin #:指標の計算部分はグラフ部分と同じではありません。したがって、計算部分はどれも同じです。グラフィカルなものがいくつかあります。 1つのインジケーターで全てのサブウィンドウを探し、サブウィンドウ番号の入ったラベルを貼ることはできないのでしょうか?同時に、チャートのサブウィンドウの数をタイマーでキャッチするために:増加 - 新しいサブウィンドウのラベルに追加します。でも、どんなインジケーターが配置されているかも検索してみてください。もし違うのであれば、追加しないでください...。ただ、未検証のアイデアです。ZS.「曲率」については、納得がいきません。20の同じ指標に対して20の計算部があるより、20の同じ指標に対して1つの計算部がある方が良い。 した、ボタンに反応しない - OnChartEventコピーがトリガーされず、サブウィンドウの番号を理解しない。 とにかく、以下がうまくいかない部分であり、それとともに残りのコードもあります。 トレーディング、自動売買システム、ストラテジーテスティングに関するフォーラム 初心者からのFAQ MQL5 MT5 MetaTrader 5 イゴール・マカヌ, 2021.09.12 21:53 しない に追加されました。 int OnInit() { Print(__FUNCTION__); あるインジケータを置くと、ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまりインジケータの1つのコピーだけが実際に動作しており、他のインジケータは単なるグラフィックシェルである。 Alexey Viktorov 2021.09.13 08:53 #13449 Vitaly Muzichenko #:した、ボタンに反応しない - OnChartEventのコピーが機能せず、サブウィンドウの番号を理解しない。とにかく、以下はうまくいかない部分と、それに伴う残りのコードです。 しかし!!!このインジケータを2-3個、「Debug.tpl」という名前でテンプレートを作り、デバッグを開始すると、OnInit()が正常に動作するようになります。 一般的には、こんな実験をしてみました。 OnInit()で#propertyを最大にしたのは、インディケータが作成されていない間にOnInit()が実行され、ウィンドウ内のインディケータの数に応じて短い名前が作成されることを期待してのことです。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 //#property indicator_label1 "Label1" //#property indicator_type1 DRAW_LINE //#property indicator_color1 clrRed //#property indicator_style1 STYLE_SOLID //#property indicator_width1 2 //--- indicator buffers double Label1Buffer[]; input int MASlow = 21; // Период медленной МА input int MAFast = 8; // Период быстрой МА //input string shortName = "1"; // Префикс… long chart_id = ChartID(); string short_name = ""; /********************************************************************\ | Custom indicator initialization function | \********************************************************************/ int OnInit() { //--- indicator buffers mapping long windows_total = ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL); short_name = (string)windows_total; Print(short_name); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); PlotIndexSetInteger(0, PLOT_LINE_COLOR, clrRed); PlotIndexSetInteger(0, PLOT_LINE_STYLE, STYLE_SOLID); PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 2); PlotIndexSetString(0, PLOT_LABEL, "Label1"); IndicatorSetString(INDICATOR_SHORTNAME, short_name); SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA); return(INIT_SUCCEEDED); }/******************************************************************/ しかし、それは何の役にも立たなかった。 1枚目のコピーを開始する インジケータ名 2........................... 2つ目のコピーを開始する - インジケータ名は両方のインジケータで2のままです。 デバッグを開始すると、なんと!?まだロードされていないインジケータがすでに印刷されている...2行目と3行目を読んでください...。 なんでやねん OnInit()に入るとデバッグが止まり、windows_total変数にゴミが入り、short_nameが空文字列のまま...。 ハイ......でも、もう全部印刷されてるんですけど......どうしてですか? そして、short_nameはすでに変更されています。 その結果、デバッグモードでインジケータをフルロードした後、インジケータは次のような名前になります。 このようなバグは、開発者の注意を喚起すべきかもしれませんね...。 Mykhailo Turovskyi 2021.09.16 08:36 #13450 こんにちは、私は間違った場所にいるかもしれませんが、私はと呼ばれるセクションを参照してください: "初心者からの質問MQL5 MT5 MetaTrader 5"。 そこで私の質問は:私はテストのために市場からデモEAをダウンロードしていた私は今何をしたMT5は、デモをダウンロードすることはできません。 MT4は問題なく、MT5はありません何が理由ですか? 1...133813391340134113421343134413451346134713481349135013511352...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
繰り返しになりますが、次のコピーを読み込む際に、プレフィックスを変更する必要があるのでしょうか?
その目的は何ですか?
ボタンを作成し、窓の外からコントロールすることができます。
どうなるんだろう
その目的は何ですか?
また、ボタンを作成し、ウィンドウの外からコントロールすることも可能です。
なんだろう
よくわかりませんが、サブウィンドウに作成し、クリックするとこのサブウィンドウの番号を取得する、というような感じでいいと思います。何も描画する必要はなく、クリックするとAlertにサブウィンドウの番号に関する情報が表示されるボタンがあるだけです。
よくわかりませんが、サブウィンドウで作成し、それをクリックするとサブウィンドウの番号が表示される、という方法です。何も描画する必要はなく、クリックするとAlertにサブウィンドウの番号に関する情報が表示されるボタンがあるだけです。
は、最初のソースで確認しました。
このインジケータをデフォルトのパラメータで複数回実行すると、ボタンはサブウィンドウの最初のインジケータにのみ表示されます。
が、起動中にパラメータを変更すると全てOKになる
いっぱんにわからなくなる
最初のソースで確認しました。
このインディケータをデフォルトのパラメータで複数回実行すると、ボタンはサブウィンドウの最初のインディケータにのみ 表示されます。
が、起動中にパラメータを変更すると全てOKになる
いっぱんにわからなくなる
そこで質問ですが、設定に入らずに、自動的にパラメータを変更する方法はありますか?
今のところ何も動いていない・・・。
---
追伸:理想はともかく、残念なことに
今のところうまくいっていない・・・。
そして、そうならない。
を追加しました。
あるインジケータを置くと、ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまりインジケータの1つのコピーだけが本当に実行されていて、他のインジケータは単なるグラフィックシェルである。
となってしまい、うまくいきません。
を追加しました。
インジケータを置いた - ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまり、インジケータの1つのコピーだけが実際に実行されており、他のインジケータは単なるグラフィックシェルである。
そういうものなんです。mt5のアーキテクチャがおかしいのでしょう。mt4端末は正常に動作しています。
mt5でそうすることにした場合、存在するようで存在しないので、同じ入力パラメータでインジケータのコピーを実行することを禁止することになります。
そういうことなんです。mt5のアーキテクチャは滅茶苦茶なんだろうな。mt4ではすべて正常に動作しています。
mt5でそう決めたのであれば、あるようで実はないのだから、同じ入力パラメータを持つインジケータコピーの起動を禁止すべきでしたね。
インジケーターの計算部分は、グラフィカルなものと同じではありません。したがって、計算部分はどれも同じです。グラフィカルなものがいくつかあります。
1つのインジケーターで全てのサブウィンドウを検索し、サブウィンドウ番号を記載したラベルを貼ることはできないのでしょうか?同時に、チャートのサブウィンドウの数をタイマーでキャッチするために:増加 - 新しいサブウィンドウのラベルに追加します。でも、どんなインジケーターが配置されているかも検索してみてください。もし違うのであれば、追加しないでください...。
ただ、未検証のアイデアです。
ZS.「曲率」については、納得がいきません。20の同じ指標に対して20の計算部があるより、20の同じ指標に対して1つの計算部がある方が良い。
指標の計算部分はグラフ部分と同じではありません。したがって、計算部分はどれも同じです。グラフィカルなものがいくつかあります。
1つのインジケーターで全てのサブウィンドウを探し、サブウィンドウ番号の入ったラベルを貼ることはできないのでしょうか?同時に、チャートのサブウィンドウの数をタイマーでキャッチするために:増加 - 新しいサブウィンドウのラベルに追加します。でも、どんなインジケーターが配置されているかも検索してみてください。もし違うのであれば、追加しないでください...。
ただ、未検証のアイデアです。
ZS.「曲率」については、納得がいきません。20の同じ指標に対して20の計算部があるより、20の同じ指標に対して1つの計算部がある方が良い。
した、ボタンに反応しない - OnChartEventコピーがトリガーされず、サブウィンドウの番号を理解しない。
とにかく、以下がうまくいかない部分であり、それとともに残りのコードもあります。
トレーディング、自動売買システム、ストラテジーテスティングに関するフォーラム
初心者からのFAQ MQL5 MT5 MetaTrader 5
イゴール・マカヌ, 2021.09.12 21:53
しない
に追加されました。
int OnInit() { Print(__FUNCTION__);あるインジケータを置くと、ログにOnInitが表示されるが、次のインジケータはすでに沈黙している、つまりインジケータの1つのコピーだけが実際に動作しており、他のインジケータは単なるグラフィックシェルである。
した、ボタンに反応しない - OnChartEventのコピーが機能せず、サブウィンドウの番号を理解しない。
とにかく、以下はうまくいかない部分と、それに伴う残りのコードです。
しかし!!!このインジケータを2-3個、「Debug.tpl」という名前でテンプレートを作り、デバッグを開始すると、OnInit()が正常に動作するようになります。
一般的には、こんな実験をしてみました。
OnInit()で#propertyを最大にしたのは、インディケータが作成されていない間にOnInit()が実行され、ウィンドウ内のインディケータの数に応じて短い名前が作成されることを期待してのことです。
しかし、それは何の役にも立たなかった。
1枚目のコピーを開始する
インジケータ名 2...........................
2つ目のコピーを開始する - インジケータ名は両方のインジケータで2のままです。
デバッグを開始すると、なんと!?まだロードされていないインジケータがすでに印刷されている...2行目と3行目を読んでください...。
なんでやねん
OnInit()に入るとデバッグが止まり、windows_total変数にゴミが入り、short_nameが空文字列のまま...。
ハイ......でも、もう全部印刷されてるんですけど......どうしてですか?
そして、short_nameはすでに変更されています。
その結果、デバッグモードでインジケータをフルロードした後、インジケータは次のような名前になります。
このようなバグは、開発者の注意を喚起すべきかもしれませんね...。