[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 275

 

という疑問があります。

Open[1] < Close[1]となり、 Open[1]-Close[1] を引くとマイナスで値が出る場合、マイナスなしで値を得る方法、常に正の値にする方法、 Openと Close 間の距離を計算する必要がありますが、他の方法はないでしょうか。

ありがとうございます。

 
Martingeil >> :

という疑問があります。

Open[1] < Close[1]となり、Open[1]-Close[1]を引くとマイナスで値が出る場合、マイナスなしで値を得る方法、常に正の値にする方法、OpenとClose間の距離を計算する必要がありますが、他の方法はないでしょうか。

>> ありがとうございました。

https://docs.mql4.com/ru/math/MathAbs

 

;)>> ありがとうございました

 

ごきげんよう。

MT4用のEAを作成 する際、このEAの少なくとも1つの注文がオープンされたかどうかをプログラム的に(つまりEA自体のコードで)判断する必要があります。そのような機能があるかどうか、教えてください。おそらく、あるとすれば、次のようなものでしょう。

ブール値(このマジックナンバーのEAオーダーがオープンされているかどうか)

{答え= True/False}。

?

専門家の方々へ - 助けてください - すでに頭を悩ませています。

P.S.- 注文番号のオプションを試しましたが、うまくいきませんでした。

 
waitra >> :

ごきげんよう。

MT4用のEAを作成する際、このEAの少なくとも1つの注文がオープンされたかどうかをプログラム的に(つまりEA自体のコードで)判断する必要がありました。そのような機能があるかどうか、ご存じですか?

この機能は使えるのでしょうか?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru/                  |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfPositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), kp=0;

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++)                                    {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES))      {
      if (OrderSymbol()== sy || sy=="")                   {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if ( op<0 || OrderType()== op)                   {
            if ( mn<0 || OrderMagicNumber()== mn) kp++;
          }}}}}
  return( kp);
}

使用例:この関数をコードの一番最後に置き、ポジションを建てるときにチェックします。



if ( NumberOfPositions(NULL,OP_BUY, Magic)< 1) {
// если нет окрытых OP_BUY позиций с заданным магиком, покупаем
ticket=OrderSend(Symbol(),0, Lots,Ask, Slippage,Bid- SL*Point,
                      Ask+ TP*Point, NULL, Magic ,0,Blue);
                                              }

もし、ポジションを探すのではなく、保留中の注文を探すのであれば、以下の関数を使用することができます。

関数 NumberOfOrders()。
この関数は、注文数を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。
sy - 楽器の名前です。このパラメータを設定すると、この関数は指定された商品の注文のみをチェックします。NULLは現在の計測器、""(デフォルト)は任意の計測器を意味する。
op - 保留注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。初期値の-1は任意の順序を意味する。
mn - オーダー識別子(MagicNumber)。初期値の-1は任意のMagicNumberを意味する。

https://www.mql5.com/ru/forum/107476/page12

 

ファイルの提供内容を説明してください。

#include <stdlib.mqh>
#include <stderror.mqh>

できれば、何か簡単な方法で。

ありがとうございます。

 
Serbov писал(а)>>

ファイルの提供内容を説明してください。

できれば、何か簡単な方法で。

ありがとうございます。

ライブラリファイルが「宣言」されていれば、宣言されたファイルの関数を、あたかもソースに含まれているかのように使用することができる。

 
Serbov >> :

このファイルから何がわかるのか、説明してください。

できれば、シンプルにお願いします。

ありがとうございます。

これらのファイル(すでにmt4に初期組み込まれている)から関数を使用する(呼び出す)とき、我々は、EAの不正な動作の場合には、コードで行ったエラーの番号をログで見ることができます.

例えば、GetLastError()関数を呼び出すとします。

ticket= OrderSend(Symbol(),OP_BUY, lots,Ask,3, SL, TP,"Name_Expert", Magic,0, clOpenBuy );
   if( ticket < 0)
 {Print("Ошибка открытия ордера BUY #", GetLastError());  } 

この場合、コードに誤りがあったり、外部パラメータの設定が間違っていたりすると、ログにそのエラーの番号が表示されます。

例えば、130。

そして、その番号の解読は、-https://book.mql4.com/ru/appendix/errors。

しかも、どこに間違いがあるのかがすでに分かっているので、コード全体を調べる必要はないのです

 
rid писал(а)>>

この機能は使えるのでしょうか?


使用例:関数自体をコードの一番最後(START関数の外)に置き、ポジションを開くときにチェックする。



もし、ポジションを探すのではなく、保留中の注文を探すのであれば

関数NumberOfOrders()。
この関数は、注文数を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。
sy - 楽器の名称。このパラメータを指定すると、指定した商品の注文のみをチェックします。NULLは現在の計測器、""(デフォルト)は任意の計測器を意味する。
op - 保留注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。デフォルトの値である-1は、任意の順序を示す。
mn - オーダー識別子(MagicNumber)。デフォルト値 -1 は任意のMagicNumberを意味する。

https://www.mql5.com/ru/forum/107476/page12

ありがとうございます。

bool Open_Buy()

{

   bool res=false;    


if( условие_1)        { 

       if ( NumberOfPositions(NULL, Magic)< 1) // если нет открытых позиций с заданным магиком

          { res=true; }}

else  

   {

    if( условие_1) 

       { 

       if ( NumberOfPositions(NULL, Magic)> 1) // если советник уже открывал позиции

       {

          if ( условие_2)              { 

             res=true; }

           } 

}}

return( res);

}

もし、売りまたは買いの条件があり、注文をオープンまたはクローズしていないことを確認したい場合、この場合、最初の条件のみが機能します。 また、EAが過去に注文を出したことがあれば、注文が出されたときに、1つ目の条件+2つ目の条件が発動されるはずです。

いただいたリンクに目を通しましたが、もしかしたらExistOrders(); の方が適しているのでしょうか?

(が、どうやら当分スキルがないようなので、正直言って配置できませんでした)。

 

関数を正しく呼び出していない。

この関数は次のように呼び出されます: if (NumberOfPositions(NULL,Magic)> 1)

このように表示されるはずです。

if( условие_1)        { 

       if ( NumberOfPositions(NULL,-1, Magic)< 1) 
// если нет открытых позиций с заданным магиком

          { res=true; }}

違いを感じてください("-1 "が省略されています)!そして、コードを受け取ってください。

それを制御するために、チャートにコメントを印刷することができます。例えば、こんな感じ(START関数の冒頭)。

Comment ("Количество текущих открытых советником позций = ",
                                  NumberOfPositions(NULL,-1,Magic)  );
Magic_2=Magic*3;
2つ目の条件については、私なら(「難しく考えずに」)別のマジシャンと別の関数Open_Buy_2()を設定して、2つ目の条件によってポジションをオープン します!

2番目の条件のコードは次のようになります。

 if ( условие_2)                          { 
  if ( NumberOfPositions(NULL,-1, Magic)== 1)   {
    if ( NumberOfPositions(NULL,-1, Magic_2)< 1) { 
..... .....