要塞:初心者を助けるために - ページ 4

 
Sergey Chalyshev:
アバと関係あるのか?掲示板に書き込めない、永久追放された。
なるほど、「一部」禁止があるのは知りませんでした。それは残念なことです。
 
Sergey Chalyshev:
アバと何の関係があるんだ?掲示板に書き込めない、永久追放だ。

いや、追放されたんだ。

禁止されたユーザーは、クロスで書かれています。

 
Andrey Khatimlianskii:

いや、追放されたんだ。

禁止されたユーザーは、×印で表示されます。

私もそう思っていました、司会者に聞いた方が確実です。
 
Mikhail Filimonov:

特徴

OrderSend()のリターンコードとオーダーチケットに受信確認(TRADE_RETCODE_PLACED)が発生する。

であり、OnTradeTransaction()のOrderSendAsync()関数については、全く意味しない。

注文は本当に交換に出される。

そのため、注文状況の追加チェックが必要です(注文に関する他の操作と同様)。

if ( OrderSend( request, result ) )
{
  if ( result.retcode == TRADE_RETCODE_PLACED )
  { 
    ticket = result.order;
  }
}

https://www.mql5.com/ru/docs/constants/structures/mqltraderesult

トレード タイプがTRADE_ACTION_PENDINGの 時のみチケットが満たされると書いてある。

オペレーションがTRADE_ACTION_DEALの場合、result.orderにオーダーチケットが返されますか?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура результата торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
はい。
 
Sergei Vladimirov:
はい。

OrderCheck()の応答でエラー10013が発生するのはどのような場合ですか?

以下は、私のスクリプトのコードです。

   MqlTradeRequest   m_request;         
   MqlTradeCheckResult m_check_result;  
   
   m_request.action      =TRADE_ACTION_DEAL;
   m_request.symbol      =Symbol();
   m_request.magic       =001;
   m_request.volume      =1.00;
   m_request.type        =ORDER_TYPE_SELL;
   m_request.type_filling=ORDER_FILLING_RETURN;
   if(!OrderCheck(m_request,m_check_result))
      Print(__FUNCTION__+": order check failed.");
   else
      Print(__FUNCTION__+": order check passed.");
   Print(__FUNCTION__+": symbol=",m_request.symbol,", operation=",m_request.type,", volume=",m_request.volume);
   Print(__FUNCTION__+": retcode=",m_check_result.retcode,", balance=",m_check_result.balance,", equity=",m_check_result.equity,", profit=",m_check_result.profit,
            ", margin=",m_check_result.margin,", margin_free=",m_check_result.margin_free,", margin_level=",m_check_result.margin_level,
            ", comment=",m_check_result.comment);

以下は、私が取得したログです。

Check (RTS-6.16,M30)    OnStart: retcode=10013, balance=0.0, equity=0.0, profit=2.121995790965272 e-314, margin=0.0, margin_free=0.0, margin_level=0.0, comment=Invalid request
Check (RTS-6.16,M30)    OnStart: symbol=RTS-6.16, operation=1, volume=1.0
Check (RTS-6.16,M30)    OnStart: order check failed.
 
igorbel:

OrderCheck()の応答でエラー10013が発生するのはどのような場合ですか?

以下は、私のスクリプトのコードです。

以下は、私が取得したログです。

m_request.expiration =0を追加すると、ヘルプに書いてあるが、パスした。

交換実行。

取引所執行モードでポジションを建てるための取引注文。5つのフィールドの指定が必要です。

  • アクション
  • 記号
  • ボリューム
  • タイプ
  • タイプフィリング

また、マジックやコメント欄の指定も可能です。

 

しかし、怪しさはそれだけでは終わらない。

1 ロット 購入する。

Check (RTS-6.16,M30) OnStart: retcode=0, balance=530863.24, equity=538989.4399999999, profit=2.121995790965272e-314, margin=211242.25, margin_free=319620.99, margin_level=255.1522907941001, comment=Done

Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=1.0

取引の証拠金 211242.25、現在の証拠金と同じ - RTS-6.16 の現在のショートポジションは 2 契約であるため、すべて正しいです。1 単位のイニシャルマージ ン RTS-6.16 17388.75

ロットを1つ増やします。

2区画 購入する。

Check (RTS-6.16,M30) OnStart: retcode=0, balance=651428.4399999999, equity=659212.76, profit=2.121995790965272e-314, margin=211242.25, margin_free=440186.19, margin_level=312.0648260468727, comment=Done

Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=2.0

オールオッケー、現在の位置が2セルなので、マージンはそのままです。

現在3件の購入契約。

2016.04.28 01:26:47.319 Check (RTS-6.16,M30) OnStart: retcode=0, balance=651428.4399999999, equity=658739.4, profit=2.121995790965272e-314, margin=246019.75, margin_free=405408.69, margin_level=267.7587470111648, comment=Done

2016.04.28 01:26:47.319 Check (RTS-6.16,M30) OnStart: symbol=RTS-6.16, operation=0, volume=3.0

マージン額一時246019.75。どうして?1契約で17,000円です。他の値はどうでしょうか(前のケースも)。エクイティとバランスはどこから来たのですか?margin_freeも間違っています、利益の話ではないです。

どなたか、私のやり方が悪いのかもしれませんが、チェックしていただけませんか?


 
igorbel:

m_request.expiration =0を追加したところ、ヘルプに書いてあるのに通過しました。

すべての変数と構造体は、宣言後すぐに必ずゼロで初期化します。有効期限欄にゴミが入ってたからエラーになったんだろ。

MqlTradeRequest   m_request;         
MqlTradeCheckResult m_check_result; 

ZeroMemory(m_request);
ZeroMemory(m_check_result);
// теперь заполняйте нужные поля
 
Sergei Vladimirov:

すべての変数と構造体は、宣言後すぐに必ずゼロで初期化します。有効期限にゴミが残っていたため、エラーになりました。

ありがとうございます。しかし、OrderCheck()は、少なくともFORTSでは、ほとんど役に立たない関数なので、放棄しました。まず、結果が不明確です。しかし、値が多少正しくても、取引所で注文が拒否される確率は常に存在する。そのため、オーダーステータスORDER_STATE_REJECTEDを見て、コメントも見なければならない。そうすると、注文のボリュームを減らして送り直さなければなりません。もちろん、これだけでは取引は速くなりませんが、どうすればいいのでしょうか?