//+----------------------------------------------------------------------------+//| Версия : 19.05.2008 |//| Описание : Возвращает флаг закрытия последней позиции по тейку. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, otp;
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);
otp=NormalizeDouble(OrderTakeProfit(), dg);
if (ocp==otp) return(True);
}
return(False);
}
下午好,谁能帮助解决一个问题,也许我做错了什么。
我有一个Klima块,在takei返回最后一个头寸的平仓标志,对停止也是如此。
但我是这样使用它的。
起初,一切都按计划进行,在第4批开出了我需要的一个,这个也是。
我搞不清楚它是干什么用的。
为清晰起见
我不知道它是用来干什么的
这就对了。
第一次检查(总数==1)发生在订单仍为1的时候。在该区块内,你发现最后关闭的卖出->打开,最后关闭的买入->再次打开。这使得3个订单。
是的,这就对了。
第一次检查(总数==1)发生在订单仍为1的时候。在该区块内,你可以找到最后一次关闭的卖出->打开,最后一次关闭的买入->再次打开。这已经导致了3个订单。
是的,但如何使它是只有2个订单,所以它不打开一个订单下的数字6。
最简单的方法是检查是否存在买入或卖出类型的未结订单。以此为例(变量BuyOrders, SellOrders, TotalOrders是程序中的全局变量;它们必须在start()函数中声明为int BuyOrders, SellOrders, TotalOrders;):
有很多选择,最简单的是检查是否有开放的买入或卖出订单。就拿这个来说吧。
我不知道如何使用它,请帮助我。
我不明白如何使用它,所以如果你能帮助我。
你确定它能打开买入三箱,卖出一箱吗?这不是对称的...我会的,但我还是不明白你的代码的逻辑。
你确定在三种情况下你开的是卖出头寸,而在一种情况下是买入头寸吗?这不是对称的...我会帮助你,但我还不明白你的代码的逻辑。
我想让它在市场上没有头寸时打开,如果其中一个值是正确的,那么就打开1个订单并等待头寸关闭。
我希望它只在市场上没有头寸的情况下打开,如果选择的数值之一是正确的,则打开1个订单,然后等待头寸关闭。
所以,事实证明你可能有2个买单 而没有卖单?
Figar0:
Т.е. получается что возможна ситуация когда у вас будет 2 ордера на покупку и не одного на продаж
不,反之亦然,仓位应该只有2个,包括没有止损和保值的卖出,报表显示了它是如何运作的。 对,但在6号下开了一个额外的仓位。
那么,一切都将变得更加复杂。 用文字描述一下算法应该如何工作,我将尝试帮助你,同时我也会帮助你)
- 同时可以有2个位置。
- 首先开设2个仓位:买入和卖出。
下一个?