//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
こんにちは、同僚たち。私はまだコードを勉強中で、複雑なことがよくわからず、ちょっと困っています。
私の理解では、注文する前に、この関数を呼び出してパラメータを修正する必要があります。
注文を開けるには、このような行程があります。
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という 変数に格納されているようです。
そこで、この関数を起動し、変数名を挿入してください。
必要であれば、補正してくれる...
そして、この関数を呼び出した後に、オープンポジションの関数を呼び出すことができます
こんにちは。
KimIVのPriceOpenNearPos()関数を使用しています。 ということに気づきました。 は、最も近い 位置が失わ れることがある 、別の位置が 使用さ れます。 そこで コード を作ってみたところ、ログで の最寄りの位置が どのように失われているかを確認することができます。 なぜこの ようなことが起こるのか、 ご確認 ください。
条件によると、位置は重ならないはずですが、テスターを動かすと 位置が重なっているのがわかります。 (usdjpy 5m)。
サーバーに取引要求を送信する前に、StopLossとTakeProfitの価格を計算済みである必要があります。これらは、私の見るところ、それぞれslと tpという 変数に格納されているようです。
そこで、この関数に変数名を挿入して実行してください。
必要であれば調整してくれる...
そして、この関数が呼ばれた後、ポジションオープン関数
ありがとうございます、わかりました。:)
こんにちは。
KimIVのPriceOpenNearPos()関数を使用しています。 ということに気づきます。 は、最も近い 位置が失わ れることがある 、別の位置が 使用さ れます。 そこで コード を作ってみたところ、ログで の最寄りの位置が どのように失われているかを確認することができます。 なぜこの ようなことが起こるのか、 ご確認 ください。
条件によると、位置は重ならないはずですが、テスターを動かすと 位置が重なっているのがわかります。 (usdjpy 5m)。
確認したところ...テスターで...すべて順調です。どのようにポジションが失われていくのか、自ら示してください。あるいは、具体的にどのようなポジションを負けと呼ぶのか、もう少し詳しく説明してください。
私はここにすべての余分な機能を持つテスト用のエキスパート-アドバイザーの準備ができて添付しています。
付録をご覧ください。条件では、ポジションは互いに重ならないはずですが、ターミナルでは、3と9のポジションが同じ価格で開いていることがわかります(4、6、8も同様です)。さらにログファイルを見ると、ある瞬間に98.179のポジションが失われ、98.301が表示されていることがわかります。そのため、ポジションが重なります。
付録をご覧ください。条件では、ポジションは互いに重ならないはずですが、ターミナルでは、3と9のポジションが同じ価格で開いていることがわかります(4、6、8も同様です)。さらにログファイルを見ると、ある瞬間に98.179のポジションが失われ、98.301が表示されていることがわかります。そのため、ポジションが重なります。
コード、提供された資料、お待たせしました!
機能を 修正しました。以下は新バージョンです。
今はこうして...。重複なし
コード、素材の提供、忍耐に感謝します
機能を 修正しました。こちらが新バージョンです。
今はこうして...。重複なし
ありがとうございます、すべてうまくいきました:)
機能を 修正しました。こちらが新バージョンです。
イゴールさん、新しいライブラリ、新しい機能、または修正された機能の一部が掲載されている場所はありますか?
つまり、すでに修正・追加されたライブラリのアップデート...。
イゴール、新しいライブラリ、新しい機能、または機能の修正について、どこかに掲載されていますか?
つまり、すでに修正・追加されたライブラリのアップデート...。
まだ投稿されたものはありません・・・。時間がなくて......。でも、とにかく...。いつも手直ししています。そして、30本以上の新作を書きました。時間と気が向いたときに、ひっそりとここに投稿しています)))
SZY.すべてのライブラリをそのまま、メールで送ることはできますが、公開する場合は、説明文を用意するか、少なくとも機能の一覧と目的を指定する必要がありますね...。
まだ投稿されたものはありません・・・。時間がなくて......。でも、とにかく...。いつもいろいろと手を加えているんですよ。そして、30本以上の新作を書きました。時間と気が向いたときに、ひっそりとここに投稿しています)))
ZS.そのまま全ライブラをメールしてもいいのですが、公開するのであれば、説明書を用意するか、せめて機能の一覧と目的を示してほしい...。