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

 

KimIV さん、ありがとうございます。

 

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

DeleteOrders()関数は、BuyLimit、BuyStop、SellLimit、SellStopの注文を削除するためのものです。DeleteOrders()関数は汎用的で、存在するすべての注文や、関数パラメータで設定した選択条件を満たす特定の注文を削除するために使用することができます。

sy- 楽器名。テスターでは現在のシンボルしか取引できないため、このパラメータはテスター版には関係なく、この機能のオンライン版との互換性のためにのみ必要です。テスターでは、""またはNULLを使用するのがベストです。
op
- 取引操作の種類、保留注文の種類。5つの値のいずれかが可能である。-1、OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOPのいずれか。
mn
- MagicNumber、保留中の注文の識別番号です。デフォルト値 -1 - 任意のマジックを意味する。

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 13.06.2007                                                      |
//| Описание : Удаление ордеров. Версия функции для тестов на истории.         |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//| sy - наименование инструмента   (NULL - текущий символ)                    |
//| op - операция                   ( -1  - любой ордер)                       |
//| mn - MagicNumber                ( -1  - любой магик)                       |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
 
  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            OrderDelete(OrderTicket(), clDelete);
          }
        }
      }
    }
  }
}
 

DeleteOrders()関数。オンライン版


//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 28.11.2006                                                      |
//| Описание : Удаление ордеров                                                |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента   ( ""  - любой символ,                    |
//|                                    NULL - текущий символ)                  |
//|   op - операция                   (  -1 - любой ордер)                     |
//|   mn - MagicNumber                (  -1 - любой магик)                     |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int err, i, it, k=OrdersTotal(), ot;
  
  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(NameFileSound); break;
              } else {
                err=GetLastError();
                Print("Error(",err,") delete order ",GetNameOP(ot),
                      ": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}
 

DeleteOrders()関数の使用例です。


1.すべての注文を削除する。

DeleteOrders();
2.すべてのBuyStop注文を削除します。
DeleteOrders(NULL, OP_BUYSTOP);

3.マジック123456の注文をすべて削除してください。

DeleteOrders(NULL, -1, 123456);

ZY. 予告編の中に、同じ例のワーキングスクリプトがあります。

ファイル:
 
KimIV:

DeleteOrders()関数の使用例です。

このままでは、図書館に行けなくなる。やっぱり図書館に行くしかないですね。誘ってくれたら。招待状がなければ行きません。
 
すべての人は、左の権利を持っている...然うちょっとだけ楽しむつもりで

Ilnar さんが、Pending Fractal Ordersという トピックで、Pending Orders on fractalsを作るにはどうしたらいいのか?


イルナーは、フラクタルの価格水準を見抜くのに苦労したのではと推測します。だから、私の機能を使うことをお勧めします。


//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
 
  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
関数 FindNearFractal() は、指定されたシンボルで、指定されたタイムフレームで、指定されたタイプの最も近いフラクタルを検索し、その価格水準を返します。フラクタルがある場所の価格水準を知っていれば、この水準で注文を出すことはもう簡単です。
 
KimIV:
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
質問...d と 0 の関係は?
 
kharko:
KimIV:
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;
質問...d と 0 の関係は?
どうだろう...私の診療所では、d=0のケースが1件ありました。ゼロになるようにチェックを行う必要がありました。それ以来、私はこのコードをあらゆるところに引きずっている。余計なお世話かもしれませんが、少なすぎるよりは多すぎる方がいいと思うんです。
 
Vinin:
KimIV:

DeleteOrders() の使用例です。

このままでは、図書館に行けなくなる。図書館に行くしかないでしょう。誘ってくれたら。招待状がなければ行きません。

ヴィテック、どうしたんだ?もちろん、すぐにでも庭を掘りに来てください...。あなたは助けることができる...

 
KimIV:
ヴィン
KimIV:

DeleteOrders() の使用例です。

このままでは、図書館に行けなくなる。やっぱり図書館に行くしかないですね。誘ってくれたら。招待状がなければ行きません。

ヴィテック、どうしたんだ?もちろん、すぐにでも庭を掘りに来てください...。あなたは助けることができる...

庭は問題ない、年齢的に無理だが。もしかしたら、もっと若い人を起用できるかもしれませんね。お風呂に行って、クワス(アレルギーなんですね、私も昔はそうでした)を食べよう。若い人の働きぶりを見てみる深刻ではないでしょう。