MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 645 1...638639640641642643644645646647648649650651652...1953 新しいコメント psyman 2018.10.04 00:56 #6441 Tarasさん、マウスクリックでフレームが変わるようなグラフの正規化は可能でしょうか? 時々、習慣でカーソルがボタンの近くにあるときにクリックしてしまうのですが、その結果はあまり好きではありません。 イベント処理の リストに適当なものがなく、CHARTEVENT_CHART_CHANGEだけが あり、具体的な説明が ありません。マウスクリックをバインドすることはできますが、私の理解では、ユーザーはシステムメニューを操作することはできず、自分でボタンを作成した場合のみです。何か簡単な解決策はないのでしょうか? Taras Slobodyanik 2018.10.04 07:37 #6442 psyman:Tarasさん、マウスクリックでフレームが変わるようなグラフの正規化は可能でしょうか? 時々、習慣でカーソルがボタンの近くにあるときにクリックしてしまうのですが、その結果はあまり好きではありません。 イベント処理の リストに適当なものがなく、CHARTEVENT_CHART_CHANGEだけ で、具体的な説明が ありません。マウスのボタンクリックをバインドすることはできますが、私の理解では、ユーザーはシステムメニューで作業することはできません、彼自身のボタンを作成する場合のみ。何か簡単な解決策はないのでしょうか?つまり、チャート上のいくつかの "タップゾーン "をクリックすること? できます。カーソル座標とマウスボタンのクリックを記録しておく必要があります。 チャートイベント_マウス_ムーブ psyman 2018.10.04 08:37 #6443 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム MQL4に関する初心者向けの質問、アルゴリズムやコードに関するヘルプやディスカッションなど タラス・スロボダニク 2018.10.04 09:37 チャート上のいくつかの「タップゾーン」をマウスでクリックするということですか? できます。カーソル座標とマウスクリックを記録しておく必要があります。 システムメニューのボタンではなく、チャート上のクリックであることです。このような出来事をどのように処理すればよいのか、私にはわからない。 Taras Slobodyanik 2018.10.04 08:49 #6444 psyman: システムメニューからのボタンではなく、チャート上のクリックということです。このような出来事をどう処理したらいいのかわからない。現在の文字期間を記憶し、"CHARTEVENT_CHART_CHANGE"で変更を確認し、必要な処理を行う。 psyman 2018.10.04 09:42 #6445 OK、ありがとうございました。 mserega76 Митрофанов 2018.10.04 15:45 #6446 EA本体のOnTick()の同じ関数が動作しない(というより、動作するが全てのチャートで正しく動作しない)理由を教えてください。 しかし、OnInit()プロシージャからは正常に動作しますし、通常のスクリプトからも動作します。Expert Advisorを一度に80チャート(20通貨、各4ウィンドウ W1 D1 H4 H1)にインストールしていますが、私のコンピュータが対応できないだけでしょうか?アドバイスをお願いします。このロボットの目的は、チャートの一つでシグナルが検出された場合、MessageBoxの メッセージを画面に出力することです。もしかしたら、このメッセージが出る瞬間にパソコンの動作が遅くなっているのかもしれません。 psyman 2018.10.04 18:11 #6447 イベントが処理 されるまでの期間を記憶するのが面倒なんですが、どこでやればいいんですか? CHARTEVENT_CHART_CHANGEが1回のクリックで2回処理され、ctime変数がリセットされることが判明したため、メッセージで追跡することにした。 #プロパティの厳密さ#property indicator_chart_windowint ctimeです。void OnInit(){Print(" OnInit------------1 ", ChartPeriod(0));Print("OnInit ctime = ", ctime);// ctime=ChartPeriod(0)とする。}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[]){ctime=ChartPeriod(0)。return(rates_total);}void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam){if(id==CHARTEVENT_CHART_CHANGE){Print("CHARTEVENT_CHART_CHANGEが開始されました ctime=", ctime);if(ctime!=ChartPeriod(0)){Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", ctime)とする。}}} 1時間足でインジケータを追加し、日足に切り替えた場合 2018.10.05 01:04:45.171 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE が開始されました ctime=14402018.10.05 01:04:45.156 _t1 CADJPY,Daily: 1440 CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!02018.10.05 01:04:45.156 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE が開始されました ctime=02018.10.05 01:04:45.156 _t1 CADJPY,Daily:初期化されました。2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit ctime=02018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit------------1 14402018.10.05 01:04:45.156 _t1 CADJPY,H1: uninit reason 3 2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE を開始しました ctime=602018.10.05 01:02:02.000 _t1 CADJPY,H1: 60 CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!02018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE が開始されました ctime=02018.10.05 01:02:02.000 _t1 CADJPY,H1: 初期化されました。2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit ctime=02018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit------------1 602018.10.05 01:02:01.078 カスタムインジケータ _t1 CADJPY,H1: ロードに成功しました。 Any questions from newcomers エラー、バグ、質問 MetaTrader 5へのアップグレードを損なわずに行うためのヘルプ Vitaly Gorbunov 2018.10.04 20:00 #6448 psyman:イベントが処理 される前の期間が思い出せず困っているのですが、どこを処理する必要があるのでしょうか? CHARTEVENT_CHART_CHANGEが1回のクリックで2回処理され、ctime変数がリセットされることが判明したため、メッセージで追跡することにした。コードをメッセージに正しく入れてくださいこの形ではとても読みにくいですね。こんな感じなんでしょうね。 #property strict #property indicator_chart_window int ctime; void OnInit() { Print(" OnInit------------1 ", ChartPeriod(0)); Print("OnInit ctime = ", ctime); // ctime=ChartPeriod(0); } 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[]) { ctime=ChartPeriod(0); return(rates_total); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) { Print("CHARTEVENT_CHART_CHANGE is started ctime=", ctime); if(ctime!=ChartPeriod(0)) { Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!! ", ctime); } } } チャートのパラメータを変更すると、インジケータが強制的にリロードされます。 必要なパラメータを保存するために、グローバルターミナル変数を使用することができます。 Taras Slobodyanik 2018.10.04 20:14 #6449 Vitaly Gorbunov:コードをメッセージに正しく挿入してくださいこうやって読んでみると、とても難しいですね。こんな感じでいいんじゃないでしょうか。 チャートパラメータを変更した場合、インジケータは強制的に再起動されます。 必要なパラメータを保存するために、端末のグローバル変数を使用することができます。はい、GlobalVariableに値を格納し、起動時にその存在を確認する必要があります。 つまり、チャート番号、シンボル、ピリオドを保存する必要があります。 そして、不要な変数を削除したり、最初は一時的なグローバル変数 にしたりします。 ps. チャート上のオブジェクトに情報を保存することも可能です - チャートが存在する限り、オブジェクトも存在します psyman 2018.10.04 20:54 #6450 もっと簡単だと思ってたんだけどな :-) 私のコードは取引やグラフィックに関係ないのですが、どのようなプログラムを使えばいいのでしょうか? スクリプトは一回限りですが、ループで実行することは可能でしょうか?Expert Advisorを使ったことがないので、純粋に惰性でカスタムインディケーターを 宣言しました。今まで使ったことがないのですが、必要のない自動再起動をします。アドバイスをお願いします。ps オブジェクトは、視覚的に邪魔にならないように、ゼロサイズにすることができるのですね。 1...638639640641642643644645646647648649650651652...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Tarasさん、マウスクリックでフレームが変わるようなグラフの正規化は可能でしょうか?
時々、習慣でカーソルがボタンの近くにあるときにクリックしてしまうのですが、その結果はあまり好きではありません。
イベント処理の リストに適当なものがなく、CHARTEVENT_CHART_CHANGEだけが あり、具体的な説明が ありません。マウスクリックをバインドすることはできますが、私の理解では、ユーザーはシステムメニューを操作することはできず、自分でボタンを作成した場合のみです。何か簡単な解決策はないのでしょうか?
Tarasさん、マウスクリックでフレームが変わるようなグラフの正規化は可能でしょうか?
時々、習慣でカーソルがボタンの近くにあるときにクリックしてしまうのですが、その結果はあまり好きではありません。
イベント処理の リストに適当なものがなく、CHARTEVENT_CHART_CHANGEだけ で、具体的な説明が ありません。マウスのボタンクリックをバインドすることはできますが、私の理解では、ユーザーはシステムメニューで作業することはできません、彼自身のボタンを作成する場合のみ。何か簡単な解決策はないのでしょうか?
つまり、チャート上のいくつかの "タップゾーン "をクリックすること?
できます。カーソル座標とマウスボタンのクリックを記録しておく必要があります。
チャートイベント_マウス_ムーブ
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
MQL4に関する初心者向けの質問、アルゴリズムやコードに関するヘルプやディスカッションなど
タラス・スロボダニク 2018.10.04 09:37
チャート上のいくつかの「タップゾーン」をマウスでクリックするということですか?
できます。カーソル座標とマウスクリックを記録しておく必要があります。
現在の文字期間を記憶し、"CHARTEVENT_CHART_CHANGE"で変更を確認し、必要な処理を行う。
EA本体のOnTick()の同じ関数が動作しない(というより、動作するが全てのチャートで正しく動作しない)理由を教えてください。
しかし、OnInit()プロシージャからは正常に動作しますし、通常のスクリプトからも動作します。Expert Advisorを一度に80チャート(20通貨、各4ウィンドウ W1 D1 H4 H1)にインストールしていますが、私のコンピュータが対応できないだけでしょうか?アドバイスをお願いします。このロボットの目的は、チャートの一つでシグナルが検出された場合、MessageBoxの メッセージを画面に出力することです。もしかしたら、このメッセージが出る瞬間にパソコンの動作が遅くなっているのかもしれません。イベントが処理 されるまでの期間を記憶するのが面倒なんですが、どこでやればいいんですか?
CHARTEVENT_CHART_CHANGEが1回のクリックで2回処理され、ctime変数がリセットされることが判明したため、メッセージで追跡することにした。
#プロパティの厳密さ
#property indicator_chart_window
int ctimeです。
void OnInit()
{
Print(" OnInit------------1 ", ChartPeriod(0));
Print("OnInit ctime = ", ctime);
// ctime=ChartPeriod(0)とする。
}
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[])
{
ctime=ChartPeriod(0)。
return(rates_total);
}
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
if(id==CHARTEVENT_CHART_CHANGE)
{
Print("CHARTEVENT_CHART_CHANGEが開始されました ctime=", ctime);
if(ctime!=ChartPeriod(0))
{
Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!", ctime)とする。
}
}
}
1時間足でインジケータを追加し、日足に切り替えた場合
2018.10.05 01:04:45.171 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE が開始されました ctime=1440
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: 1440 CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE が開始されました ctime=0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily:初期化されました。
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit ctime=0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit------------1 1440
2018.10.05 01:04:45.156 _t1 CADJPY,H1: uninit reason 3
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE を開始しました ctime=60
2018.10.05 01:02:02.000 _t1 CADJPY,H1: 60 CHANGED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE が開始されました ctime=0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: 初期化されました。
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit ctime=0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit------------1 60
2018.10.05 01:02:01.078 カスタムインジケータ _t1 CADJPY,H1: ロードに成功しました。
イベントが処理 される前の期間が思い出せず困っているのですが、どこを処理する必要があるのでしょうか?
CHARTEVENT_CHART_CHANGEが1回のクリックで2回処理され、ctime変数がリセットされることが判明したため、メッセージで追跡することにした。
コードをメッセージに正しく入れてくださいこの形ではとても読みにくいですね。こんな感じなんでしょうね。
チャートのパラメータを変更すると、インジケータが強制的にリロードされます。
必要なパラメータを保存するために、グローバルターミナル変数を使用することができます。
コードをメッセージに正しく挿入してくださいこうやって読んでみると、とても難しいですね。こんな感じでいいんじゃないでしょうか。
チャートパラメータを変更した場合、インジケータは強制的に再起動されます。
必要なパラメータを保存するために、端末のグローバル変数を使用することができます。
はい、GlobalVariableに値を格納し、起動時にその存在を確認する必要があります。
つまり、チャート番号、シンボル、ピリオドを保存する必要があります。
そして、不要な変数を削除したり、最初は一時的なグローバル変数 にしたりします。
ps. チャート上のオブジェクトに情報を保存することも可能です - チャートが存在する限り、オブジェクトも存在します
もっと簡単だと思ってたんだけどな :-)
私のコードは取引やグラフィックに関係ないのですが、どのようなプログラムを使えばいいのでしょうか?
スクリプトは一回限りですが、ループで実行することは可能でしょうか?Expert Advisorを使ったことがないので、純粋に惰性でカスタムインディケーターを 宣言しました。今まで使ったことがないのですが、必要のない自動再起動をします。アドバイスをお願いします。
ps
オブジェクトは、視覚的に邪魔にならないように、ゼロサイズにすることができるのですね。