PriceCl = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits); //примерную цену закрытия
order = OrderTicket(); //получили ордерif(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
{OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Закрытие позиций по рыночной цене сначала прибыльных |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void ClosePosFirstProfit(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
// Сначала закрываем прибыльные позицииfor (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderProfit()+OrderSwap()>0) ClosePosBySelect();
}
}
}
}
}
// Потом все остальные
k=OrdersTotal();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
}
}
}
}
}
大家好)
我试图写一个函数来关闭一部分位置,但当我在测试器中运行时,138号弹出了错误。 我不明白问题出在哪里。 请帮助我。
这里是一个EA,这个功能应该在这里工作)
138 - "要求的价格已经过期,或者出价和要价混在一起"。
开盘/收盘价 不能重新计算,因为它就在那里,问题就在这里(你需要用MarketInfo请求价格 并给它一个值,并把这个 值重命名为另一个变量)。
大家好。
我试图通过Kim更新一个简单的拖曳式EA,在关闭所有市场订单后删除挂单,但失败了(
我已添加了删除待处理订单的功能。
我还面临另一个问题,我应该无法解决,因为我不太擅长编码。
我想我应该写一个条件,比如说。
这只是另一个EA的一个例子。
请帮助我。
Kostya,做一个循环来计算所需类型的订单数量,然后按你的意愿删除,不要自作聪明。
我是个代码呆子)我在那里加了更多的停顿,也许会有帮助)
if (OrderType()==OP_BUY || OrderType()==OP_SELL || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
我是个代码书呆子) 我在上面多加了一些停顿,也许会有帮助)。
突出的不是问题。问题是,在你添加停顿之前,你应该想到,"这对你有什么好处?"它不会做任何事情.........而且添加它有什么意义吗?
我没有理解其余的内容,我喝醉了,不尊重金的代码......对不起......。
突出的不是麻烦。问题是,在你添加挂单之前,你应该想到 "你有什么好处?"它没有做任何事情...而且添加它有什么意义吗?
其余的我不明白,我喝醉了,金的代码不尊重...对不起...。
没什么)我是这么想的,我必须写一个条件,现在我在想。
是的,这些代码不是从他那里得到的,至少是免费的,关于付费我不知道。
它没有做任何事情)我这样想,我必须写一个条件,我在想。
我不知道如何做到这一点,但我有一个不同的代码,用于真实的。
对于真正的,每个经纪公司都有自己的代码,所以没有一个通用的。
问题解决了)想了很久)谢谢大家。
大家好!
我正面临着一个问题,即在一个五号标记 上关闭反订单。问题是,我需要在达到总利润时关闭,例如20个买单和33个卖单。我想用函数OrderCloseBy()关闭20个买单和20个卖单,用函数OrderClose()关闭其余13个卖单。
如果我们的固定点差是4位数,我们在关闭点差时就不会有任何问题,在使用函数OrderCloseBy()时也会保存点差。如果我们有一个5位数的点差,点差是浮动的,这就是为什么,我认为,当达到总利润时,订单没有被关闭,OrderCloseBy()函数在日志中争论。同时,如果我们在测试器中运行它,一切都正常关闭。
一个方向的订单,当达到总利润时,会顺利关闭。
谁遇到过这样的问题,解决这个问题的方案有哪些?
这里是关闭订单的功能。
请告知如何按照开单的顺序关闭订单。
我想重做这个功能。
请告知如何按照开单的顺序关闭订单。
我想重做这个功能。