ライブラリ: MT4Orders - ページ 22

 
fxsaber:

リアルタイムには影響しないはずだ。

残念ながら、私には影響する。

取引履歴を 表示・非表示するボタンがある。もちろん、すべてを表示しても意味がないのだが、数千の中から記号やマジック、コメントなどで「自分だけのもの」を数十個選ぶ必要があることが多い。そこでブレーキがかかる。そこで、"自分のもの "のリストをキャッシュしておき、過去の新しい案件のときだけ更新するようにするのだ。

また、不具合のあるブローカーが成行注文を再ジャックするのを見たことがあるが、稼働中のExpert Advisorは1時間で10万件の再ジャック注文を履歴に生成できた。そして、端末自体がハングアップしていた......。

 
fxsaber:

取引履歴(価格履歴ではない)がバックテスト時間に大きく影響するTSの例が必要です。

ファンタジーとして:過去の取引でバランス曲線を構築し、曲線の傾きに応じて新しい取引のロットを計算する。

キャッシュを残しておかなければ、各取引の前に履歴を完全に調べなければならない。しかし、ここではもちろん、バランス値を配列に集める方が簡単で、すべての取引を保存する必要はない。

 
Andrey Khatimlianskii:

残念ながら、私はその影響を受けている。

取引履歴を 表示/非表示するボタンがある。もちろん、すべてを表示しても意味がないのだが、記号やマジック、コメントなどで「自分だけのもの」を数千件の中から数十件選ぶ必要があることが多い。そこでブレーキがかかる。そこで、"自分たちのもの "のリストをキャッシュしておき、新しい歴史的な案件のときだけ更新するというアイデアがある。

私はこの問題を理解している。そう、聖書のシステムに組み込まれた本格的なキャッシュは、もう期限切れなのだ。どのように実装するか考えなければならないだろう。

私も不具合のあるブローカーが成行注文をリジャックしているのを見たことがありますが、動いているExpert Advisorは1時間で10万件の履歴のリジャック注文を生成していました。その時は端末自体がハングアップしていた...。

このような素晴らしいブローカーを見てみたい。

 
Andrey Khatimlianskii:

ファンタジーとして:過去の取引によってバランスカーブを構築し、カーブの傾きに応じて新規取引のロットを計算する。

自分のキャッシュを保持していない場合、各取引の前に履歴を完全に調べなければならない。しかし、ここではもちろん、残高の値を配列に集める方が簡単で、すべての取引を保存する必要はない。

そんなことも考えたが、そこは即座にバランスVRを提案する。逆説的だが、取引履歴のキャッシュが 必要なのは戦闘用だけらしい(テスター用には必要ない)。

 
fxsaber:

問題は理解している。そうですね、ビブラに組み込まれた本格的なキャッシュはやはり必要です。どのように実装するか考えなければなりません。

理想的には、GetPositionDealIn(とその中のHistorySelectByPosition)が99%実行されるので、各取引のDEAL_ENTRY_IN チケットを保存するだけで十分でしょう。


fxsaber:

この素晴らしいブローカーにぜひ会いたい。

PrimeXM-LiveUK.

これはサクソバンクへの松葉杖橋です。

 
Andrey Khatimlianskii:

理想的には、各取引ごとにDEAL_ENTRY_IN チケットを保存しておけば十分です。

取引履歴とのハッシュ比較はかなり前に行われています。したがって、Generic 側を掘り下げるのが最適であろう。

この方法を学ぶ動機付けとしては、これで十分だ!夏のある日、静かな環境で......。

Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
Библиотека Generic классов - ошибки, описание, вопросы, особенности использования и предложения
  • 2017.12.08
  • www.mql5.com
С 6 декабря 2017 года в стандартную поставку MetaTrader 5 стали входить так называемые Generic-классы, реализующие эффективные алгоритмы для хранен...
 

fxsaberからのアップデート:

// 30.05.2018
// 追加:取引履歴を使った作業を加速させ、パフォーマンスと実現性の黄金平均を選択した。
// メモリ消費 - VPSでは重要。標準的なGenericライブラリを使用。
// もしジェネリック・ライブラリーを使いたくないのであれば、ヒストリーを扱う古いモードが利用できる。
// これを行うには、MT4Orders-libraryの前に以下の行を記述する必要があります。
//
// #define MT4ORDERS_FASTHISTORY_OFF // 高速取引履歴の実装をオフにする - Genericライブラリを使用しない。

ロングヒストリーを使用した場合、ただ飛ぶだけになってしまいました!

モデレータの皆さん、機会があれば、コードをデータベースにアップロードしてください。

ファイル:
MT4orders.mqh  77 kb
 
Andrey Khatimlianskii:

fxsaberからのアップデート:

長いヒストリーを使った作業がとても楽になりました!

モデレーターの皆さん、もし可能なら、コードをデータベースにアップロードしてください。

ありがとうございます。

 

私はこのライブラリをMT4のExpert Advisorで使用しています。


私は奇妙な瞬間を見つけました:

Metaquotesサーバー(デモ)でテストすると、ライブラリは正常に動作します。(例えば、注文を開くとき)

ブローカーfhtmデモでテストした場合、OrderSend関数は取引を開始しますが、エラーを返します。

      int ticket=OrderSend(_Symbol,type,lot,price,0,0,0,comment_,magic,0,clrDarkSlateBlue);

デバッグ後 ticket = -1;

ログのテキストは以下のとおりです:

同時に、ログにはすべてが正常であるというメッセージも表示されます。

なぜこのような問題が発生するのでしょうか?

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::AccountInfoString(ACCOUNT_SERVER) = ForexTimeFXTM-Demo01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_PING_LAST) = 55335

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.8875739644970414

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) ::TerminalInfoInteger(TERMINAL_BUILD) = 1835

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) (bool)::TerminalInfoInteger(TERMINAL_X64) = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Res = false

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS::OrderSendBug = true

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.action =TRADE_ACTION_DEAL(1)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.magic = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.order = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.symbol = EURUSD

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.price = 1.17681

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.stoplimit = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.sl = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.tp = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.deviation = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type = ORDER_TYPE_BUY (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_filling = ORDER_FILLING_FOK (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.type_time = ORDER_TIME_GTC (0)

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.expiration = 1970.01.01 00:00:00

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.comment =

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position = 2210821620

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Request.position_by = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode = 10009

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.deal = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.order = 2210821775

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.volume = 0.01

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.price = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.bid = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.ask = 0.0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.comment = Request executed 190.826 + 1000.396 ms

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.request_id = 154

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) Result.retcode_external = 0

2018.06.08 22:58:47.197 EA MT5 (EURUSD,M1) MT4ORDERS: not Sync with History! ログをfxsaberに送信してください!

2018.06.08 22:55:47.197 EA MT5 (EURUSD,M1) OrderSend with error 4754



削除済み  
Rashid Umarov:

ありがとう。

fxsaberも戻ってきて くれると嬉しい。