10分でできるMQL5用DLLの書き方、データのやりとり」についてのディスカッション。 - ページ 7 123456789101112 新しいコメント IGGL 2010.04.08 08:59 #61 pisara:...IMHOは、MTの記述言語の開発は、貿易の特定のタスク、すなわち、情報収集、分析、テスト、貿易管理、他のシステムとの統合に役立つべきである。このすべては、現代の開発ツールの高いレベルで行うことができ、IMHOは、すなわち、一般に受け入れられている方法(OOPなど)を使用して選択した標準フレームワークを統合して拡張することによって、行う必要があります。課題は、C/C++などを混ぜた上で閉じた自給自足のプラットフォームを書くことではなく、まず、取引プラットフォームの基本、そのサービス、API、ユーザーインターフェイスを書くことです...。MoeのIMHOは、あなたのIMHOと完全に一致しています。同じ志を持つ仲間をさらけ出すのはいいことだ。私は、「悪魔は小さい ものに潜む」ということわざからMTを連想し、建築上の重大な欠陥を疑っています。そうでなければ、なぜこんなにたくさんの「レンガ」があるのか。 そこに行かず、ここに行け!さもないと、雪が頭の上に降ってきて、完全に死んでしまうぞ!」。同時に、MTが決して最悪の製品ではないことも認めなければならない。 Prival 2010.05.05 22:26 #62 Renat писал(а) # : ...MQL4.communityにはすでにMatad - MetaTrader 4の相互作用に関する記事が掲載されています。MetaTrader 4とMATLAB Engine(MATLAB仮想マシン)の相互作用CSVファイルによるMetaTrader 4とMatlabの相互作用 もしかしたら、私が見落としているのかもしれないし、あなたが見落としているのかもしれない。MatkadとMT 4の相互作用についての記事が見当たりません。はい、Matlabを持っています。Matcadは持ってません((。 一時はMT4B<->Matcadのリンクをプログラマに発注したこともありました。唯一許容できる(安定した) は、ファイル操作による通信だった。MT4→気配値をファイルに書き込む→Matkadが読み込み→処理→結果をファイルに書き込む(通貨の買い/売り)→MT4が読み込み→実行。しかし、時々原因不明のクラッシュが発生する。3ヶ月以上費やしたが、まだ問題を解決できない。一方では、すべてを1つのパッケージで行いたいという要望もあり、それはそれで結構なことです。それは、システムの安定性と信頼性です。しかし、一方で、高レベルのプログラミング言語(Matlab、Matcad)があり、それらについては、すでに何十億人年をかけて、多くのことが書かれている。そして、この電力をMT5に接続できれば最高です。 これらの言語のレベルに達するには、体力も能力も足りない......。 Z.U. 注意していただきたいのは、これらの言語はどちらも配列(行列代数)を扱うことに特化しており、まさにあなたが必要としているものです。 Renat Fatkhullin 2010.05.06 00:10 #63 Prival: もしかしたら、私が見落としているのか、それとも言い間違いなのか。MatcadとMT 4の接続についての記事がどこにも見当たらないのですが。Matlabがある。しかし、Matcabは使えません((. はい、MatcadとMatlabがごっちゃになりました。申し訳ございません。一時はMT4B<->Matcadのリンクをプログラマに発注したこともありました。唯一許容できる(安定した)接続は、ファイル操作によるものでした。MT4→気配値をファイルに書き込む→Matkadが読み込み→処理→結果をファイルに書き込む(通貨の買い/売り)→MT4が読み込み→実行。しかし、時々原因不明のクラッシュが発生する。3ヶ月以上費やしたが、まだ解決できていない。MQL5でバンドルしてみる - より強力で、効率的で、安全な言語です。MatkadとMT5の統合に関する公開オープンワークを始めれば、良い結果が得られると思います。こうすることで、両方のエラーを素早く修正し、良い結果を得ることができるのです。 Prival 2010.05.06 00:58 #64 Renat писал(а) # : はい、MatkadとMatlabがごっちゃになりました。申し訳ございません。MQL5でバンドルしてみる - より強力で、効率的で、安全な言語です。良い結果を得るために、MatkadとMT5を統合するための公開作業を開始することができます。そうすれば、どちらのエラーもすぐに修正でき、良い結果を得ることができます。 いろいろなことができますが、まず、このようなプロジェクトに興味を持つべきはあなただと思います(あなたの聴衆がどのように増えるかを想像してみてくださいし、 FXや為替+標準的なmatlabでのプログラム作成 )。 また、パブリック、オープンなどの仕事は、長い間、興味がありませんでした。私も自分の時間を大切にしています。こんな失敗をするのは疲れる。 //+----------------------------------------------------------------------------+ //| Описание : Установка объекта OBJ_VLINE вертикальная линия | //+----------------------------------------------------------------------------+ //| Параметры: | //| cl - цвет линии | //| nm - наименование | //| t1 - время | //+----------------------------------------------------------------------------+ void SetVLine(string nm="", datetime t1=0, color cl=Red) { if (t1<=0) return; //t1=Time[0]; if (ObjectFind(0,nm)<0) ObjectCreate(0, nm, OBJ_VLINE, 0, t1, 2); else Print("Ошибка создания SetVLine ",nm," ",GetLastError()," t1=",t1); ObjectSetInteger(0, nm, OBJPROP_COLOR, cl); ObjectSetInteger(0, nm, OBJPROP_STYLE, STYLE_DOT); ObjectSetInteger(0, nm, OBJPROP_BACK, true); // рисовать как фон ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false); // запретить выделение объекта мышкой }この手順でどうしてこんなことができるのですか?2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) SetVLine作成エラー VLine_838524 4202 t1= 2010.05.06 00:00 これはデタラメだ。 err_object_not_found 4202 グラフィックオブジェクトが見つかりません オブジェクトが見つからなかった場合。プログラムが作成したはずです。しかし、オブジェクトはそこにあるif(...)なのに、なぜ4202になるのでしょう。 疲れているから、もう寝る時間なのかもしれない。 Вадим 2010.05.06 06:41 #65 プライベートへ. もし、あなたが十分に興味深いMatCadの問題(そもそもそれほど複雑ではない)を定式化すれば、きっとその作業に参加してくれる人がいることでしょう。 Ilyas 2010.05.06 07:37 #66 Prival:2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) SetVLineの作成エラー VLine_838524 4202 t1= 2010オブジェクトが見つからなかった場合。プログラムが作ったはずです。しかし、オブジェクトは存在するif(...) なぜ 4202 が返されるのでしょう。 このエラーは、前の関数呼び出しから残されたものです。ResetLastError() を使用する。 Nikolai Karetnikov 2011.04.06 10:35 #67 ごきげんよう!DLLから関数に文字列を渡すといえば以下のようなコードがあります。#include <WinUser32.mqh>.#import "mt4excel.dll"bool ExcelOpen();//Excelを開き、白紙ページを作成します。bool ExcelSetTextCell(int X,int Y,char Value[]);//セルにテキストを書き込む/*人減らし*/#インポートvoid OnTick(){MqlRates rates [];int copied=CopyRates("EURUSD",PERIOD_M1,0,1,rates)とする。ExcelSetTextCell(1,1, "Tool")。ExcelSetTextCell(2,1, "EURUSD")。ExcelSetValueCell(2,2,rates[0]);}Excelは、ExcelSetTextCellで渡されたものの最初の文字だけを表示する、とあります。このスレッドを読んで、何が原因かはわかったのですが、どうすれば必要なものが手に入るのかがよくわからないのです。ポイントは、DLLは私が書いたのではなく、MT4経由でExcelと連携するための関数のライブラリだということです。明らかな理由により、MT5は1文字目だけの文字列へのポインタを取ります。問題は、DLLのソースコードを編集できない場合、どのようにしてMT5に必要なものを渡すことができるかということです。私が理解している限りでは、次のようなものを追加する必要があります。_DLLAPIvoid__stdcall demo(char*stream,char*buf){ buf=stream;}.MT5開発者の方からのコメントを頂けると幸いです。ありがとうございました。 Discussion on "How to MetaTrader拡張モジュール(DLL)の作成 why the log file Slava 2011.04.06 10:47 #68 ns_kさん、MQL5の文字列はunicodeであることを忘れないでください。 2つの解決策が考えられます。 1.ユニコード文字列を受け入れるようにDLLをリワーク(変更)する。 2.文字列を 自分で配列に 変換する Nikolai Karetnikov 2011.04.06 11:03 #69 stringo: ns_kさん、MQL5の文字列はunicodeであることを忘れないでください。 2つの解決策が考えられます。 1.ユニコード文字列を受け入れるようにDLLをリワーク(変更)する。 2.自分で文字列を配列に 変換する 2番目の解決策は、私にとって有効です。教えてください、関数の宣言も変えなければならないのでしょうか?すなわち、代わりに bool ExcelSetTextCell(int X,int Y, string Value);// セルにテキストを書き込む 第3パラメータが配列になるような宣言を書かないといけないのですか?そうだとしたら、どうすればいいのか......わからない。ありがとうございました。でも、ちょっと考えたらわかったんです。ありがとうございました!!! Andriy Voitenko 2011.04.06 11:28 #70 DLL関数の宣言bool ExcelSetTextCell(int X,int Y, uchar& Value[]); DLL関数の呼び出し//--- объявляем массив символов uchar value[]; //--- преобразуем юникод строку в однобайтный массив StringToCharArray("EURUSD", value); //--- передаем полученные данные массива по ссылке ExcelSetTextCell(2,1,value); 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
pisara:
...IMHOは、MTの記述言語の開発は、貿易の特定のタスク、すなわち、情報収集、分析、テスト、貿易管理、他のシステムとの統合に役立つべきである。このすべては、現代の開発ツールの高いレベルで行うことができ、IMHOは、すなわち、一般に受け入れられている方法(OOPなど)を使用して選択した標準フレームワークを統合して拡張することによって、行う必要があります。課題は、C/C++などを混ぜた上で閉じた自給自足のプラットフォームを書くことではなく、まず、取引プラットフォームの基本、そのサービス、API、ユーザーインターフェイスを書くことです...。
MoeのIMHOは、あなたのIMHOと完全に一致しています。同じ志を持つ仲間をさらけ出すのはいいことだ。私は、「悪魔は小さい ものに潜む」ということわざからMTを連想し、建築上の重大な欠陥を疑っています。そうでなければ、なぜこんなにたくさんの「レンガ」があるのか。 そこに行かず、ここに行け!さもないと、雪が頭の上に降ってきて、完全に死んでしまうぞ!」。
同時に、MTが決して最悪の製品ではないことも認めなければならない。
Renat писал(а) # :
もしかしたら、私が見落としているのかもしれないし、あなたが見落としているのかもしれない。MatkadとMT 4の相互作用についての記事が見当たりません。はい、Matlabを持っています。Matcadは持ってません((。
一時はMT4B<->Matcadのリンクをプログラマに発注したこともありました。唯一許容できる(安定した) は、ファイル操作による通信だった。MT4→気配値をファイルに書き込む→Matkadが読み込み→処理→結果をファイルに書き込む(通貨の買い/売り)→MT4が読み込み→実行。しかし、時々原因不明のクラッシュが発生する。3ヶ月以上費やしたが、まだ問題を解決できない。
一方では、すべてを1つのパッケージで行いたいという要望もあり、それはそれで結構なことです。それは、システムの安定性と信頼性です。
しかし、一方で、高レベルのプログラミング言語(Matlab、Matcad)があり、それらについては、すでに何十億人年をかけて、多くのことが書かれている。そして、この電力をMT5に接続できれば最高です。 これらの言語のレベルに達するには、体力も能力も足りない......。
Z.U. 注意していただきたいのは、これらの言語はどちらも配列(行列代数)を扱うことに特化しており、まさにあなたが必要としているものです。
もしかしたら、私が見落としているのか、それとも言い間違いなのか。MatcadとMT 4の接続についての記事がどこにも見当たらないのですが。Matlabがある。しかし、Matcabは使えません((.
一時はMT4B<->Matcadのリンクをプログラマに発注したこともありました。唯一許容できる(安定した)接続は、ファイル操作によるものでした。MT4→気配値をファイルに書き込む→Matkadが読み込み→処理→結果をファイルに書き込む(通貨の買い/売り)→MT4が読み込み→実行。しかし、時々原因不明のクラッシュが発生する。3ヶ月以上費やしたが、まだ解決できていない。
MQL5でバンドルしてみる - より強力で、効率的で、安全な言語です。
MatkadとMT5の統合に関する公開オープンワークを始めれば、良い結果が得られると思います。こうすることで、両方のエラーを素早く修正し、良い結果を得ることができるのです。
はい、MatkadとMatlabがごっちゃになりました。申し訳ございません。
MQL5でバンドルしてみる - より強力で、効率的で、安全な言語です。
良い結果を得るために、MatkadとMT5を統合するための公開作業を開始することができます。そうすれば、どちらのエラーもすぐに修正でき、良い結果を得ることができます。
いろいろなことができますが、まず、このようなプロジェクトに興味を持つべきはあなただと思います(あなたの聴衆がどのように増えるかを想像してみてくださいし、 FXや為替+標準的なmatlabでのプログラム作成 )。
また、パブリック、オープンなどの仕事は、長い間、興味がありませんでした。私も自分の時間を大切にしています。こんな失敗をするのは疲れる。
この手順でどうしてこんなことができるのですか?
2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) SetVLine作成エラー VLine_838524 4202 t1= 2010.05.06 00:00
これはデタラメだ。
err_object_not_found
4202
グラフィックオブジェクトが見つかりません
オブジェクトが見つからなかった場合。プログラムが作成したはずです。しかし、オブジェクトはそこにあるif(...)なのに、なぜ4202になるのでしょう。
疲れているから、もう寝る時間なのかもしれない。
プライベートへ.
もし、あなたが十分に興味深いMatCadの問題(そもそもそれほど複雑ではない)を定式化すれば、きっとその作業に参加してくれる人がいることでしょう。
2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) SetVLineの作成エラー VLine_838524 4202 t1= 2010
オブジェクトが見つからなかった場合。プログラムが作ったはずです。しかし、オブジェクトは存在するif(...) なぜ 4202 が返されるのでしょう。
ごきげんよう!DLLから関数に文字列を渡すといえば
以下のようなコードがあります。
#include <WinUser32.mqh>.
#import "mt4excel.dll"
bool ExcelOpen();//Excelを開き、白紙ページを作成します。
bool ExcelSetTextCell(int X,int Y,char Value[]);//セルにテキストを書き込む
/*
人減らし
*/
#インポート
void OnTick()
{
MqlRates rates [];
int copied=CopyRates("EURUSD",PERIOD_M1,0,1,rates)とする。
ExcelSetTextCell(1,1, "Tool")。
ExcelSetTextCell(2,1, "EURUSD")。
ExcelSetValueCell(2,2,rates[0]);
}
Excelは、ExcelSetTextCellで渡されたものの最初の文字だけを表示する、とあります。このスレッドを読んで、何が原因かはわかったのですが、どうすれば必要なものが手に入るのかがよくわからないのです。ポイントは、DLLは私が書いたのではなく、MT4経由でExcelと連携するための関数のライブラリだということです。明らかな理由により、MT5は1文字目だけの文字列へのポインタを取ります。問題は、DLLのソースコードを編集できない場合、どのようにしてMT5に必要なものを渡すことができるかということです。私が理解している限りでは、次のようなものを追加する必要があります。
_DLLAPIvoid__stdcall demo(char*stream,char*buf){ buf=stream;}.
MT5開発者の方からのコメントを頂けると幸いです。
ありがとうございました。
ns_kさん、MQL5の文字列はunicodeであることを忘れないでください。
2つの解決策が考えられます。
1.ユニコード文字列を受け入れるようにDLLをリワーク(変更)する。
2.文字列を 自分で配列に 変換する
ns_kさん、MQL5の文字列はunicodeであることを忘れないでください。
2つの解決策が考えられます。
1.ユニコード文字列を受け入れるようにDLLをリワーク(変更)する。
2.自分で文字列を配列に 変換する
2番目の解決策は、私にとって有効です。教えてください、関数の宣言も変えなければならないのでしょうか?すなわち、代わりに
bool ExcelSetTextCell(int X,int Y, string Value);// セルにテキストを書き込む
第3パラメータが配列になるような宣言を書かないといけないのですか?そうだとしたら、どうすればいいのか......わからない。ありがとうございました。
でも、ちょっと考えたらわかったんです。ありがとうございました!!!
DLL関数の宣言
DLL関数の呼び出し