//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
e-SignalOfTradeの EAにPUSH通知を追加してください。
エラーのコードによる短い、または詳細なロシア語の 説明を返すErrorRU() 関数をまとめました。トレードサーバーから返されるエラーとMQLプログラムの実行エラーの両方を検出します。しかし、すべてのエラーに「どうしたらいいか」という推奨事項が詳しく書かれているわけではありませんが、そういうものなのです。
テスト用にスクリプト内の関数を公開しています。
もし、MQHファイルの形でバリエーションが必要な人がいれば、私のウェブサイトから 入手することができます。
イゴールさん、こんにちは。この機能には感謝します、とても便利です
KimIV さん、こんにちは。
i-Profit.mq4という素晴らしい機能をホームページで 公開していますね。
そこから残高データを抽出する方法を教えていただけませんか?
// 0 - 現在の残高
// 1 - 一日の始まりにバランスをとる。
// 2 - 週の始めにバランスをとる。
// 3 - 月初めの貸借対照表
// 4 - 四半期の期首残高
// 5 - 期首残高
// 6 - ユーザー日付の貸借対照表
ProfitByPrice()関数です。
この関数は、私の小さな予測関数の一つです。ある出来事が起こったらどうなるのか」という問いに答えるという意味で、未来を予見するものである。この関数は、例えば、現在のポジションがパラメータとして渡された価格で決済された場合、入金した通貨で利益を返します。
ZZY.関数をテストするための従来のスクリプトを添付します。
ZZZYは、他のパラメータに渡された価格が取引商品とリンクしている必要があるため、パラメータ間の伝統的なSYは 存在しません。あまり悩まないで、今のシンボルにリンクさせることにしました。
KimIV:
その価格からDistanc距離内に他の注文やポジションがないことを条件に、決済価格で保留中の注文を設定 する必要があります。そのような機能はないようですね。与えられた価格から離れたところにある注文やポジションの存在?
KimIV:
その価格からDistanc距離内に他の注文やポジションがないことを条件に、決済価格で保留中の注文を設定する必要があります。そのような機能はないようですね。与えられた価格から離れたところに注文やポジションが存在することですか?
これに 近いものが描けるのでは...。
更新
ExistOPNearPrice()関数をテストするためのスクリプトを添付しています。
親愛なるイゴール、私たちのプログラミングの最初のステップをより簡単にする機能をありがとうございます1つのポジションをクローズする関数が必要なのですが、他の関数を参照 することなく、セレクト、3回トライ、エラーハンドリングができるようにしたいのです。そして、最初のうちはセレクトせずにチェック機能付きのコンディションを処方して、スピードが落ちないようにしています。今までは、開始時にSelektループを使用して様々なチェックを 行い、Selektなしでclose関数を呼び出していましたが、これはほぼ2倍遅くなります。 何かアドバイスをお願いします。ありがとうございます。
ClosePosBySelect()は何かないのでしょうか?