[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 395

 
KostelloArtua:

非常感谢你的提示!!!。我的问题已经解决了。事实证明,我所寻找的经纪人,在下市场订单时,即根据条件,不允许我同时放置止损位。现在下的订单没有任何止损位,我在每个订单后立即设置止损位。我有一个问题:只有很少一部分订单被修改,而大部分订单在 "专家顾问 "部分显示如下结果。

2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: open #30906670 sell 0.01 CLM1 at 99.79 ok
2011.05.19 09:46:55 Spacenewcomer-Svecha CLM1,M15: invalid ticket for OrderModify function
2011.05.19 09:55:40 Spacenewcomer-Svecha ESM1,M5: open #30906787 buy 0.01 ESM1 at 1337.50 ok

2011.05.19 10:00:03 Spacenewcomer-Svecha EURUSD,M15: OrderModify函数的无效票据

以下是代码文本。

{
res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0, "basic",_MagicNumber,0,Red);


OrderModify(OrderTicket(),OrderOpenPrice(),Ask+StopLoss*Point, Ask-TakeProfit*Point,0,Red);
return(0);

}

此外,它是专家顾问启动后修改的第一个订单!

很明显,我在代码中设置了错误的订单修改...请帮帮我吧!

res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0, "basic",_MagicNumber,0,Red);

OrderSelect(res, SELECT_BY_TICKET);
OrderModify(OrderTicket(),, OrderOpenPrice(), NormalizeDouble(Ask+StopLoss*Point, Digits), NormalizeDouble( Ask-TakeProfit*Point, Digits),0,Red) 。
 
ilunga:
res=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,0,0, "basic",_MagicNumber,0,Red)。

OrderSelect(res, SELECT_BY_TICKET)。
OrderModify(OrderTicket(), OrderOpenPrice(),NormalizeDouble( Ask+StopLoss*Point,Digits),NormalizeDouble( Ask-TakeProfit*Point,Digits),0,Red)。
谢谢你的提示!!。
 
Sancho77:
尊敬的程序员,我请求帮助修改专家顾问:我有一个开仓,一段时间后,有第二个信号,在同一方向开仓。我希望新的订单只有在第一个订单已经处于加号位置时才会被第二个信号所填补。我通过比较余额大小和净值来实现这一点(如果净值高于余额,所开的订单就在加号中)。
你能建议一个代码来确定你的最后一个未平仓订单的利润/亏损吗?

如果他的票号被保存,那么只需

OrderSelect(ticket, SELECT_BY_TICKET);

if (OrderProfit() > )

{

          // доливаем ордер

}
 
ilunga:

如果他的票号被保存,只需


谢谢你!你能告诉我如何保存最后一笔订单的票据吗?
 
Sancho77:
谢谢你!您能告诉我们如何保存最后一笔订单的票据吗?

那么,最简单的选择是声明一个全局变量int ticket

并用ticket = OrderSend(...)替换所有地方的ticket = OrderSend(...)

它将总是存储最后打开的订单的号码。

或者 看主题"来自KimIV的有用功能"!

 
ilunga:

那么,最简单的选择是声明一个全局变量int ticket

并用ticket = OrderSend(...)替换所有地方的ticket = OrderSend(...)

它将总是存储最后打开的订单的号码。

或者 看主题"来自KimIV的有用功能"

谢谢你的帮助
 
rustein:

帮助我找到一个错误。

谢谢你


BuySL*Point // зачем умножать на Point ? Тоже самое для SelSL*Point
 
khorosh:

谢谢你。

我不知道...以为会起作用,但没有这两样东西就不能起作用,这样做了,它就起作用了....

//-----
  double Spread = (NormalizeDouble(Ask,Digits) - NormalizeDouble(Bid,Digits)) / Point;
  double BuySL = NormalizeDouble(iCustom(NULL,0,"NRTR",AveragePeriod,0,1),Digits);
  double SelSL = NormalizeDouble(iCustom(NULL,0,"NRTR",AveragePeriod,1,1),Digits);
//-----
  int Orders = OrdersTotal();
  for (int i=0; i<Orders; i++)
  {
    if (!(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol()) continue;
    {
      if(OrderType() == OP_BUY && OrderMagicNumber()==Magic && OrderStopLoss() != BuySL-Spread*Point
      && BuySL-Spread*Point > OrderStopLoss() && BuySL-Spread*Point > OrderOpenPrice())
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),BuySL-Spread*Point,OrderTakeProfit(),0,CLR_NONE);
      }
      if(OrderType() == OP_SELL && OrderMagicNumber()==Magic && OrderStopLoss() != SelSL+Spread*Point
      && SelSL+Spread*Point < OrderStopLoss() && SelSL+Spread*Point < OrderOpenPrice())
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),SelSL+Spread*Point,OrderTakeProfit(),0,CLR_NONE);
      }
    }
  }
}

 
Roger:
PRICE_OPEN !!!!- 你不能使用这个价格!它只对指标起作用。使用买入或卖出。

谢谢你!!!。 是的,那是一种绝对的可能性。
 

伙计们一个更复杂的问题......

如何使EA在达到给定利润时关闭所有订单 ....只关闭一个符号的订单 ...

例子:EA在3个货币对上工作,在一个符号上关闭所有订单100p ...

如果欧元 超过100便士,它将只关闭欧元的订单,而其他人可能有200便士......。

如果我采用accountbalanse(),那么顾问将只在三个货币对的总和超过100p时关闭。这个选项不适合我!!!!。

请帮助.........