С этой статьи я начинаю еще одну серию, относящуюся к разработке графических интерфейсов. На текущий момент нет ни одной библиотеки кода, которая позволяла бы легко и быстро создавать качественные графические интерфейсы в MQL-приложениях. Я имею в виду графические интерфейсы, к которым мы все привыкли в известных операционных системах. Цель проекта — дать конечному пользователю такую возможность и научить это делать с помощью моей библиотеки. Я постарался сделать ее максимально понятной в изучении, с возможностями дальнейшего развития.
[in] Режим открытия. Это может быть одна величина или их комбинация: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE, FILE_SHARE_READ, FILE_SHARE_WRITE. Клиентский терминал может подключаться к серверам разных брокерских компаний. Исторические данные (файлы HST) каждой брокерской компании хранятся в соответствующей подпапке папки истории...
Файлы истории котировок Metatrader 4 имеют расширение и находятся в папке данных торгового терминала, в каталоге . Они сгруппированы в подкаталогах, имена которых совпадают с названиями серверов, например: или . Имена файлов начинаются с наименования торгового инструмента, далее указывается таймфрейм (количество минут), например, для часового...
目利きの皆様へ
正しい枝で質問しているのだろうか!?
問題は、#defineを使って、次のようなコードに展開される構成要素を定義することは可能か、ということです。
if(a) printf("%s(%04d)", __FUNCTION__, __LINE__)+printf("%s", _Symbol)を実行。
これは理解のため...正しい作りは違うかもしれません。理想的には、出力文字列の先頭にあるprintf()が、条件が一致したときに、文字列の前に「Function(string in function)」という構文で出力するような解決策を見出したいのです。これはすべて、書かれた説明書を短くするためです
そして、赤くハイライトされた構成は、これ(類似)に置き換えて欲しいです。
#define P(a) if(variable>=a) printf("%s(%04d)", __FUNCTION__, __LINE__)
私はInetで少し似たようなものを 見つけましたが、私はクラスを扱ったことがないので、まだ作業コードを何とかすることができません。という形で下位コンストラクトを適用してみました。
P(3)+printf("%s(%s) Accuracy=%d", Symbol, (Command==0? "Buy": "Sell"), Accuracy);
しかし、このような記述があると、「Print」エラーが発生します - void型の式は不正です ...
こんにちは。
の違いについて教えてください。
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("オーダーセレクトエラー %d",GetLastError());return;}。
おつかれさまでした
こんにちは。
の違いについて教えてください。
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.
и
if(OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)==false){PrintFormat("オーダーセレクトエラー %d",GetLastError());return;}。
おつかれさま
論理的な違いはありません。違いは、この論理的な比較の書き方にあるのみです。
!"マークは "NOT "です。すなわち、if(!Select())とif(Select()==false)は同じである。ロシア語では、次のようになります: if(NOT Select()).
ブーリアン変数の値を素早く「反転」させることができます。
もうひとつ質問があります。以下は、プログラムの例です。
double Lots=0.01。
int slippage=30;
int Subr1()
{
int result=-1;
int_result=OrderSend(_symbol,OP_BUY,Lots,slippage,0,0)となります。
if(int_res<0){PrintFormat("OrderSend error = ",GetError());}; {PrintFormat("OrderSend error = ",GetError());}。
return int_result;
}
void OnTick()
{
int numer=-10;
if(OrdersTotal()==0)numer=Subr1();
if(OrdersTotal()>0)Subr2(数値);
を返します。
}
void Subr2(int order)
{
if(!OrderSelect(order,SELECT_BY_TICKET,MODE_TRADES)){PrintFormat("OrderSelect error %d",GetLastError());return;}; }.else PrintFormat("Ok, OrderTicket = ",OrderTicket());
}
レスポンス:OrderSelect エラー 4051。SELECT_BY_POSに置き換えると、OrderSelectエラー1が発生します。反応はストラテジーテスターと「実データで実行」でも同じです。SELECT_BY_TICKETの場合、MODE_TRADESを削除してみましたが、違いがありません。 何が問題で、どうしたらいいのでしょうか。ありがとうございました。
レスポンス:OrderSelect エラー 4051。SELECT_BY_POSに置き換えると、OrderSelectエラー1が発生します。反応はストラテジーテスターでも「実データで実行」でも同じです。SELECT_BY_TICKETの場合、MODE_TRADESを削除してみました:違いはありません。 何が問題で、どのように修正すればいいのでしょうか?ありがとうございました。
SELECT_BY_POS は、オーダーのリストとデザインの中で「優先順位によって」オーダーを選択することです。
注文キュー番号で注文を選択しようとしている ...で、ここでチケット番号を使っているのですが、注文は1件だけで、チケット番号は10023444 ...。だから何? ここでは、 1から2、3までの 数字が必要です...まあ、あなたは市場で持っているどのように多くの注文、...0、1、2から番号を修正...です。- 番号付けは配列の0から始まり、OrdersTotal()-1までと なります。
SELECT_BY_TICKET は動作するはずですが、チケット番号、つまりマーケットにある注文がある時点までで、それ以上は注文を送るためのチェックがあり、注文が送られないと、チケット = -1 !
そして、全体として、注文を扱う設計は正しくありません。もし、あなたがMQLを勉強しようと決めたなら、注文を扱うための既製の例を以下に示します。https://www.mql5.com/ru/forum/131859。
配列の話をしたり、FXの話をしたり。なんというパラドックスでしょうか。
そして、MT4/MT4の基本アレイはすべてバッファリングされていることは、バカでもわかることです。
MT4/MT5のプログラマーと同じレベルではなく、ユーザーが基本的なアレイを操作できるようにするため。
さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、このようなもの)を持っているのです。
つまり、テキスト形式(拡張子が.txt)ではなく、独自の形式で端末にやってくるのです。
また、MT4/MT5では、基本配列がデコードされ、選択された時間枠(1分、5分、15分など)の配列に変換され、その後初めて複製、バッファリングが行われます。
なぜ、バッファリングされているのですか?
比較のため。だから、データが失われることはない。これらの配列のうち1つは常に(時々)再計算され、2つ目は(1つ目からコピーされた)ユーザーデータにコピーするときに使用されます。
つまり、ユーザーがデータを利用できるようにするための手続きは、かなり複雑なのです。
これは、一応、配列についてです。
ちなみに、AndroidもWindowも基本的なMT4/MT5アレイの拡張子は同じです。
--------------------------------------------------------------------------------------------------------------------------------
DYNAMICデータを第三者からMT4/MT5にインポートすることについては、私の知る限りでは、そのようなインポートは提供されていません。
そのため、MT4/MT5ではC++BuilderでのClient/Serverプロシージャは存在しません。
--------------------------------------------------------------------------------------------------------------------------------
この手順でライブラリに載るのかなぁ
http://tol64.blogspot.com/2015/12/easy-and-fast-gui-mql.html
もちろん、そこにもないことがほとんどでしょう。
つまり、ダイナミックアレイを MT4/MT5にベーシックフォーマットでインポートすると、自動的に標準的なデータ処理が行われます。
そして、MT4/MT4の基本アレイはすべてバッファリングされていることは、バカでもわかることです。
MT4/MT5のプログラマーは、ユーザーに基本的な配列を扱わせるようなレベルではありません。
さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、このようなもの)を持っているのです。
つまり、テキスト形式(拡張子が.txt)ではなく、独自の形式で端末にやってくるのです。
また、MT4/MT5では、基本配列がデコードされ、選択された時間枠(1分、5分、15分など)の配列に変換され、その後初めて複製、バッファリングが行われます。
なぜ、バッファリングされているのですか?
比較のため。だから、データが失われることはない。これらの配列のうち1つは常に(時々)再計算され、2つ目は(1つ目からコピーされた)ユーザーデータにコピーするときに使用されます。
つまり、ユーザーがデータを利用できるようにするための手続きは、かなり複雑なのです。
これは、一応、配列についてです。
ちなみに、AndroidもWindowも基本的なMT4/MT5アレイの拡張子は同じです。
頭の中がぐちゃぐちゃで、私なんかが見ても
配列、ファイル、時系列、インジケーターバッファなど、MQLでいろいろと混乱させていますね。
MT4とMT5は異なる方法で履歴データを保存します。MT4では、ユーザーは.hst ファイルhttps://docs.mql4.com/ru/files/fileopenhistory にアクセスすることができます。
MT5 では、履歴ファイルに直接アクセスすることはできませんが、カスタムシンボルで作業することは可能です。https://www.mql5.com/ru/docs/customsymbols
頭の中がぐちゃぐちゃになっちゃって、それどころじゃなかったー。
配列、ファイル、インジケーターバッファなど、すべてのMQLを混乱させました。
MT4とMT5は異なる方法で履歴データを保存します。MT4では、ユーザーは.hst ファイルhttps://docs.mql4.com/ru/files/fileopenhistory にアクセスすることができます。
MT5 では、履歴ファイルに直接アクセスすることはできませんが、カスタムシンボルで作業することは可能です。https://www.mql5.com/ru/docs/customsymbols
私の投稿では、履歴ファイルのことは一言も全く言っていないのですが。
また何かごっちゃになってるし、また話題も逸れてる。
DYNAMICデータセットの話をしたんです。それは全く別の話です。違いを実感してください。
私の投稿では、履歴ファイルのことは全く言っていません。
また混乱し、また話題を逸らしていますね。
ダイナミックデータアレイの話でした。それは全く別の話です。
さらに、MT4/MT5の基本配列は、独自の拡張子(.htsまたは.hss - 正確には覚えていませんが、そのようなもの)さえ持っているのです。
OK、どうぞ、あなたがこのフォーラムのスレッドにいる目的が理解できません。
DYNAMICデータセットの話をしたんです。これは全く別の話題です。違いを実感してください。
OK、どうぞ、あなたがこのフォーラムのスレッドにいる目的が理解できません。
また、どのプログラミング言語でも、動的配列は 動的配列、時系列は時系列であり、時系列の作業(アクセス)の一部は配列の作業として整理 されていることを理解する必要があるように思います...。ここで、端末のデータ形成の問題が大きくクローズアップされる。
http://profitraders.com/Python/hstRead.html
この記事は、MT4->Service->Figures Archiveにあるヒストリカルデータに関するものではないことに、読者の注意を喚起したい。
と、相場の取得と処理のプロセスに直接関与する.hst形式の端末のDYNAMICデータについてです。
------------------------------------------------------------------------------------------
私の説明が足りなかったかもしれませんね。他の作家を読む明らかになることを期待しています。