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

 
Artyom Trishkin:

それは不思議な感覚ですね。不要な変数を排除し、シンプルにする方法を示しただけです。


だから、もう疲れたし、そろそろ休まないと......寝る、ですね。

 

こんにちは!Expert Advisorのインジケーターウィンドウの機能について教えてください。

 
Nauris Zukas:

こんにちは!Expert Advisorのどのような機能でインジケータウィンドウを作ることができるのですか?


Expert Advisorから空のインジケータを呼び出します。

 
Alekseu Fedotov:

専門家から空のインジケータを呼び出す。

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

 
Vitaly Muzichenko:

必要なコードはこちらで ご確認ください


こんにちは!私は最後のオープン売り注文の価格を決定する関数を取った

PriceS(string sy="0", int op=OP_SELL, int mn=-1) {             //Цена последнего открытого Селл ордера
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

  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) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}

しかし、それをEAに貼り付けると、'sy'関数の条件でコンパイルエラーが発生します - unexpected token

=' - 想定外のトークン 252 18

必要なL値 1 1

string' から 'number' への暗黙の変換 252 19

'=' - l-value required 252 18

'=' - 'void' 型の式は不正 252 18

'op' - 想定外のトークン 252 28

'=' - 想定外のトークン 252 30

必要なL値 1 1

'OP_SELL' - 不正な操作の使用 252 31

タイプ変換によるデータ損失の可能性 252 30

'=' - l-value required 252 30

'=' - 'void' 型の式は不正です 252 30

'mn' - 想定外のトークン 252 44

'=' - 想定外のトークン 252 46

必要なL値 1 1

1' - 不正な操作の使用 252 48


コピーしても何も変わらないので、アドバイスお願いします。


 
vikzip:

こんにちは!私は最後のオープン売り注文の価格を決定する関数を取った

しかし、EAに貼り付けると、'sy'関数の条件でコンパイルタイムエラーが発生します - unexpected token

=' - 想定外のトークン 252 18

必要なL値 1 1

string' から 'number' への暗黙の変換 252 19

'=' - l-value required 252 18

'=' - 'void' 型の式は不正 252 18

'op' - 想定外のトークン 252 28

'=' - 想定外のトークン 252 30

必要なL値 1 1

'OP_SELL' - 不正な操作の使用 252 31

タイプ変換によるデータ損失の可能性 252 30

'=' - l-value required 252 30

'=' - 'void' 型の式は不正です 252 30

'mn' - 想定外のトークン 252 44

'=' - 想定外のトークン 252 46

必要なL値 1 1

1' - 不正な操作の使用 252 48


コピーしても何も変わらないので、アドバイスお願いします。


関数の型を返す必要がある

PriceS(string sy="0", int op=OP_SELL, int mn=-1) {
double PriceS(string sy="0", int op=OP_SELL, int mn=-1) {
 
vikzip:


すべて正しいはずです!? アドバイスをお願いします!コピーして何も変えて いません。



そして、関数のヘッダを コピーせず、関数のタイプ


この機能は本来、次のようなものです。

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

  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) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
 
'op' - unexpected token Армата.mq4 248 28 'OP_SELL' - illegal operation use Армата.mq4 248 31 'mn' - unexpected token Армата.mq4 248 44 
double PriceS(string sy="", int op=OP_SELL, int mn=-1) {             //Цена последнего открытого Селл ордера
  datetime t;
  double   r=0;
  int      i, k=OrdersTotal();

  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) {
              if (t<OrderOpenTime()) {
                t=OrderOpenTime();
                r=OrderOpenPrice();
              }
            }
          }
        }
      }
    }
  }
  return(r);
}
Alekseu Fedotov
:


また、関数ヘッダを コピーせず、関数型をコピーしていた


この機能は本来、次のようなものです。


アレクセウ・フェドトフ

関数ヘッダーで、関数型をコピーしていないもの


この機能は本来、次のようなものです。


正しくは、例にはこうも書いてあった。私の理解が正しければ、注文の種類を選択することができ、私はそれを行いました。

  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値の- 1は任意の位置を意味する。
そして、この関数をstartの前に置いて、グローバルにしました。しかし、関数名の直前にdouble型を返すとエラーになります。 なぜか教えてください!

'PriceS' - 関数はグローバルスコープでのみ宣言可能 252 10

関数はグローバルでなければならないと理解しました

翻訳機でエラーを翻訳すると、次のようになります。

この関数はグローバルスコープでのみ定義できる。 この言葉の意味を正しく理解するならば、グローバルに定義されなければならないので、doubleを前につけてはいけないということになる。パターンからコピーするだけでもsyでエラーが発生するのはなぜなのか不明です。

'sy' - 予期しないトークン 248 17 '=' - 予期しないトークン 248 19 l 値が必要 1 1

また、関数内で他の変数を宣言しても同じエラーが発生します。

op」 - 予期しないトークン 248 28 「OP_SELL」 - 不正な操作の使用 248 31 「mn」 - 予期しないトークン 248 44

 
vikzip:


そうなんです、例のところにも書いてあったんです。私の理解が正しければ、注文の種類を選択することが可能であり、私はそれを行いました。

  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値の- 1は任意の位置を意味する。
そして、この関数をstartの前に置いて、グローバルにしました。しかし、関数名の直前にdouble型を返すとエラーになります。 なぜか教えてください!

'PriceS' - 関数はグローバルスコープでのみ宣言可能 252 10

関数はグローバルでなければならないと理解しました

翻訳者のエラーを翻訳すると


スタート機能の外側に機能を配置する

そして、start関数の本体で、次のように呼び出します。

PriceOpenLastPos(); //текущий символ  любая последняя поз.


PriceOpenLastPos(Symbol(),OP_SELL);//текущий символ  OP_SELL   без магика


PriceOpenLastPos(Symbol(),OP_BUY);//текущий символ   OP_BUY  без магика

3 パラメータ magik (カンマ区切り)。

 
Alekseu Fedotov:

スタート機能の外側に機能を配置する

start関数の本体では、このように呼び出します。

3 パラメータ magik (カンマ区切り)。


本当にありがとうございました!!!スタート関数の外に関数を置いた途端、全てのエラーが消えました!!!!