//+----------------------------------------------------------------------------------------------------------------------------------------+ //| Check to see if any order open on this currency pair |//+----------------------------------------------------------------------------------------------------------------------------------------+ int OpenOrdersThisPair(string pair)
{
int total=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==pair) total++;
}
return(total);
}
if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
{
if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
{
Print("The Symbol is: ", OrderSymbol());
}
if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
{
CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
}
if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
{
CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
}
2013.08.08 18:51:21 2010.02.08 01:00 Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY
DomGilberto: I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...
I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...
我在使用这个?再加上上面 的"if(OpenOrdersThisPair(Symbol())>0)",这应该能使EA与每对交易分开?
啊!如果我比较一下OrderCloseTime()和OrderOpenTime()呢?
当然,这将是实现我所希望的最好的方式?这样我就可以添加任意多的OrderClose函数?毕竟,我可以简单地选择历史上与当前 "OP_BUY "的OrderOpenTime()相同的交易,但是如果OrderCloseTime()>OrderOpenTime(),那么这将阻止OrderClose(),连续关闭一半!?
谁能告诉我,我在这里得到了一些工作:( 哈哈。
请原谅我,但我不明白这怎么会是真的?我正在确保OrderSymbol()==对?所以连接到欧元兑美元的相关EA,会发现它是欧元兑美元的订单选择?
你先是OrderSelect(),然后你检查 ......
if(OrderSymbol()==pair) total++;
......这对该函数 来说是很好的,如果符号不匹配,你就不增加计数 ......但这仍然意味着你最后选择的订单不是你正在处理的符号。
你需要一个额外的循环,找到一个有效的订单,然后退出循环 ...... 然后你就有了正确的订单选择。
我很困惑,本周我同时 在16个不同的货币对上测试了我的EA,它从未选择过错误的货币。我是不是错过了什么?
DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...
I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...
EA关闭了订单,EA需要知道哪个订单不能再次关闭,所以在关闭前要获得OrderOpenTime()。在该货币对 的订单中,EA的代码不会再以相同的OrderOpenTime()进行部分平仓。
EA关闭了订单,EA需要知道哪个订单不能再次关闭,所以在关闭前要获得OrderOpenTime()。在该货币对的订单中,EA的代码不会再以相同的OrderOpenTime()进行部分平仓。
是的,我现在开始明白了--我想我需要与历史上在同一OrderSymbol()上关闭的交易进行比较?
但我的问题是,我试图将同一个 "OP_BUY "或 "OP_SELL "以不同的价格部分平仓多达4次......我想我应该问的问题是,我能否得到一种方法,即我有一个规则,所有的部分平仓(任何手数和价格的交易)将只在其预定义的 "OrderClose() "参数设置下部分平仓一次......
我现在正在考虑的这种比较OrderOpenTime()的方式基本上只起一次作用,并将限制任何其他类型的OrderClose() 函数的发生...。我想找到一种方法,可以让一条规则适用于4个OrderClose()函数。(如果这有意义的话?)
我知道人们建议开4个订单,但如果不深入研究,这样做对我来说效率较低。