エラー、バグ、質問 - ページ 1820

 
Maksym Mudrakov:

input string Somevalue = "Maxim";
...
void OnTick(){
   Comment(Somevalue);
}


MQL5プログラムは、コメントを印刷します。

"1487811600"

なぜそうなるのか?正しい文字列値を出力するには?

エラーを探します。または、完全な再現性のあるコードを投稿してください。チェックコード

//+------------------------------------------------------------------+
//|                                                        Test.mql5 |
//|                                      Copyright 2017, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input string Somevalue="Maxim";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Comment(Somevalue);
  }
//+------------------------------------------------------------------+


を実行しても、エラーは再現されません。

また、「コメント」を「印刷」に置き換えることをお勧めします。他のプログラムが、チャート上のコメントを 些細なことで上書きしてしまう可能性があるからです。

ファイル:
test.mq5  2 kb
 
別のチャートでEAを再起動したところ、正常に動作するようになりました。それは変ですね。でも、ありがとうございました。
 
Maksym Mudrakov:
別のチャートでEAを再起動したところ、正常に動作するようになりました。それは変ですね。でも、ありがとうございました。
特に、変数の入力がある場合、このタイプの変数はコード内で再代入することができません。このため、密かに干渉してそのコメントを出力する第2のプログラム(EAまたはインジケータ)のオプションが残されています。
 
fxsaber:

わかる人、説明してください。なぜOrderSendが正常とされるのか、未だに理解できない

私が理解する限り、OrderSendは注文が サーバーで処理されるためにキューに入るまで待つだけで、処理結果までは待ちません。
 
最適化中にテストエージェントが 脱落することがある。ローカルエージェントが127.0.0.1:3000に接続できず、テストを中止します。
 
Комбинатор:
私が理解する限り、OrderSendは注文が サーバーで処理されるためにキューに入るまで待つだけで、処理結果までは待ちません。
ここが不明確なのです。
 
OrderSendは trueを返し、ログには次のような行が表示されます。
2017.02.23 14:18:58.013 Trades  '5245006': failed buy limit 0.01 USDCNH at 6.85199 [Request rejected due to absence of network connection]
 

アプリケーション内にOrderSend-bugを再現するスクリプトがあります。マーケットウォッチを実行し、すべてのシンボルでBuyLimitをオープンします。その後、すぐに修正(TP設定)し、削除しようとします。注文の変更または削除が不可能な場合、スクリプトは対応するメッセージを表示し停止する。

全てはsynchronous OrderSendで行われる。そして、OrderSend(BuyLimitの設定)が成功した後、保留中の注文に対して 何もできない(変更も削除もできない)状況に、ほとんどすぐに遭遇することになるのです。

営業損益

2017.02.23 14:24:49.828 OrderSend-StartedBug (Si-3.17,M1)       ModifyError GetLastError() = 4756 EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE)) = ORDER_STATE_STARTED
2017.02.23 14:24:49.828 OrderSend-StartedBug (Si-3.17,M1)       DeleteError GetLastError() = 4756 EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE)) = ORDER_STATE_STARTED

開発者の皆様、これはバグOrderSendなのでしょうか、そうでないのでしょうか?


しかし、SZZでは、対応する注文がSTARTED状態である限り、TRADE_ACTION_DEALでのOrderSendは終了しない。

スクリプトの面白さは、FXOpen-MT5サーバーでゆっくり体験していただけます。

ファイル:
 
fxsaber:

成行注文でポジションが 正常にオープンさ れた場合、毎回ゼロのResult.dealが取得されるのですか?

SDから
Result dealのチケットが埋まることを保証するものではありません。充填されるかどうかは、機器の実行モードと特定のサーバーの設定に依存します。
ゼロでないResult.dealを設定した人 - 行動を起こす。
 
OpenCL not found. Error code=5101
Error in OpenCL initialization. Error code=5101
CPUの内蔵グラフィックはOpenCLに対応していないのですか?OpenCLもGPUが必要だったわけではありません。