ライブラリ: MT4Orders - ページ 33 1...262728293031323334353637383940...95 新しいコメント Andrey Khatimlianskii 2019.01.18 02:20 #321 fxsaber:すべての変更点はヘッダーに書かれています。ええ、でもそれが何なのかわからないでしょう。そうしたらお見せしますよ。 fxsaber: ZY KBで僕の作品を見たんだけど...。ZIPのことは忘れた方がいい。 その通り。Zipは更新されない( fxsaber 2019.02.08 09:19 #322 // 変更リスト: // 08.02.2019 // 追加:OrderCloseによって部分的にクローズされると、ポジションコメントが保存される。 // 部分決済時にオープンポジションのコメントを変更する必要がある場合は、OrderClose で設定できる。 fxsaber 2019.02.08 14:18 #323 MQL4だけでは解決できないタスクもある。 しかし、MT4スタイルとMT5スタイルは並行して使うことができる。そのような組み合わせの例を紹介します。 取引、自動取引システム、取引戦略のテストに関するフォーラム。 OnTradeTransactionトランザクション処理 fxsaber, 2019.02.08 12:37 pm. タスク 未決注文はネッティングで発注される(多方向、各タイプいくつでも可能)。元の未決注文がトリガーされるたびに、そのSL/TPをストップ/リミット未決注文の形で発注する必要があります。この場合、SL/TP注文は、1つの注文がトリガーされると、2番目の注文が削除されるというように、依存関係にある必要があります。最初の注文と SL/TP 保留注文は、部分的にトリガーすることができます。Expert Advisor は、別のターミナルへの転送を含め、いつでも再ロードできます。 ソリューション #include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006 input int inTP = 100; input int inSL = 200; sinput MAGIC_TYPE inMagicNumber = 0; sinput string inStrKey = "SLTP"; int GetAmountDeals() { return(HistorySelect(0, INT_MAX) ? HistoryDealsTotal() : 0); } bool IsMyString( const string Str, const string Key ) { return(StringSubstr(Str, 0, StringLen(Key)) == Key); } string ToMyString( const string Str, const string Key ) { return(Key + Str); } struct ORDER { int Type; TICKET_TYPE Ticket; double Lots; double OpenPrice; MAGIC_TYPE Magic; string Comment; ORDER() : Type(OrderType()), Ticket(OrderTicket()), Lots(OrderLots()), OpenPrice(OrderOpenPrice()), Magic(OrderMagicNumber()), Comment(OrderComment()) { } }; #define _CS(A) ((!::IsStopped()) && (A)) bool GetPairOrder() { bool Res = false; ORDER Order; Order.Type = 6 - Order.Type + ((Order.Type & 1) << 1); for (int i = OrdersTotal() - 1; _CS((i >= 0) && (!Res)); i--) Res = OrderSelect(i, SELECT_BY_POS) && (OrderType() == Order.Type) && (OrderMagicNumber() == Order.Magic) && (OrderComment() == Order.Comment); return(Res); } void CheckSLTP( const string Symb, const MAGIC_TYPE Magic, const string Key, const int Slip = 100 ) { for (int i = OrdersTotal() - 1; _CS(i >= 0); i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() > OP_SELL) && (OrderMagicNumber() == Magic) && (OrderSymbol() == Symb) && IsMyString(OrderComment(), Key)) { const ORDER Order; if (!_CS(GetPairOrder())) { OrderDelete(Order.Ticket); i = OrdersTotal(); } else if (_CS(OrderLots() < Order.Lots)) { if (OrderDelete(Order.Ticket)) OrderSend(OrderSymbol(), Order.Type, OrderLots(), Order.OpenPrice, Slip, 0, 0, Order.Comment, Order.Magic); i = OrdersTotal(); } } } void CheckFill( const string Symb, const MAGIC_TYPE Magic, const string Key, const int SL, const int TP ) { static int PrevDeals = GetAmountDeals(); const double point = SymbolInfoDouble(Symb, SYMBOL_POINT); const int NewDeals = GetAmountDeals(); while (_CS(PrevDeals < NewDeals)) { const ulong Ticket = HistoryDealGetTicket(PrevDeals); if (Ticket && (HistoryDealGetInteger(Ticket, DEAL_MAGIC) == Magic) && (HistoryDealGetString(Ticket, DEAL_SYMBOL) == Symb) && !IsMyString(HistoryDealGetString(Ticket, DEAL_COMMENT), Key)) { const double Lots = HistoryDealGetDouble(Ticket, DEAL_VOLUME); const double Price = HistoryDealGetDouble(Ticket, DEAL_PRICE); const int Type = 1 - (int)HistoryDealGetInteger(Ticket, DEAL_TYPE); const double Koef = Type ? -point : point; const string Comment = ToMyString((string)Ticket, Key); if (OrderSend(Symb, Type + OP_BUYLIMIT, Lots, Price - Koef * TP, 0, 0, 0, Comment)) OrderSend(Symb, Type + OP_BUYSTOP, Lots, Price + Koef * SL, 0, 0, 0, Comment); } PrevDeals++; } } void System() { CheckFill(_Symbol, inMagicNumber, inStrKey, inSL, inTP); CheckSLTP(_Symbol, inMagicNumber, inStrKey); } void OnTrade() { System(); } void OnInit() { OnTrade(); } fxsaber 2019.02.12 12:14 #324 取引、自動取引システム、取引戦略のテストに関するフォーラムライブラリ: MT4Ordersfxsaber, 2019.01.13 17:23 PM. KimのMT4での機能はかなり人気があるので、私は彼のサイトからすべてのソースをダウンロードし、MT5でそれらのための簡単な「コンバータ」を書きました。#include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh #include "e-Trailing.mq4" // http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=14 void OnTick() { start(); }Kimのコンバーターによって、他のMT4アドバイザーもMT5で動作することが判明しました。 #include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh #include "Reaction.mq4" //https://www.mql5.com/ja/code/24609 void OnTick() { start(); } fxsaber 2019.02.21 00:17 #325 // 変更リスト: // 20.02.2019 // 修正: 既存のMT5取引からのMT5注文がない場合、ライブラリは履歴の同期を待機します。失敗した場合、そのことを報告します。 MT5でこの落とし穴を回避 取引、自動取引システム、取引戦略のテストに関するフォーラムMetaTrader 5ビルド2005の新バージョン:経済カレンダー、サービスとしてのMQL5プログラム、R言語用APIfxsaber, 2019.02.20 21:06こんにちは サービス// スクリプトは、トランザクションのオーダーが履歴に存在しない場合を捕捉する。 #define _CS(A) ((!::IsStopped()) && (A)) #define TOSTRING(A) #A + " = " + (string)(A) + " " #define OFFSET 100 void OnStart() { datetime PrevTime = OFFSET; while (_CS(true)) { if (HistorySelect(PrevTime - OFFSET, INT_MAX)) { const int Total = HistoryDealsTotal(); for (int i = 0; _CS(i < Total); i++) { const ulong DealTicket = HistoryDealGetTicket(i); const ulong OrderTicket = HistoryDealGetInteger(DealTicket, DEAL_ORDER); int Count = 0; const ulong StartTime = GetMicrosecondCount(); while ((HistoryOrderGetInteger(OrderTicket, ORDER_TICKET) != OrderTicket) && !HistoryOrderSelect(OrderTicket)) // トランザクション・オーダーがない場合 Count++; if (Count) Alert(TOSTRING(DealTicket) + TOSTRING(OrderTicket) + TOSTRING(Count) + TOSTRING(GetMicrosecondCount() - StartTime)); // 状況をプリントアウトする PrevTime = (datetime)HistoryDealGetInteger(DealTicket, DEAL_TIME); } } Sleep(0); // これがないと、ターミナルは即座にハングする。 } }Sleepをコメントアウトすると、Terminalを実行することで即死します。しかし、これは別のことでしょう。ヒストリにディールオーダーが ない場合、簡単にキャッチできることがわかった。MQ-Demoスクリプトの結果Alert: DealTicket = 336236873 OrderTicket = 356249474 Count = 1614408 GetMicrosecondCount()-StartTime = 229880 Alert: DealTicket = 336236882 OrderTicket = 356249486 Count = 1565921 GetMicrosecondCount()-StartTime = 229998 Alert: DealTicket = 336236887 OrderTicket = 356249492 Count = 1559345 GetMicrosecondCount()-StartTime = 229788 Alert: DealTicket = 336236898 OrderTicket = 356249505 Count = 157107 GetMicrosecondCount()-StartTime = 22878 Alert: DealTicket = 336236901 OrderTicket = 356249508 Count = 1544271 GetMicrosecondCount()-StartTime = 220879 ディールオーダーが履歴に表示されるまで200ミリ秒以上かかる!この間、例えばスリッページや約定期間を判断することは不可能です。クローズしたポジションだけのデータをファイルに書き出すサービスが必要な状況を想像してみてください。この "機能 "のために、それを実行することは不可能です。MT5のこのアーキテクチャ上の特徴は、どのような方法でも修正できないということでよろしいでしょうか? このようなことがライブラリでどれだけ考慮されているか、数えるのは難しいです。 Edgar Akhmadeev 2019.02.21 17:57 #326 Andrey Khatimlianskii:ええ、でも中身は見えませんよ。そうしたら見せてあげるよ。その通り。zipは更新されない。ファイルを1つずつダウンロードすると、修正日が消えてしまう。サイズ別にナビゲートしなければならないが、すべての修正でサイズが変わるわけではない。 これが提案だ: すべてのファイルのヘッダーに更新日、バージョン番号、変更履歴を追加する。 ファイルに加えて、何人かの人がしているように、zip/rarを投稿してください。 Edgar Akhmadeev 2019.02.21 18:04 #327 bool IsTradeAllowed(void) { return(::MQLInfoInteger(::MQL_TRADE_ALLOWED)); // ブーリアンでない式 } fxsaber 2019.02.21 18:09 #328 Edgar: ライブラリーはたった1つのファイルに収められている。残りはすべて、非常に長い間更新されていない、その辺のチンケなものです。 しかし、OrderSend_Test2.mq5もあります。これはMT5とライブラリのストレステストです。これは取引サーバーにスパムを送り、自動取引を停止させます。 Edgar Akhmadeev 2019.02.21 19:34 #329 そうだね。今回はそうだ。しかし、前回から3つのファイルが変更されている。バージョン管理を簡単にする一般的な方法論のことだ。僕自身はいつもmqhのヘッダーに日付を追加し、mq5に日付とバージョンを追加している。 そして、私の完全なアーカイブ(修正日を保存する)を含めることで、何も考えずにすべてを更新することができます。 fxsaber 2019.02.21 19:39 #330 Edgar:そうだね。この場合はそうだ。しかし、前回から3つのファイルが変更されている。バージョン管理を簡単にする一般的な方法論のことだ。私自身はいつもmqhヘッダーに日付を追加し、mq5に日付とバージョンを追加している。私はgithubのような、すでにQB作業用の公開されたアナログを提供された。しかし、年寄りは喜びを感じない。 おそらくあなたには、そのようなオプションが適しているでしょう。 私だけがMT4Ordersを使っているわけではないので、私は変更を発表し、MT4Ordersのためだけに帽子をかぶっています。 他の仕事に関しては、黙ってやっています。 1...262728293031323334353637383940...95 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
すべての変更点はヘッダーに書かれています。
ええ、でもそれが何なのかわからないでしょう。そうしたらお見せしますよ。
ZY KBで僕の作品を見たんだけど...。ZIPのことは忘れた方がいい。
その通り。Zipは更新されない(
MQL4だけでは解決できないタスクもある。
しかし、MT4スタイルとMT5スタイルは並行して使うことができる。そのような組み合わせの例を紹介します。
取引、自動取引システム、取引戦略のテストに関するフォーラム。
OnTradeTransactionトランザクション処理
fxsaber, 2019.02.08 12:37 pm.
タスク
未決注文はネッティングで発注される(多方向、各タイプいくつでも可能)。元の未決注文がトリガーされるたびに、そのSL/TPをストップ/リミット未決注文の形で発注する必要があります。この場合、SL/TP注文は、1つの注文がトリガーされると、2番目の注文が削除されるというように、依存関係にある必要があります。最初の注文と SL/TP 保留注文は、部分的にトリガーすることができます。Expert Advisor は、別のターミナルへの転送を含め、いつでも再ロードできます。
ソリューション
取引、自動取引システム、取引戦略のテストに関するフォーラム
ライブラリ: MT4Orders
fxsaber, 2019.01.13 17:23 PM.
KimのMT4での機能はかなり人気があるので、私は彼のサイトからすべてのソースをダウンロードし、MT5でそれらのための簡単な「コンバータ」を書きました。Kimのコンバーターによって、他のMT4アドバイザーもMT5で動作することが判明しました。
MT5でこの落とし穴を回避
取引、自動取引システム、取引戦略のテストに関するフォーラム
MetaTrader 5ビルド2005の新バージョン:経済カレンダー、サービスとしてのMQL5プログラム、R言語用API
fxsaber, 2019.02.20 21:06
こんにちは サービスSleepをコメントアウトすると、Terminalを実行することで即死します。しかし、これは別のことでしょう。
ヒストリにディールオーダーが ない場合、簡単にキャッチできることがわかった。
MQ-Demoスクリプトの結果
ディールオーダーが履歴に表示されるまで200ミリ秒以上かかる!この間、例えばスリッページや約定期間を判断することは不可能です。
クローズしたポジションだけのデータをファイルに書き出すサービスが必要な状況を想像してみてください。この "機能 "のために、それを実行することは不可能です。
MT5のこのアーキテクチャ上の特徴は、どのような方法でも修正できないということでよろしいでしょうか?
このようなことがライブラリでどれだけ考慮されているか、数えるのは難しいです。
ええ、でも中身は見えませんよ。そうしたら見せてあげるよ。
その通り。zipは更新されない。
ファイルを1つずつダウンロードすると、修正日が消えてしまう。サイズ別にナビゲートしなければならないが、すべての修正でサイズが変わるわけではない。
これが提案だ:
すべてのファイルのヘッダーに更新日、バージョン番号、変更履歴を追加する。
ファイルに加えて、何人かの人がしているように、zip/rarを投稿してください。
ライブラリーはたった1つのファイルに収められている。残りはすべて、非常に長い間更新されていない、その辺のチンケなものです。
しかし、OrderSend_Test2.mq5もあります。これはMT5とライブラリのストレステストです。これは取引サーバーにスパムを送り、自動取引を停止させます。
そうだね。今回はそうだ。しかし、前回から3つのファイルが変更されている。
バージョン管理を簡単にする一般的な方法論のことだ。僕自身はいつもmqhのヘッダーに日付を追加し、mq5に日付とバージョンを追加している。
そして、私の完全なアーカイブ(修正日を保存する)を含めることで、何も考えずにすべてを更新することができます。そうだね。この場合はそうだ。しかし、前回から3つのファイルが変更されている。
バージョン管理を簡単にする一般的な方法論のことだ。私自身はいつもmqhヘッダーに日付を追加し、mq5に日付とバージョンを追加している。
私はgithubのような、すでにQB作業用の公開されたアナログを提供された。しかし、年寄りは喜びを感じない。
おそらくあなたには、そのようなオプションが適しているでしょう。
私だけがMT4Ordersを使っているわけではないので、私は変更を発表し、MT4Ordersのためだけに帽子をかぶっています。
他の仕事に関しては、黙ってやっています。