Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятойif(StopLoss > 0)
if(Bid < iHigh(Symbol(),0,1))
{
StopLoss = iHigh(Symbol(),0,1)+30*Point;
SL= Price + StopLoss*Point;
SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
}
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего открытого ордера
lastOOTMarket = -1, // Время открытия последнего открытого ордера рыночного
lastOOTHist = -1; // Время открытия последнего открытого ордера из историиfor (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderType() > 1) continue; // Все удалённые отложки нас не интересуют..if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия..
lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в историиif (MathAbs(OrderTakeProfit() - OrderOpenPrice()) < i_tp * pt) return(0);
lastOOTHist = OrderOpenTime(); // Тогда время открытия последней закрытой позиции из истории
}
Comment("Время открытия последнего открытого ордера = ", lastOOTHist);
for (int h=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
{
if (lastOOTMarket < OrderOpenTime())
lastOOTMarket = OrderOpenTime();
if (lastOOTMarket < lastOOTHist) // Если время открытия последнего открытого ордера (рыночного) ниже последнего открытого ордера из истории..
lastOrderCloseTime = OrderCloseTime(); // Значит это искомый ордер
}
}
Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);
return (lastOrderCloseTime);
}
罗杰,我无法理解!
在图表上抛出一条水平线,固定其价格,删除该线--它不再需要了。我们立即在这个价格上设置了一个订单。
错在哪里呢?为什么卖出止损不能打开?
如果我只需要水平线的价格值,为什么还要继续跟踪价格?
解释一下吧!!!。帮助!请提供更多细节!
Sellstop是错误的,它将会打开。
现在是关于线条的问题。当我进行实盘交易时,我查看图表并放置一条水平线,条件合适,线被删除,订单被打开。这比简单的热键脚本好在哪里?在测试器中,为了画线,你必须启用可视化并观察图表。我甚至不明白为什么我们要把它添加到测试器中。
对不起!然后上厕所,睡觉!祝你有个愉快的早晨!;)
在你的手指上呢?时间和价格怎么能告诉你要收手的?我自己当然能想到,但现在是早上7点43分,我还没有睡觉。
如果现在是7点43分,我还没有睡觉...因此,我将假设它是圣杯!
善良的人们,告诉我什么是错的。在卖出交易中,在0条的第一个点上开盘,止损应该设置在第一根蜡烛的高点之上30点(5位)。写到这里,但止损根本就没有放。
这是你想要的止损水平,例如,1.5000+30*0.00001=1.5003。
SL= Price + StopLoss*Point;
否则你为什么要在价格 上加上StopLoss*Point(1.5003*0.00001=0.000015)。SL几乎等于价格,这就是为什么没有设置StopLoss。1.寻找最后关闭的位置(MODE_HISTORY)。
2.如果它在(或接近)外卖店关闭 --> 记住它的开放时间 -->
3.查看所有未结头寸(MODE_TRADES),并将其开仓时间与记忆中的时间(从第2点开始)进行比较 --> 如果记忆中的被标记关闭的头寸的开仓时间(从第2点开始)与其他未结头寸的开仓时间相比是最长的 --> 这意味着最后的未结头寸被标记关闭 -->
4.裁剪/删除所有其他的东西。
嗯,好像是这样写的。但结果却不尽相同。
以下是我的看法。
好心人,你能告诉我什么是错的吗。在卖出交易中,在0条的第一个点上开仓,止损应该放在第一根蜡烛的高点之上30点(5位数)。这样写的,但止损根本就没放。
你在这里所拥有的根本就不是什么。让我们从以下事实开始:空头收盘总是在ASC上,而不是在BID上。
止损仍然没有设置,但止盈却起了作用。附上止损和止盈代码
嗯。似乎已经写好了。但输出是错误的...
这就是我得到的东西。