どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1109

 
LRA:
この質問は、例えば研修制度に関連するものです。配布を 受けるには、フラッシュドライブにMT4をインストールします。または、フラッシュドライブに端末フォルダをコピーする。そして、このフォルダを何台ものコンピューターに何度でもコピーすることができます。このような配布は、バックアップ、バックアップ、リストアの目的で有用である...。ターミナルを/portableスイッチで起動するようにしましょう。そうしないと、あなたのコンピュータに不便な無駄なフォルダが作成されます。この質問については、以下のリンクにある別のスレッドで 詳しく説明されています。

設定方法は?

ダウンロードしたインストーラーは、インターネットから何もインストールしない。

 

インストーラーを起動すると、ファイルのダウンロードを指示するウィンドウが表示される。

すると、別のウィンドウが表示されます

インストーラーがプロキシ設定を 要求しているが、私は持っていない。

 
 
polpolpol:

インストーラーを起動すると、ファイルのダウンロードを指示するウィンドウが表示される。

すると、別のウィンドウが表示されます

インストーラーがプロキシ設定を要求しているが、私は持っていない。

アンチウィルスをオフにして、メモリからリセットする必要があります。
 

こんにちは、以下のエントリで宜しいでしょうか?この関数を呼び出すと、保留中の注文が すべて削除されるはずです。

void DeletedOrders()
         {
         for (int i=0; i<=OrdersTotal(), i++)
             {
             if (OrderSelect(i,SELECT_BY_POS))
                type=OrderType();
             if (type==2 || type==3 || type==4 || type==5)
                OrderDelete(i,clrNONE);
             }
         return();
         }  
 
bobrush:

こんにちは、以下のエントリで宜しいでしょうか?この関数は、呼び出されたときに、すべての保留中の注文を削除する必要があります。

いいえ、もちろんそんなことはありません。ループ内でオーダー番号ではなく、チケットを指定する必要があります:OrderDelete(OrderTicket(),clrNONE)

そして、その条件は、if(type>1) で十分です。

また、エラーコードを もっと頻繁に印刷することをお勧めします-それは助けになります。

そうそう、"void "型の関数は何も返してはいけません。通常の実行ではreturn() は必要ありませんが、何らかの条件によって関数を早期に終了させる場合のみ必要です。

 
bobrush:

こんにちは、以下のエントリで宜しいでしょうか?この関数を呼び出すと、保留中の注文がすべて削除されるはずです。

残高超過と貸勘定超過の操作のために、それぞれtype=6とtype=7の文書化されていない注文タイプがまだ存在することに留意してください。

i<=OrdersTotal() の代わりに、i<OrdersTotal() の方が、不必要にOrderSelect を呼び出すことなく、良いだろう。

また,このループは最後から最初へ渡さなければなりません.そうしないと,順序配列のi番目の要素が削除された後に順序配列が更新される時間があった場合,i番目の場所の元i+1番目の要素がスキップされます.端から見ていくのがよいでしょう。

開発者がorders配列の順序性を一切保証していないことを考えると、実はその配列の順序の並びが、1つ削除しても変わらないことを保証することはできないのです。これなら、かなり信頼性が高いのではないでしょうか。保留中の注文が 検出されるまで、ループを回します。ループが終了します。発見した順番に削除していく。Sleep (100) を待って、オーダーの配列を更新します。次に、保留中の注文を見つけるためにループに戻りますが、注文の新しい配列があります。全探索を行うが、前のループを再開することはない。そして、保留中の注文が見つからなくなるまで、これを3回繰り返す必要があります(検索するループ、1つの注文を削除、配列が更新されるのを待つ)。

 
evillive:

いいえ、もちろんそんなことはありません。ループ内のオーダー番号ではなく、チケットを指定する必要があります:OrderDelete(OrderTicket(),clrNONE).OrderDelete(OrderTicket(),clrNONE);

そして、その条件は、if(type>1) で十分です。

また、エラーコードをもっと頻繁に印刷することをお勧めします-それは助けになります。

そうそう、"void "型の関数は何も返してはいけません。通常の実行ではreturn() は必要ありませんが、何らかの条件によって関数を早期に終了させる場合のみ必要です。


ありがとうございます。
 
Vlad143:

残高超過取引と貸勘定超過取引のために、それぞれ type=6 と type=7 の文書化されていない注文タイプがまだ存在することに注意。

i<=OrdersTotal() の代わりに、i<OrdersTotal() の方が、不必要にOrderSelectを 呼び出さずに済みそうです。

また,このループは最後から最初へ渡さなければなりません.そうしないと,順序配列のi番目の要素が削除された後に順序配列が更新される時間があった場合,i番目の場所の元i+1番目の要素がスキップされます.端から見ていくのがよいでしょう。

開発者がorders配列の順序性を一切保証していないことを考えると、実はその配列の順序の並びが、1つ削除しても変わらないことを保証することはできないのです。これなら、かなり信頼性が高いのではないでしょうか。保留中の注文が検出されるまで、ループを回します。ループが終了します。発見した順番に削除していく。Sleep (100) を待って、オーダーの配列を更新します。次に、保留中の注文を見つけるためにループに戻りますが、注文の新しい配列があります。全探索を行うが、前のループを再開することはない。保留中の注文が見つからなくなるまで、3つのループ(検索のループ、注文1件の削除、配列の更新待ち)が発生します。


つまり、for(OrdersTotal()-1,i=0,i--)とループの最後に、sleepとbreakをする?
 
Vlad143: Sleep(100)でオーダーの配列が更新されるのを待ちます。
IMHO, IMHO, 私の個人的な意見ですが、Sleep(100) の代わりにwhile(!RefreshRates()); の方が良いのでは、最後にセミコロンがあります。