Эта статья основана на моём выступлении на ITSubbotnik, прошедшем в Рязани 14 октября 2017 года. На русском пока что довольно мало материала на эту тему, надеюсь что статья будет вам полезна. Disclaimer: Автор не является экспертом ни в WebAssembly, ни в JavaScript. Данная статья есть компиляция мыслей и идей, полученных из выступлений других...
2017.11.10 16:29:01.266 '8615385': order was opened : #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000
2017.11.10 20:37:38.949 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.277 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 closed at price 1.68356
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD closing at 0.00000 failed [Invalid parameters]
タブエキスパート
Line 8103: 216:29:01.266 Forex V2 EURNZD,M1: open #4448742 sell 0.02 EURNZD at 1.68131 ok
Line 8104: 016:29:01.266 Forex V2 EURNZD,M1: Order #4448742 open
Line 10145: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 1 закрытия/удаления ордера #4448742 Ошибка: 3
Line 10146: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10147: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 2 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10148: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10149: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 3 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10150: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10151: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 4 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10152: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10153: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 5 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10154: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10155: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 6 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10156: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10157: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 7 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10158: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10159: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 8 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10160: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10161: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 9 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10162: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10163: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 10 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10164: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10165: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 11 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10166: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10167: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 12 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10168: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10169: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 13 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10170: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10171: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 14 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10172: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10173: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 15 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10174: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10175: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 16 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10176: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10177: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 17 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10178: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10179: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 18 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10180: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10181: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 19 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10182: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10183: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 20 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10184: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10185: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 21 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10186: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10187: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 22 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10188: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10189: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 23 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10190: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10191: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 24 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10192: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10193: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 25 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10194: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10195: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 26 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10196: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10197: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 27 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10198: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10199: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 28 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10200: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10201: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 29 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10202: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10203: 020:37:39.760 ExpertName EURNZD,H1: Неудачная попытка 30 закрытия/удаления ордера #4448742 Ошибка: 4108
Line 10204: 320:37:39.760 ExpertName EURNZD,H1: unknown ticket 4448742forOrderClose function
Line 10243: 220:37:39.760 ExpertName EURNZD,H1: close #4448742 sell 0.02 EURNZD at 1.68131 at price 1.68356
2017.11.10 16:29:01.266 '8615385': order was opened : #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000
2017.11.10 20:37:38.949 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.277 '8615385': close order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 at price 0.00000
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD at 1.68131 sl: 0.00000 tp: 0.00000 closed at price 1.68356
2017.11.10 20:37:39.745 '8615385': order #4448742 sell 0.02 EURNZD closing at 0.00000 failed [Invalid parameters]
新しいWebAssembly技術の概要がhttps://habrahabr.ru/post/342180/ に掲載されており、なかなか興味深い。
WebAssembly (WASM) — новый бинарный формат, позволяющий запускать код в браузере...
WebAssemblyの応用例。
-ロードタイムの短縮
-計算速度の向上
-C/C++のソースコードを使用する
MQLコードコンパイルのためのウェブサービスの可能性についての中程度の噂を考慮すると。
WebAssemblyをベースにしたブラウザから直接カスタムExpert Advisorを実行するプロジェクトの実現性には、相応の疑問があります。
過去ログを出せば、もっと意味がある。Expert Advisorもターミナルも。
端子タブ
タブエキスパート
エラー3以降は、本当にクロージングが行われません。理解することができました。
Expert Advisor #1がクローズし、2つ目のExpert Advisorが同じポジションを同時にクローズしようとしていた。
作業ロジックを修正したら、エラーが出なくなりました。
BUT: ループ内のOrderClose()に渡されるパラメータが変更されていない場合、エラー番号は#3から#4108に変更されます。
なぜ、最初にエラー#3、次に#4108が投げられるのですか?- これが、残された疑問です。
{タイミングを見ると、ロックされた注文を閉じようとし(この場合、エラー139自体は表示されない)、それが閉じられた後(それに応じて注文のロックも解除される)、エラー3が発生します }。
なぜターミナルは注文がブロックされたという特定のエラーを出さず、代わりに一般的なエラー3が出るのですか?
BUT: ループ内のOrderClose()に渡されるパラメータが変更されていない場合、エラー番号を#3から#4108に変更する。
なぜエラー#3が先で、#4108が後なのですか?- これが、残された疑問です。
これは、OrderSelectが1個あったバージョンのコードですよね?そうすると、4108が正当化される。
3は他のEAがポジションをクローズしたとき、4108は既にクローズしたポジションを 決済しようとしたときです。
これは、OrderSelectが1個あったバージョンのコードですよね?そうすると、4108が正当化される。
3は他のEAがポジションをクローズしたとき、4108は既にクローズしたポジションを クローズしようとしたときです。
そうですね。
しかし、すでに決済されている注文を決済しようとすると、エラー139が発生しないのはなぜですか?
結局、むしろエラー139という事態に陥っている。そうでしょう?
不正確なエラーテキスト
正解です。
しかし、すでにクローズ送信された注文をクローズしようとすると、なぜエラー139が出ないのでしょうか?
結局、むしろエラー139という事態に陥っている。そうでしょう?
わからない。しかし、それもバグとは呼べない。
どうだろう。しかし、これもバグとは言い難い。
端末のログを見ると、エラーメッセージ 3はポジションを閉じた後に 発生しており、サーバーのロックを検知したはずのタイミングではありません。
エラーメッセージ139は、ほぼ0.5秒前に表示されていた可能性があります。この間、Expert Advisorは、注文が閉じられた後、エラー3が発生するように「ハング」しています。
ちなみにエラー3 Invalid Parametersはターミナルのログとその出力による4108だけで、EAタブにしか出ません。4108はクライアント側の処理のようですね。
ただ、科学的なゲージ法で手探りするのではなく、コードに落とし込むためのロジックを知りたい/理解したい...。)
これ以外にどんな状況でエラー139が出るのでしょうか...?
これほどまでにエラー139が出る状況はないのでは...?
保留中の注文/SL/TPが トリガーされたとき、またはポジションがストップアウトによって閉じられたとき(サーバー上でも)。
4108はどうだろう。
しかし、もう一度言いますが、私はそれを調べる理由がないと思います - 2つのEAが同時に閉じる命令を出した場合、そのうちの1つは間違いなくエラーになります(どんな違いがあるのでしょうか)。
処理は非常にシンプルで、OrderSelectを行い、OrderCloseTimeをチェックします。
wtf
司会者より
残念ながら、技術的な不具合により、説明文が削除されてしまいました。 再度ご記入の上、製品をお送りいただき、ご確認ください。
ご迷惑をおかけして申し訳ございません。
不便どころか、数回(毎回-10日待ち)、削除して、おっと、ごめん、消しちゃった、何とか自分で復元して、また10日待ち、というのは面倒です。- そして、それを実行しようとするとサイトがクラッシュしてしまう...。
これは一体何なんだ?どんな不具合が起きたら、これが消えてしまうのでしょうか?回復するための履歴がないのでしょうか?説明文は数日前からお蔵入りになっています。
今回、なぜ司会者からのメッセージがポップアップされなかったのでしょうか?
このワイプの問題は、1回では起きないというのが事実です。この不具合とされるものは、実は不具合ではないのです(おそらく遅延)。- コメントをどうぞ...
そして、ぜひ直してください。できないなら、私を雇いなさい。1週間後に2,000ユーロでやります。
なんて大失敗なんだ。
実際、消されたものは復元されるのでしょうか?司会者とのやりとりの半分が消えてしまった。フォーラムからのメッセージが消えている。そして、モデレーターは、空白になったメッセージを削除しています。
なぜメンテナンスモードがないのですか?- まずモードが起動し、次に作業中、そしてモードが復帰する、という順序がよいでしょう。
メッセージを投稿した途端、サイトがダウンしている。更新しようと思ったら、サイトがダウンしている...。
これでは仕事にならない......まあ、本気じゃないんですけどね......。
司会者への新たなコメントで、これ以上失わないように、抜けていた記述を重複して書きました。
メールで送るか、コメントに添付するか、24時間待って再チャレンジするか。