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

 

すべてのプロジェクト ファイルを別フォルダにコピーする方法(相対パスを維持する)。

例えば、あるコードを共有したい。いろいろなところから十数個のmqhファイルを引っ張ってくるのです。

今、私はこれらのファイルを手動で検索する必要があり、しばしばそれらのすべてを見つけることができなかったり、不要なものを取ってしまうことがあります。このプロセスを自動化し、ソースを共有できるようにするにはどうしたらよいでしょうか。

 

プロジェクトを すべてのファイルとともに削除するにはどうすればよいですか?

kodobaseのターミナルから十数個のファイルを含むプロジェクトをダウンロードしたのですが、どのように削除すればいいのでしょうか?

 

コンパイルエラー

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) 一般に、パターン(1)では、A->(2)とconst A->(3)の両方がTに置き換わることがある。テンプレート(4)などとは異なり、A->(5)のみをTに置き換えることができる。

これでA->(2)の置換しか効かなくなったので、フルに使うにはテンプレートを1つではなく2つ作らなければなりません。

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

注:明示的な定義(6)は一般的な場合(*)より優先されます。

合計:パターン(6)がない場合、署名(3)のあるパターン(1)が適用さ れると予想される場合

 
A100:
本当にコドバシに何か投稿してください!」とお願いしています。教育目的のため。
 
1) MT5は、OrderSendコールが 発生した後、オープンポジションと取引履歴を多少遅れて更新するのですか?はい」の場合、推奨される待ち時間はどのくらいですか?

2) 比較のため、MT4でも同じ質問をします。
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

MT5-OrderSendは完全な同期型ではなく、取引環境と同期していません。これは、ヒストリーの読みが実際の状況に対応していないことを意味します。

タイムアウトなしは論外。同期の問題はサーバーレベルではなく、端末レベルで対処しなければならないので、確実な解決策はない。

実は、MT4ブリッジの開発者が直面していることに、MT5ユーザーも直面しているのです。

OrderSendが送信された場合、それが行われたことを記憶しておく必要があります(ここが潜在的な脆弱性です)。そして、OnTradeに対応するメッセージが来るまで、現在の履歴(取引環境)を無視します。届いたら、REMEMBER to FORGET(忘れることなく)。

REMEMBERがない場合は、MT4と同様に履歴を信頼することができます。

2) 比較のため、MT4でも同じ質問をします。
MT4-OrderSendはFULLY同期です。
 

Версия и битность терминала

バージョン:5.00、ビルド1445(2016.10.07)、32ビット。

問題の内容

標準インジケーター(MT5内蔵)のデータを、別のタイムフレーム(インジケーターが設置されているチャートの現在のタイムフレームとは異なる)からコピーすることに失敗する。同時に標準インジケータの「ハンドル」も取得できますが、CopyBuffer() 関数は常に -1 を返します。テスターの可視化モードでは問題は発生しませんが、チャート上のターミナル(インジケーターが取り付けられている)では、常に問題が発生します。

アクションの流れ

は、上記のとおりです。

取得結果

上記に記載。

期待される結果

他の時間枠の標準(できればカスタム)指標のデータを、指標に正しくコピーすること。

追加情報

それ以前のビルドでは、この問題は発生しませんでした。

このような問題に遭遇された方はいらっしゃいますか?端末の "バグ "なのか、私の "バグ "なのか?

 

fxsaber:

...OrderSendが送信された場合、それが行われたことを記憶しておく必要があります(ここが潜在的な脆弱性の場所です)。次に、適切な OnTrade メッセージが届くまで、現在の履歴(取引環境)を無視する。それが届くと同時に、REQUIREDはFORBIDDENになるはずなのですが......。

私の記憶が壊れているのか、OnTrade 部分のドキュメントが 更新されたのか、どちらかです。

...OrderSend()関数の呼び出しが成功し、trueを返した場合、これは取引サーバーが実行される注文をキューに入れ、チケット番号を割り当てたことを意味します。サーバーがこの注文を処理すると同時に、取引イベントが発生します。そして、ユーザがチケットの値を覚えていれば、OnTrade()イベントを処理する際に、このチケットを使った注文に何が起こったのかを正確に知ることができる......。

つまり、i番目のステップでOnTradeをトリガーすることは、サーバー上で注文が受理されることを保証することになる。

 
Dennis Kirichenko:

私の記憶があいまいなのか、それともドキュメントの OnTradeの 部分が更新されたのか、どちらかです。

つまり、ステップiでOnTradeをトリガーすることは、サーバー上で注文が受理されることを保証することになる。

チケットの記憶(OrderSendで返却されることではない)、またはtrue-returnでのOrderSendが行われたという事実そのものがREALである。
 
fxsaber:
チケット(OrderSendで返却されることではなく)、またはtrue-returnでのOrderSendが行われたことを記憶することは必須である。

そこでは全て問題なく、発注はOnTradeTransactionで 制御されるべきです。ところで、Plaza2を通じて直接取引所に接続した場合も状況は同じで、発注に関するメッセージの到着を制御する必要があります。MT4では、この機能は同期式ですが、MT5でも同様のオプションがあり、この場合のみ、関数が応答を受け取らないまでロジックが停止します。

必要であれば、コントロールクラスをお送りします。これはマーケットプレイス用に書かれたものですが、近々リミッター用に最終調整する予定です。