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

 

このスクリプトを3回実行したときのスクリーンショットがこちらです。

私には効きません。

 
Prival:

バグ-以前は動作していたが、今は動作しない。

メッセージをありがとうございました。

これからも探し続けます。

 

PrintCheckResult メソッド(Trade.mqhファイル、Tradeクラス、CTradeクラス)に小さなバグがあることがわかりました。

void CTrade::PrintCheckResult(void) const
{
printf("CheckResult")。
// printf("%d,%f,%f,%f,%f,%f,'%s'", - 最後の1つ以外のパラメータは不要です。
printf("%d,%f,%f,%f,%f,%f,'%s'",
m_check_result.retcode、m_check_result.balance、m_check_result.equity。
m_check_result.margin、m_check_result.margin_free、m_check_result.margin_levelです。
m_check_result.comment)。
}

文字列の代わりにprintf("%d,%f,%f,%f,%f,%f,%f,'%s'", - コメントアウト

という行があるはずです。

確認したところ、修正された機能は正常に動作していました。

 
Prival:

バグ-以前は動作していたが、今は動作しない。

メッセージをありがとうございました。次回のアップデートで利用可能になる予定です。現在のバージョンで動作させるには、定数や一般的な乗算に対して明示的なキャスティングを使用します。

void OnStart()
  {
  // вот так работает
     Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
  // а вот так нет (а раньше работало)  
     datetime    time_end=0;
     time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
     Print(time_end);
  }
 
retired:

PrintCheckResult メソッド(Trade.mqhファイル、Tradeクラス、CTradeクラス)に小さなバグが見つかりました。


メッセージをありがとうございました。

すぐに修正されるでしょう。

 
mql5:

メッセージをありがとうございました。次回のアップデートで利用可能になる予定です。現在のバージョンで動作させるには、定数または一般的な乗算に対して明示的なキャスティングを使用します。

ありがとうございます。私の理解が正しければ、それはタイプ変換による ものでした。コンパイル時のメッセージがないのが残念、もっと見つけやすかったはずなのに
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 
Prival:
ありがとうございます。私の理解が正しければ、それはタイプ変換による ものでした。コンパイル時にこのようなメッセージがないのは残念で、もっと見つけやすくなるはずです
あなたのコードは正しいです、何も文句を言うことはありません。x64では本当にオペランド変換でエラーが発生し、修正されました。アップデートを待つ。
 

ENUM_TRADE_RETURN_CODES の エラーを正しく処理するために、正しく解釈する必要があります。それらを詳しく説明する資料はないのでしょうか?

特に、以下のようなエラーは完全に把握できていない。

10008

トレード_レトコード_プレイス

ご注文

10021

トレード・レコード・プライスオフ

リクエストを処理するための見積もりはありません


10028

トレード_レトコード_ロック

クエリーの処理がブロックされている

10029

トレード_レトコード_フローズン

順序または位置の凍結

どなたかこの問題を解決してください。

 
retired:

ENUM_TRADE_RETURN_CODES の エラーを正しく処理するために、正しく解釈する必要があります。それらを詳しく説明する資料はないのでしょうか?

特に、以下のようなエラーは完全に把握できていない。

10008

トレード_レトコード_プレイス

ご注文

10021

トレード・レコード・プライスオフ

リクエストを処理するための見積もりはありません


10028

トレード_レトコード_ロック

クエリーの処理がブロックされている

10029

トレード_レトコード_フローズン

順序または位置の凍結

どなたかこの問題を解決してください。

上記はすべて、端末の要求に応じてサーバーが返すコードのことである。そのため、「トレードサーバーのリターンコード」の 項ですべてを説明しています。

このリストには、エラー以外のものも含まれていると考えるのが自然だろう。

では、順番に。

については

10008

トレード_レトコード_プレイス

ご注文


この回答はエラーではなく、単にクライアント(取引端末)に注文が成功したことを知らせるものであると考えるのが自然であろう。

この場合、3つの解決策が考えられます。

1.答えを全く処理しないこと。

2. OnTrade()ブロックで発注を処理する - かなり許容範囲ですが、私の意見ではあまり正しくありません。

私の考えでは、これが機械的な取引に最適な処理方法だと思います。

追記

私は、注文場所でサーバーの応答を処理し、OnTrade()でトレーダー、サーバー、他のExpert Advisorのアクションの結果をキャッチするのが好きです。

例えば、OnTrade では、トレーダーの取引操作(注文の発注や削除、ポジションの操作)をキャッチすることができます。


に関して


10029

トレード_レトコード_フローズン

注文またはポジションが凍結されている


ポジションや注文が「凍結」される(それに対する操作が禁止される)レベルという ものがあります。

このレベルは、サーバーが注文やポジションでの行動を禁止する、現在の価格との距離です。この距離はピップス単位で、各シンボルごとに設定されています。

SymbolInfoInteger( )パラメータ SYMBOL_TRADE_FREEZE_LEVEL を指定して取得することができます。

サーバーからそのような応答があった場合、次の2つのうちどちらかが起こるのを待つ必要があります。

1.価格が必要な距離( シンボルのプロパティで指定された距離より大きい 移動して いない。

2. 注文や役職が、それらに設定された条件下で機能しないこと。


に関して

10021

トレード・レコード・プライスオフ

依頼を処理するための見積もりはありません


おそらく、この回答を得る際には、シンボル名の確認(念のため)、シンボルが選択されていることの確認(テスターやマルチキャストでは重要)、サーバー上も含めた履歴の確認(ダウンロードが必要な場合)、おそらく市場が開いていてシンボルの取引が可能なことの確認が必要でしょう。

追記

ただし、ここでは、開発者側で指定する必要があります。


についてはどうですか?

10028

トレード_レトコード_ロック

リクエストの処理がブロックされている


これは、上に挙げたサーバーの回答の中で最も具体的なものでしょう...開発者からの説明が必要な可能性が高いです...(おそらく一定時間待てばいいという前提です)。

 
Interesting:

について


10029

トレード_レトコード_フローズン

順序または位置の凍結


ポジションや注文が "凍結 "される水準があります(その水準以下では、いかなる行動も 禁止されます)。

このレベルは、サーバーが注文やポジションでの行動を禁止する、現在の価格との距離です。この距離はピップス単位で、各シンボルごとに設定されています。

SymbolInfoInteger( )パラメータ SYMBOL_TRADE_FREEZE_LEVEL を指定して取得することができます。

サーバーからそのような応答があった場合、次の2つのうちどちらかが起こるのを待つ必要があります。

1.価格が必要な距離( シンボルのプロパティで指定された距離より大きい 移動して いない。

2. 注文またはポジションが、それらに設定された条件を満たしていない場合。


10029:TRADE_RETCODE_FROZEN:Order or position is frozen "というコードで理解 しました。

しかし、それ以外のものについては、まだ疑問が残っています(推測ではなく、正確な答えが知りたい)。

10008

トレード_レトコード_プレイス

ご注文

10021

トレード・レコード・プライスオフ

リクエストを処理するための見積もりはありません


10028

トレード_レトコード_ロック

リクエストの処理はブロックされています

特に、サーバー上で注文がキューに入ると、チケットが割り当てられ、「10009:TRADE_RETCODE_DONE:Request executed」というコードが返されるので、「10008: Order has been placed」の意味がよくわからないのである。