//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
是的。
有什么办法可以理解它吗?
需要帮助!!!如何从历史记录中选择最后的失败订单?
这对你来说有点太复杂了 :))
将方法作为参数传入一个延迟的medjack和理想的trall。。以下是我的代码
我不明白为什么你的函数给出了错误1(有趣的是:错误1=没有错误,但结果未知),而没有拖动。有时它可能会捕捉到一些悬而未决的错误,但大多数时候,>>ERROR1在日志中,不要咳嗽。
我是这样做的。
我不明白为什么你的函数给出了错误1(有趣的是:错误1=没有错误,但结果未知),而没有拖动。有时它会捕捉到一些悬而未决的错误,但大多数情况下它会在日志中显示>>ERROR1,并且不咳嗽......
我这样称呼它。
错误1可能因为这个原因出现(来自OrderModify()文档)。
如果未改变的值作为函数参数被传递,那么将产生错误1(ERR_NO_RESULT)。
我不明白为什么你的函数给出了错误1(有趣的是:错误1=没有错误,但结果未知),而没有拖动。有时它可能会捕捉到一些悬而未决的错误,但大多数时候,>>ERROR1在日志中,不要咳嗽。
我是这样做的。
我添加了Limit`order(在最后的代码中,我忘记了它们:))+错误#1的处理(在修改前,新价格与当前价格进行比较,如果它们相同,则不做任何处理)。
顺便说一下,我在教程中发现了一个关于吊坠的StopLevel和FreezeLevel距离的错误。
对最小StopLevel距离的限制。
如果违反了这些要求中的任何一条,交易操作 就不会被执行。
SellLimit被设置在当前价格之上,所以这是对的。
开盘价-出价≥止损价
有没有办法对屏幕底部的标签中的工具进行分类?因为4个时间段的8个工具分散在一个混乱的....。
有没有办法对屏幕底部的标签中的工具进行分类?因为4个时间段的8个工具分散在一个混乱的....。
抓住带有图表名称的标签,将其拖到正确的位置。