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

 

GetTypeLastClosePos()関数。

この関数は、最後に閉じた位置の型、または-1を返す。考慮すべき位置をより正確に選択するために、外部パラメータで定義します。

  • sy- 市場商品の名前。このパラメータが設定されている場合、この関数は指定された楽器の位置のみを考慮します。初期値」は、あらゆる市場商品を意味する。NULLは 現在の楽器を意味します。
  • mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает тип последней закрытой позиции или -1               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}
ZS. GetTypeLastClosePos()関数をテストするスクリプトを添付しています。
ファイル:
 

GetTypeLastOpenPos()関数。

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

  • sy- 市場商品の名前。このパラメータを設定すると、指定した楽器の位置のみを考慮するようになります。初期値」は、あらゆる市場商品を意味する。NULLは 現在の楽器を意味します。
  • mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает тип последней открытой позиции или -1               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastOpenPos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderOpenTime()) {
            t=OrderOpenTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}
ZS. GetTypeLastOpenPos()関数をテストするスクリプトを添付しています。
ファイル:
 
KimIV:

オンライン用のOpenPosition()関数です。

      if (err==128 || err==142 || err==143) {
        Sleep(1000*66.666);
        if (ExistPositions(sy, op, mn, ot)) {
          if (UseSound) PlaySound(NameFileSound); break;
        }
      

エラーコード 142、143は何を意味しているのか。

ありがとうございます。

 
zennon:

エラーコード142、143は何を意味しているのですか?

142 - 注文がキューに入れられました。

143 - 注文がディーラーによって執行のために受理されました。

詳しくは、こちらを ご覧ください。

 

ドクターはエラーとして 扱うようアドバイスしている128

できれば、あなたの視点や立場から、一言二言お願いします。

 
kombat:

ドクターはエラーとして扱うようアドバイスしている 128

できれば、あなたの視点や立場から一言お願いします...。

私の考え方は、2つ上の投稿でAndreiが示したコードで表現されています。

 

すみません...はもちろん見たが...。

ちょっと腑に落ちないところがありますね。

Sleep(1000*66.666);

それ以外は、どうだろう...。ね

しかし、もし、さらになら、そうでもない。

つまり、寝て、ポジションがあれば、行進曲を弾けば いいのです。

-

OK、もし、もっといい加減な質問だったら、またごめんなさい未回答でも かまいません。

 
kombat писал (а):
OK、もっといい加減な質問だったら、また申し訳 ないので、この辺にして おきます。

な...整理しましょう...対決が理解を深める...ただ、何がわからないのかがわからない。質問をよりシンプルに、よりありきたりな言葉で表現してください。ハイバネーション間隔に迷っていませんか?なぜ、きっかり66秒なのか?

 
KimIV:
なぜ、きっかり66秒なのか?

いや、そんなことはない! 間違いない...。夢にも思わなかった

しかし、この断片のさらなる論理的な連続動作は、あまりよくない。

エラーコードが出て、スリープして、ブーレットが出て、この機能がオンになっていればスポインのワルツが再生されるとしよう...。

-

(くっそー、メッセージの尻尾が消えてる、繰り返しになるけど :((

-

それよりも、始まったことをどう継続させるかに興味があります。

すなわち、さらなる取引ジェスチャー:機能が一気呵成になるのか

機能が開くまでチャックするか、別の機能に制御を委ねるか......。

最初のケースでは、どのように "ループ"、 "自分自身 "を呼び出すために、または何を明確ではありません?

 

うーん...まだ、わからないんです。適当に撮影する。エラー128、142、143については、以下のすべてが適用されます。

エラー128が何らかの形で処理されない場合、1つのオープンポジションではなく、2つの同じオープンポジションが発生する危険性があります。2年間、2つのリアル口座で取引してきたが、そのようなケースは1回だけだった。重複ポジションは、何らかの理由で取引サーバーから端末に注文実行時間終了のメッセージが返されたために発生します。端末がサービスを拒否されたわけではありません。取引はまだ実行されるかもしれません。ただ、その実行が「許容できないほど」長い間、延期されただけです。このメッセージの後に別のリクエストを送ると、遅れたリクエストと新しいリクエストの両方が実行されることがあります。このような事態を避けるため、開発者は、少なくとも1分間、一時停止して、取引サーバーが遅延メッセージを送信したリクエストが実行されたかどうかを確認するようアドバイスしています。YESなら目標達成、つまりポジションはオープン、NOならリクエストを 繰り返すことができる。私のコードでは、128,142,143のエラーをこのように処理しています。