for (int i = 0; i<=OrdersTotal(); i++) { if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){//Нефига тут профиту делать, это так, для убыстрения....
if(OrderProfit()>= NormalizeDouble (TP*Point,Digits)) //А тут вообще непонятки что с чем сравниваете.... { if (OrderType() == OP_BUY) double Lots = OrderLots(); double HalfLot = NormalizeDouble (Lots*0.5,2);// Тут озаботится чтобы лот не стал меньше минимального OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
externint TP = 200; // это количество пунктов после которых должно произойти частичное закрытиеexternint Magic = 77;
void CloseHalfOrder(){
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderProfit()>= NormalizeDouble (TP*Point,Digits))
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2); // изначально ( при открытии ордера) лот рассчитывается так, что он не может быть меньше чем 0,02OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderProfit()>= NormalizeDouble (TP*Point,Digits))
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
哦,我怎样才能使这个功能在每个未平仓的订单上只工作一次?
请帮助我解决这个函数中的错误。它已经榨干了我身上所有的汁液。该函数的实质是,当达到一定利润时,该函数应关闭一半的订单。
哦,我怎样才能使这个功能在每个未平仓的订单中只工作一次?
请帮助我解决这个函数中的错误。它已经榨干了我身上所有的汁液。该函数的实质是,当达到一定利润时,该函数应关闭一半的订单。
void CloseHalfOrder(){
for (int i = 0; i<=OrdersTotal(); i++)
{
if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true)
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic){//Нефига тут профиту делать, это так, для убыстрения....
if(OrderProfit()>= NormalizeDouble (TP*Point,Digits)) //А тут вообще непонятки что с чем сравниваете....
{
if (OrderType() == OP_BUY)
double Lots = OrderLots();
double HalfLot = NormalizeDouble (Lots*0.5,2);// Тут озаботится чтобы лот не стал меньше минимального
OrderClose(OrderTicket(),HalfLot,Bid,0,HotPink);
if (OrderType() == OP_SELL)
double Lots1 = OrderLots();
double HalfLot1 = NormalizeDouble (Lots*0.5,2);
OrderClose(OrderTicket(),HalfLot1,Ask,0,HotPink);
}
}
}
}
}
哦,我怎样才能使这个功能在每个未平仓的订单上只工作一次?
你可以在这里 看到部分关闭订单的原则。
谢谢你。但我仍然希望首先了解自己的错误。我还在学习。此外,我认为我已经非常接近事实了。
再来一次...该功能不工作。我想了解这些错误。+ 如何使它只对一个未平仓的订单触发1次?非常感谢你的帮助)
再来一次...该功能不工作。我想了解这些错误。+ 如何使它只对一个未平仓的订单触发1次?
一旦下单的条件不是很明确。好吧,我们可能不得不在这里使用全局变量。也许有不止一个订单,而且每个订单只有一次?
再来一次...该功能不工作。我想了解这些错误。+ 如何使它只对一个未平仓的订单触发1次?
我有以下情况。EA中有几个模块,每个模块都需要几个自定义函数。为了不淹没在代码中,我决定把每个模块放到脚本中。下面是 在专家顾问中调用脚本的变体。然而,下一个问题出现了:在调用脚本时,我需要向它传递一些参数。我们可以使用全局变量。还可以提出哪些其他的变体?
让我马上告诉你:通过iCustom()的 "更简单 "的变体并不适合我,原因有二。首先,模块的调用应该是在内存中偶尔出现的,而不是常量。第二,我不使用指标数组。
一旦下单的条件不是很明确。那么你可能必须在这里使用全局变量。是否可以有多个订单,每个订单只有一个时间?
市场上只能有一个订单。目前,这个功能完全不起作用......由于某种原因。但如果它能正常工作,我理解它将一直被触发,只要利润高于设定的点数。当然,我们需要它来关闭一次一半的头寸,仅此而已。但我希望它至少能工作一次)。
我有以下情况。EA中有几个模块,每个模块都需要几个自定义函数。为了不淹没在代码中,我决定把每个模块放到脚本中。下面是 在专家顾问中调用脚本的变体。然而,下一个问题出现了:在调用脚本时,我需要向它传递一些参数。我们可以使用全局变量。还可以提出哪些其他 的变体?
让我马上告诉你:通过iCustom()的 "更简单 "的变体并不适合我,原因有二。首先,模块的调用应该是在内存中偶尔出现的,而不是常量。第二,我不使用指标数组。
图书馆是一个选择。