KimIVの便利な機能 - ページ 23

 

NumberOfBarCloseLastPos()関数を使用します。

この関数は、最後の位置のバークローズ番号または-1を 返します。考慮すべき位置の選択は、外部パラメータによって定義される。

  • sy- 市場商品の名前。このパラメータを設定すると、この機能はこの楽器の位置のみを考慮します。デフォルト値-NULLは、現在の市場商品を意味する。
  • tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。
  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. NumberOfBarCloseLastPos()関数をテストするためのスクリプトを添付します。
ファイル:
 
 
 
KimIV:

DeleteOrders()関数。テスター版。

DeleteOrders()関数は、BuyLimit、BuyStop、SellLimit、SellStopの注文を削除するために設計されています。op- 取引操作の種類、保留中の注文の種類。5つの値のいずれかが可能である。-1、OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOPのいずれか。初期値の-1は任意の順序を意味する。
mn
- MagicNumber、保留中の注文の識別番号です。初期値-1は任意のマジックを意味する。

こんにちは。10ページでこの機能が適用されるように設定されています。

Expert Advisorで適用して、保留中の注文を削除しています。というか、使ってみたかったんです。int startセクションの外側に関数を配置しました

貼り付けました。

if (isCloseLastPosByTake(NULL,OP_BUY, My order Buy ))   {
              DeleteOrders(NULL, -1,  My order Sell);   }

しかし、コンパイル時にエラーが発生します

'clDelete' - 変数が定義されていません C:{Program FilesMetaTrader - Alpari</experts>3.mq4 (1155, 40)

どうすればこのエラーをなくすことができますか?

また、ClosePositions()関数を使用して、市場価格でポジションを クローズすると、すべてがうまくいき、エラーは発生しません!

/ DeleteOrders関数を挿入して、まだ適用していなくても - このエラーはまだコンパイルされます!

 
Rita писал (а):
しかし、コンパイルするとエラーが発生します。
'clDelete' - variable not defined C:\Program FilesMetaTrader - Alparièxperts✎5.mq4 (1155, 40)
どうすればこのエラーを解消できますか? この'clDelete'とは何ですか?

そこで、添付ファイルの10ページ目にtest_DeleteOrders.mq4というファイルがあります。

ダウンロードし、その中にclDeleteの 参照があるかどうか探してください。

 

ダウンロードし、視聴しましたそれで?閉じるアイコンの色を設定するだけでいいことがわかりました。

しかし、今はまた大丈夫ではありません。今はそのエラーはなくなりました。しかし、ClosePositions()関数のところで、以前にはなかった別のエラーが発生しました。

if (L_2Sell==true)                 {  
        ClosePositions(NULL, -1,Magic);
                                      }

ClosePosBySelect' -function is not defined C:\Program FilesMetaTrader - Alpariعixperts0005.mq4 (905, 47)
And there is no script nearby (p. 14) to check...

このエラーを修正する方法を教えてください。

 
Rita писал (а):
ClosePosBySelect' - function is not defined C:\Program FilesMetaTrader - Alpariعiexperts0005.mq4 (905, 47)

このエラーは、ClosePosBySelect()が定義されて いないことを意味します。

Rita wrote (a):
このエラーを修正する方法を教えてください。
ClosePosBySelect()関数のコードを探し、EAのファイルに貼り付けてください。P13をご参照ください。
 

またまたお邪魔します!ClosePosBySelect()の隣にご指定のClosePositions()関数を置いてみたところ、コンパイル後に6つのエラーが発生しました!怒りを感じる!

私自身、4人の方とお付き合いさせていただいています。スリップ、カラー、接近試行回数...2つのエラーが残る、-。

サウンドファイル -

UseSound' - variable not defined C:\Program FilesMetaTrader - Alparièxperts╱5.mq4 (1002, 13)

NameFileSound' - variable not defined C:¥Program FilesMetaTrader - Alpari ¥Program FilesMetaTrader.mq4 (1002, 33)

どこから持っていけばいいのか?どこに置けばいいのか?

Well extern bool UseSound = false;//スイッチオフ

EXPERT'S PROPERTIESに入れますが、NameFileSound'とは何ですか、どこに持っていけばいいのでしょうか。

**************************************************************************

見つけて、グローバルに投入。

extern bool UseSound = false;//выключатель звука
extern string NameFileSound="alert.wav";

そして、1つのエラーではなく、コンパイラはさらに4つのエラーを吐いた。

'GetNameOP' -関数が 定義されていません。

'ErrorDescription' - 関数が定義されていません。

'else' - 予期しないトークン

'GetNameOP' - 関数が定義されていません。

このエラーは延々と出続けるようです。ClosePositions()関数を使うには、まずClosePosBySelect()という別の関数を作らなければなりませんでした。そして、もう一方は、順番にいくつかの音、つまりベルやホイッスルを必要とします。そして、この全く不要なベルを必死で探していると、'else' - unexpected token などの変なエラーが出てくるのです。まだ、この機能を使い始めてもいないんです。他の人の中に入れただけです!

これらのエラーを修正する方法を教えてください。このGetNameOPを全てコメントアウトしました。エラーはなくなったようです。しかし、それがなくても機能は十分に発揮されるのでしょうか?

 
Rita писал (а):
そしてここでは、1つのエラーの代わりに、コンパイラはさらに4つのエラーを投げました。
'GetNameOP' - 関数が定義されていません。

添付ファイルtestrSetOrder.mq4の最初のページで

Rita wrote:
ErrorDescription' - function is not defined.

EAのコードに次の行を挿入します。

#include <stdlib.mqh>.

Rita wrote:
'else' - unexpected token.
上記のようにすると、エラーは自ずと消えます。
 

NumberOfBarOpenLastPos()関数を使用します。

この関数は、最後にオープンしたポジションのバー番号または-1を 返す。考慮すべき位置の選択は、外部パラメータで指定する。

  • sy- 市場商品の名前。このパラメータが設定されている場合、この関数は指定された楽器の位置のみを考慮します。デフォルト値-NULLは、現在の市場商品を意味する。
  • tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。
  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。初期値-1 は任意の位置を意味する。
  • mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. NumberOfBarOpenLastPos()関数をテストするためのスクリプトを添付します。
ファイル: