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

 
M2012K:

こんにちは、同僚たち。私はまだコードを勉強中で、複雑なことがよくわからず、ちょっと困っています。

私の理解では、注文する前に、この関数を呼び出してパラメータを修正する必要があります。

注文を開けるには、このような行程があります。

if(buy == true && Open[0]>UpTr && Trade) { (買い == true && Open[0]>UpTr && トレード)

buy=OrderSend(Symbol(),OP_BUYSTOP,LOT(),NormalizeDouble(op,桁数),slippage,NormalizeDouble(sl,桁数),NormalizeDouble(tp,桁数), "T",Magic,0,MediumBlue).Of.Pirates;

は、ここで対処すべきなのでしょうか?そして、その正しい方法。それとも、このコマンドはCorrectingPrice() を必要としないのでしょうか?

よろしくお願いします。

サーバーに取引要求を送信 する前に、StopLossとTakeProfitの価格を計算済みである必要があります。これらは、私の見るところ、それぞれslと tpという 変数に格納されているようです。

そこで、この関数を起動し、変数名を挿入してください。

CorrectingPrice(Symbol(), OP_BUY, Ask, sl, tp);

必要であれば、補正してくれる...

そして、この関数を呼び出した後に、オープンポジションの関数を呼び出すことができます

 

こんにちは。

KimIVのPriceOpenNearPos()関数を使用しています。 ということに気づきました。 は、最も近い 位置が失わ れることがある 、別の位置が 使用さ れます。 そこで コード を作ってみたところログで の最寄りの位置が どのように失われているかを確認することができます。 なぜこの ようなことが起こるのか、 ご確認 ください。

int    magic    = 665544;

bool flag = false;

 

int start()

  {

//----

if((PriceOpenNearPos(NULL, OP_BUY, magic) != 0

&& PriceOpenNearPos(NULL, OP_BUY, magic)- 0.1 <  Bid

&& PriceOpenNearPos(NULL, OP_BUY, magic)+ 0.1 > Bid))

flag = true;

else

flag = false;

 

Print("::::::::::::::::::::::::: flag = ",  flag );

Print("PriceOpenNearPos(NULL, OP_BUY, magic)= ", PriceOpenNearPos(NULL, OP_BUY, magic));

 

if(!flag)

OpenPosition(NULL, OP_BUY, 0.1,0,0,magic);  

//----

   return(0);

  }

条件によると、位置は重ならないはずですが、テスターを動かすと 位置が重なっているのがわかります(usdjpy 5m)。

 
artmedia70:

サーバーに取引要求を送信する前に、StopLossとTakeProfitの価格を計算済みである必要があります。これらは、私の見るところ、それぞれslと tpという 変数に格納されているようです。

そこで、この関数に変数名を挿入して実行してください。

必要であれば調整してくれる...

そして、この関数が呼ばれた後、ポジションオープン関数


ありがとうございます、わかりました。:)
 
abeiks:

こんにちは。

KimIVのPriceOpenNearPos()関数を使用しています。 ということに気づきます。 は、最も近い 位置が失わ れることがある 、別の位置が 使用さ れます。 そこで コード を作ってみたところログで の最寄りの位置が どのように失われているかを確認することができます。 なぜこの ようなことが起こるのか、 ご確認 ください。

条件によると、位置は重ならないはずですが、テスターを動かすと 位置が重なっているのがわかります(usdjpy 5m)。


確認したところ...テスターで...すべて順調です。どのようにポジションが失われていくのか、自ら示してください。あるいは、具体的にどのようなポジションを負けと呼ぶのか、もう少し詳しく説明してください。

私はここにすべての余分な機能を持つテスト用のエキスパート-アドバイザーの準備ができて添付しています。

ファイル:
 

付録をご覧ください。条件では、ポジションは互いに重ならないはずですが、ターミナルでは、3と9のポジションが同じ価格で開いていることがわかります(4、6、8も同様です)。さらにログファイルを見ると、ある瞬間に98.179のポジションが失われ、98.301が表示されていることがわかります。そのため、ポジションが重なります。

 
abeiks:

付録をご覧ください。条件では、ポジションは互いに重ならないはずですが、ターミナルでは、3と9のポジションが同じ価格で開いていることがわかります(4、6、8も同様です)。さらにログファイルを見ると、ある瞬間に98.179のポジションが失われ、98.301が表示されていることがわかります。そのため、ポジションが重なります。


コード、提供された資料、お待たせしました!

機能を 修正しました。以下は新バージョンです。

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

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (OrderType()==OP_BUY)  mi=MarketInfo(OrderSymbol(), MODE_ASK);
            if (OrderType()==OP_SELL) mi=MarketInfo(OrderSymbol(), MODE_BID);
            p=MarketInfo(OrderSymbol(), MODE_POINT);
            if (pp<0 || pp>MathAbs(OrderOpenPrice()-mi)/p) {
              pp=MathAbs(OrderOpenPrice()-mi)/p;
              oop=OrderOpenPrice();
            }
          }
        }
      }
    }
  }
  return(oop);
}

今はこうして...。重複なし

ファイル:
 
KimIV:


コード、素材の提供、忍耐に感謝します

機能を 修正しました。こちらが新バージョンです。

今はこうして...。重複なし


ありがとうございます、すべてうまくいきました:)
 
KimIV:


機能を 修正しました。こちらが新バージョンです。

イゴールさん、新しいライブラリ、新しい機能、または修正された機能の一部が掲載されている場所はありますか?

つまり、すでに修正・追加されたライブラリのアップデート...。

 
artmedia70:

イゴール、新しいライブラリ、新しい機能、または機能の修正について、どこかに掲載されていますか?

つまり、すでに修正・追加されたライブラリのアップデート...。


まだ投稿されたものはありません・・・。時間がなくて......。でも、とにかく...。いつも手直ししています。そして、30本以上の新作を書きました。時間と気が向いたときに、ひっそりとここに投稿しています)))

SZY.すべてのライブラリをそのまま、メールで送ることはできますが、公開する場合は、説明文を用意するか、少なくとも機能の一覧と目的を指定する必要がありますね...。

 
KimIV:


まだ投稿されたものはありません・・・。時間がなくて......。でも、とにかく...。いつもいろいろと手を加えているんですよ。そして、30本以上の新作を書きました。時間と気が向いたときに、ひっそりとここに投稿しています)))

ZS.そのまま全ライブラをメールしてもいいのですが、公開するのであれば、説明書を用意するか、せめて機能の一覧と目的を示してほしい...。

ああ...を覗いてみるのも面白いかもしれませんね。)メールに書いておくよ。