#import "user32.dll" int RegisterWindowMessageW(string MessageName); int PostMessageW(int hwnd,int msg,int wparam,uchar &Name[]); #import #define INDICATOR_NAME "Indicator_name" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void StartCustomIndicator(int hWnd,string IndicatorName,bool AutomaticallyAcceptDefaults=false) { uchar name2[]; StringToCharArray(IndicatorName,name2,0,StringLen(IndicatorName)); int MessageNumber=RegisterWindowMessageW("MetaTrader4_Internal_Message"); int r=PostMessageW(hWnd,MessageNumber,15,name2); Sleep(10); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { //--- // In my code where I launch the indicator int hWnd=WindowHandle(Symbol(),0); StartCustomIndicator(hWnd,INDICATOR_NAME); return(INIT_SUCCEEDED); }
Alain Verleyen:
ありがとうございます、現在動作していますが、2回目からしか動作しません。eaを起動すると、indicator callが fail to open / .ex4[123]というエラーを返します。eaがすでにチャートにアタッチされている場合、再度アタッチしようとすると、動作します。これはどのように解決することができますか?
Georgiy Liashchenko:
本当にそうでしょうか?
...mql4には、mql5のChartIndicatorAdd() のようにチャートにインジケータを追加するコマンドはありません。本当に悲しいことだ......。
Vasyl Nosal:
本当にそうですか?
もしご存知でしたら、教えてください。)
本当にそうですか?
Georgiy Liashchenko:
まあ、もし知っている人がいたら教えてください... :)
まあ、もし知っている人がいたら教えてください... :)
:))))))))))))))))))))))))))))))))))))))))))))))))))
ああ、すみません。数分後です。
んー。mql4にあると思ったのですが。
もしかしたら、これが参考になるかもしれません
ChartApplyTemplate()
Vasyl Nosal:
はい、しかし、それは、例えば、私がeaを販売し、クライアントがそれを使用したい場合、彼は同じテンプレートを持っていないような場合ではありません。ファイルとして渡しても、クライアントが違うテンプレートを使うかもしれません。そのため、EAからインジケータを初期化したいのです。
:))))))))))))))))))))))))))))))))))))))))))))))))))
ああ、すみません。数分後です。
んー。mql4にあると思ったのですが。
もしかしたら、これが参考になるかもしれません
ChartApplyTemplate()
Georgiy Liashchenko:
そうなんですが、例えば私がEAを販売していて、あるクライアントがそれを使いたい場合、彼は同じテンプレートを持っていないんです。ファイルとして渡しても、クライアントが違うテンプレートを使うかもしれない。そのため、EAからインジケータを初期化したいのです。
そうなんですが、例えば私がEAを販売していて、あるクライアントがそれを使いたい場合、彼は同じテンプレートを持っていないんです。ファイルとして渡しても、クライアントが違うテンプレートを使うかもしれない。そのため、EAからインジケータを初期化したいのです。
うーん。リソース」を使ってEAにインジケータを追加するよりもいいかもしれませんね。
#resource "\\Indicators\\SampleIndicator.ex4" int OnInit() { double value=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0);
Vasyl Nosal:
EAはハンドルを取得しますが、インジケータは表示されません。
ふむふむ。EAにresourseを使ったインジケータを追加するのがいいかも。
Georgiy Liashchenko:
ハンドルを取得してもインジケータが表示されません。
ハンドルを取得してもインジケータが表示されません。
チャートにインジケータを 追加するものではありません。ea ex.4ファイルにindをコンパイルしています。
mql5のようにChartIndicatorAdd()を追加するよう、サービスデスクに問い合わせてみてはいかがでしょうか?
![MQL5 - MetaTrader 5クライアントターミナルにビルトインされたトレードストラテジーの言語](https://c.mql5.com/i/registerlandings/logo-2.png)
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
皆さん、こんにちは。
私は、現在の問題を解決しようとしています。mql4には、mql5のChartIndicatorAdd() のようにチャートにインジケータを追加するコマンドはありません。これは本当に悲しいことです。
私は自分のEAにインジケータを起動させたいのです。フォーラムをスクロールしていると、そのような解決策に出会いましたが、正しく動作していません。助けてください!
このコードは、インジケータを起動しようとしますが、ファイル名を正しく読みません。これは、(インジケータ名の最初の文字).ex4またはI.ex4のみを開こうとするものです。
明らかな解決策はchararrayでしたが、コンパイラは "parametr conversion not allowed "というエラーを返しました。どうすればいいのでしょうか?