//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг убыточности последней позиции. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isLossLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int 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)) {
if (OrderProfit()<0) return(True);
}
return(False);
}
if (isLossLastPos(NULL, -1, Magic искомого ордера)) {нашли - обрабатываем...}
//==============================================================================================// Модификация ордеров//============================================================================================== int criterion = TakeProfitATR (1); // Рассчитываем "достаточную" волатильность
if (criterion>=15) trailingOrder(511, 20); // и если она в "норме" - тралим ордера...
//==============================================================================================// Функция для рассчёта Take Profit по ATR//+------------------------------------------------------------------+//| Take from ATR |//+------------------------------------------------------------------+double TakeProfitATR (int tf)
{
double atr =iATR(NULL,tf,14,0);
double mltp =15000;
if (tf==1) mltp=15000;
if (tf==5) mltp=45000;
double tp =MathRound(atr*mltp);
return (tp);
}
ええ、 。
何か理解する方法はないでしょうか?
助けてください!!!履歴から最後に負けた注文を選ぶには?
ちょっと複雑すぎるかな :))
メソッドにパラメータとして遅延メジャックと望ましいトロールを渡す。以下は私のコードです。
あなたの関数がエラー1(面白いことに、エラー1=エラーはないが結果が不明)を出し、トロールしないのは理解できない。時々、保留中のエラーをキャッチすることがありますが、ほとんどの場合、>>ERROR1がログに残っていて、咳をしない...。
私はこうしています。
あなたの関数がエラー1(面白いことに、エラー1=エラーはないが結果が不明)を出し、トロールしないのは理解できない。時々、保留中のエラーをキャッチすることもありますが、ほとんどはログに >>ERROR1 と表示され、咳をしません......。
私はこのように呼んでいます。
このため、エラー1が表示されることがあります(OrderModify() docより)。
関数パラメータに未変化の値が渡された場合、エラー1(ERR_NO_RESULT)が発生する。
あなたの関数がエラー1(面白いことに、エラー1=エラーはないが結果が不明)を出し、トロールしないのは理解できない。時々、保留中のエラーをキャッチすることがありますが、ほとんどの場合、>>ERROR1がログに残っていて、咳をしない...。
私はこうしています。
Limit`order(前回のコードでは忘れていました :)) + error #1 処理 (修正前に新しい価格と現在の価格を比較し、同じであれば何もしない) を追加しました。)
ところで、ペンダントのStopLevelとFreezeLevelの距離について、Tutorialで間違いを発見しました。
StopLevelの最小距離の制限。
これらの要件のいずれかに違反した場合、取引操作は 実行されません。
SellLimitは現在の価格より上に設定されているので、これは正しいです。
OpenPrice - Bid ≧ StopLevel。
は、画面下のタブで楽器をソートする方法はないのでしょうか? 4つのタイムフレームで8つの楽器がごちゃごちゃに散らばっているので...。
は、画面下のタブで楽器をソートする方法はないのでしょうか? 4つのタイムフレームで8つの楽器がごちゃごちゃに散らばっているので...。
グラフの名前のついたタブをつかんで、正しい場所にドラッグします。