//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.05.2008 |//| Описание : Возвращает флаг закрытия последней позиции по стопу. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, osl;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
if (ocp==osl) return(True);
}
return(False);
}
試しに全部書き換えてみましたが、やはり130エラーです。
ストップレベラーは必要ないと思うのですが、1000で止まっているのでしょうか?
トライ
終値注文(ストップロス)の値を返す関数はありますか?
例えば、ストップロスが発生したことをEAに知らせる場合など
ドキュメントにはなかったのですが、もしかしたらあるのかもしれませんが、1ヶ月の間に10回くらい読み直しましたが、覚えていません
こんな機能あったっけ?
今度から一カ所にまとめて書こうよ。スパムメールはよくない。
終値注文(ストップロス)の値を返す関数はありますか?
例えば、ストップロスが発生したことをEAに知らせる場合など
ドキュメントにはなかったのですが、もしかしたらあるのかもしれませんが、1ヶ月の間に10回くらい読み直しましたが、覚えていません
覚えていないんです。
履歴から注文を探し、見つかったらその終値OrderClosePrice()とStopLoss OrderStopLoss()のレベルを比較します。
もしそれらが等しければ、そのポジションはストップで決済されたことになります。
履歴から注文を探し、見つかったらその終値OrderClosePrice()とStopLoss OrderStopLoss()のレベルを比較します。
もし、同じであれば、そのポジションはストップロスで決済されたことになります。
Kimは、最後に閉じたオーダーを取る関数を持っている...
この機能から、多くの人が学び始めているんですね。最近、ここで彼のスレッドのリンクをあげたのですが、その人はしつこく聞いてきます。たぶん、調べるのが面倒なんでしょうね...。:)
1つの追加ウィンドウに複数のインディケータが重なっている場合、その上の名前とパラメータの行を削除することができるかどうか教えてください。このテレテキストにうんざりしているのです。
できますが、すべてのインジケーターで削除する必要があります。コードの編集