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

 
tim-time:

e-SignalOfTradeの EAにPUSH通知を追加してください。

完了...私のウェブサイトからダウンロードする...
 
KimIV:

エラーのコードによる短い、または詳細なロシア語の 説明を返すErrorRU() 関数をまとめました。トレードサーバーから返されるエラーとMQLプログラムの実行エラーの両方を検出します。しかし、すべてのエラーに「どうしたらいいか」という推奨事項が詳しく書かれているわけではありませんが、そういうものなのです。

テスト用にスクリプト内の関数を公開しています。

もし、MQHファイルの形でバリエーションが必要な人がいれば、私のウェブサイトから 入手することができます。


イゴールさん、こんにちは。この機能には感謝します、とても便利です
 

KimIV さん、こんにちは。

i-Profit.mq4という素晴らしい機能をホームページで 公開していますね。

そこから残高データを抽出する方法を教えていただけませんか?

// 0 - 現在の残高

// 1 - 一日の始まりにバランスをとる。

// 2 - 週の始めにバランスをとる。

// 3 - 月初めの貸借対照表

// 4 - 四半期の期首残高

// 5 - 期首残高

// 6 - ユーザー日付の貸借対照表

 

ProfitByPrice()関数です。

この関数は、私の小さな予測関数の一つです。ある出来事が起こったらどうなるのか」という問いに答えるという意味で、未来を予見するものである。この関数は、例えば、現在のポジションがパラメータとして渡された価格で決済された場合、入金した通貨で利益を返します。

  • op- 貿易業務、ポジションタイプ。有効な値:OP_BUYOP_SELL、または-1。デフォルトの値- 1は、あらゆる取引操作を意味します。
  • mn- 位置の識別子,MagicNumber.初期値-1 は任意の識別子を意味する。
  • cp- 想定される終値。デフォルト値0は、現在の買値を 意味する。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice(int op=-1, int mn=-1, double cp=0) {
  double pr=0;
  double po=MarketInfo(Symbol(), MODE_POINT);
  double sp=MarketInfo(Symbol(), MODE_SPREAD);
  double tv=MarketInfo(Symbol(), MODE_TICKVALUE);
  int    i, k=OrdersTotal();

  RefreshRates();
  if (cp<=0) cp=Bid;
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && (op<0 || OrderType()==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
          if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(pr);
}

ZZY.関数をテストするための従来のスクリプトを添付します。

ZZZYは、他のパラメータに渡された価格が取引商品とリンクしている必要があるため、パラメータ間の伝統的なSYは 存在しません。あまり悩まないで、今のシンボルにリンクさせることにしました。

ファイル:
 
親愛なるイゴール、私たちのプログラミングの最初のステップをより簡単にする機能をありがとうございます1つのポジションをクローズする関数が必要なのですが、他の関数を参照 することなく、セレクト、3回トライ、エラーハンドリングが必要なのです。そして、最初のうちはセレクトせずにチェック機能付きのコンディションを処方して、スピードが落ちないようにしています。今までは、開始時にSelektループを使用して様々なチェックを 行い、Selektなしでclose関数を呼び出して いましたが、これはほぼ2倍遅くなります。 何かアドバイスをお願いします。ありがとうございます。
 

KimIV:

その価格からDistanc距離内に他の注文やポジションがないことを条件に、決済価格で保留中の注文を設定 する必要があります。そのような機能はないようですね。与えられた価格から離れたところにある注文やポジションの存在?

 
KimIVは ここ見てないんだろうなー。:(
 
khorosh:

KimIV:

その価格からDistanc距離内に他の注文やポジションがないことを条件に、決済価格で保留中の注文を設定する必要があります。そのような機能はないようですね。与えられた価格から離れたところに注文やポジションが存在することですか?


これに 近いものが描けるのでは...。

更新

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice(double zp, string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;

  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
        if (mn<0 || OrderMagicNumber()==mn) {
          if (MathAbs(OrderOpenPrice()-zp)<ds*p) return(True);
        }
      }
    }
  }
  return(False);
}

ExistOPNearPrice()関数をテストするためのスクリプトを添付しています。

ファイル:
 
borilunad:
親愛なるイゴール、私たちのプログラミングの最初のステップをより簡単にする機能をありがとうございます1つのポジションをクローズする関数が必要なのですが、他の関数を参照 することなく、セレクト、3回トライ、エラーハンドリングができるようにしたいのです。そして、最初のうちはセレクトせずにチェック機能付きのコンディションを処方して、スピードが落ちないようにしています。今までは、開始時にSelektループを使用して様々なチェックを 行い、Selektなしでclose関数を呼び出していましたが、これはほぼ2倍遅くなります。 何かアドバイスをお願いします。ありがとうございます。
ClosePosBySelect()ではないですか?
 
artmedia70:
ClosePosBySelect()は何かないのでしょうか?
それはそれとして、他の関数への不必要な呼び出しが多く、その結果エラーが発生します。