MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 556

 

このサイトからコピーしたコードで、コンパイラがMagicの 前に "undeclared identifier "と書いているのはなぜか、教えてください。

for (int pos=0; pos<=OrdersTotal()-1; pos ++) 
{
 if(OrderSelect (pos, SELECT_BY_POS)==true)
  {if (OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic &&OrderCloseTime()==0) // если у Вас есть отложенные ордера и открытие
  return;}
 else
  Print("OrderSelect() вернул ошибку - ",GetLastError());
}            
 //продолжае
 
VasiliKolchanov:

Magicの 前にこのサイトからコピーしたコードで、コンパイラが" undeclared identifier "と書いている理由を教えてください。

というのは、宣言されていないからに違いありません。

あるいはアドバイザーのパラメータや定数として、あるいは変数として、少なくとも何らかの形で...エンティティは存在しなければなりません:-)。

input int Magic=5566; // это чтобы он был в параметрах и можно поменять

// или const int Magic = 8899;

 
VasiliKolchanov:

このサイトからコピーしたコードで、コンパイラがMagicの 前に "undeclared identifier "と書いているのはなぜか、教えてください。

識別子Magicを使用したため、どの型(値も)かはどこにも記述されていない。その名前の変数(または定数)を宣言し、値を代入する必要があります。

 
VasiliKolchanov:

このサイトからコピーしたコードで、コンパイラがMagicの 前に "undeclared identifier "と書いているのはなぜか、教えてください。

なぜなら、あなたのコードのどこにも宣言されていないのですから、当然です。
 
Artyom Trishkin:
なぜなら、あなたのコードのどこにも宣言されていないからです。
皆さん、ありがとうございました。
 

みんな、どう対処したらいいか、何から始めたらいいか教えてくれ!

例:0.01 ロットの注文が 15 件あり、0.07 ロットの取引を決済する必要があります。

質問ですが、1回のOrderClose(...)で7つの注文または0.07を決済するにはどうしたらいいのでしょうか?

0.07を一度に入れると、出来高0.01の取引は表示されない。

プログラミングは初めてです

 
Rustam Bikbulatov:

みんな、どうしたらいいか、何から始めたらいいか教えてくれ!

例:0.01 ロットの注文が 15 件あり、0.07 ロットの取引を決済する必要があります。

質問ですが、1回のOrderClose(...)で7つの注文または0.07を決済するにはどうしたらいいのでしょうか?

0.07を一度に入れると、出来高0.01の取引は表示されない。

プログラミングは初めてです。

一度の注文で閉じることはできない。注文を選択 することしかできず、結果的にそれぞれの注文を削除することになるのです。また、小さいボリュームの注文を削除しても、オープンボリュームが残っています。当社の残りのオープンボリュームと比較しています。0.07の出来高が限界に達するまでクローズする。それしかないんです。

 
Rustam Bikbulatov:

みんな、どう対処したらいいか、何から始めたらいいか教えてくれ!

例:0.01 ロットの注文が 15 件あり、0.07 ロットの取引を決済する必要があります。

質問ですが、1回のOrderClose(...)で7つの注文または0.07を決済するにはどうしたらいいのでしょうか?

0.07を一度に入れると、出来高0.01の取引は表示されない。

プログラミングは初めてです。

ブローカーが反対売買を許可している場合、出来高0.07の反対売買注文を1つ出して、この出来高の利益/損失価格を固定することができます。さて、その後も7つの反対側のクローズ操作(OrderCloseBy()関数)を行う必要があります。この方法で実行する取引 操作はもう1つあります。メリットは、7つの注文がすべて1つの価格で決済されることです。

 

皆さん、こんにちは。

EAの速度、そしておそらくコードの信頼性と正しさについてアドバイスをお願いします。

私は、1ティックごとに未決済注文と保留注文を 参照し、必要に応じて変更するようにしています。

OrderSelectの マニュアルには、「SELECT_BY_POSパラメータで注文を 順次選択 した場合、 トレードサーバーから 受信した順に情報を提供する」と記載されています。"

そこで、注文の種類、価格、コメントなどを格納する配列を作成できないか、という疑問が生じます。各ティックで配列を実行し、必要に応じてOrderSelect 関数にアドレスし、注文のユニークなコメントを使用して選択を 行うでしょうか。

 
Decromor:

皆さん、こんにちは。

アドバイスをお願いします。主にEAのスピードと、おそらく信頼性と文章の正しさについてです。

私は、1ティックごとに未決済注文と保留注文を 参照し、必要に応じて変更するようにしています。

OrderSelectの マニュアルには、「SELECT_BY_POSパラメータで注文を 順次選択 した場合、 トレードサーバーから 受信した順に情報を提供する」と記載されています。"

そこで、注文の種類、価格、コメントなどを格納する配列を作成できないか、という疑問が生じます。各ティックで、我々は、配列を実行し、必要に応じて、OrderSelect 関数に対処し、注文のユニークなコメントによって選択を 行う必要があります

OrderSelect()は端末内部で実装されており、サーバーへのリクエストはありません。そのため、毎ティックごとにオーダーリストを呼び出すことは悪いことではありません。これはまさに、ほとんどのEAが行っていることです。

また、配列についてのご質問は、プログラムのアーキテクチャに関連するものです。大量の注文で動作する複雑なEAの場合、絶対に必要です。Expert Advisor が単純なロジックで単一の注文で動作する場合、配列は冗長です。

注文の配列があったとしても、OrderSelect()を考慮しなければならないことだけは言及しておく。結局のところ、注文がまだ存在しているかどうかをティックごとにチェックしなければならないのです。また、そのパラメータを変更することも可能です。