大家好。
希望得到你们的帮助来处理这个问题。
当一个订单打开后,价格低于订单的开仓价,我想开一个相反的订单。
在这种特殊情况下,我试图使用这个代码,但没有成功。谁能帮帮我?
谢谢
路易斯
你能不能回答这个问题,这将对你有很大的帮助。
1.OrderSelect()的返回值是什么 - 阅读OrderSelect的文档会帮助你回答这个问题。
2.2.当你发送订单失败时,会出现什么错误?
大家好。
希望得到你们的帮助来处理这个问题。
当一个订单打开后,价格低于订单的开仓价,我想开一个相反的订单。
在这种特殊情况下,我尝试使用这个代码,但没有成功。谁能给我一些帮助?
如果你能解释你为什么使用这个变量,你可能会明白你的问题是什么 ... ...另外 ...OpenPrice 的值来自哪里?
你不想知道你的OrderSend()是否有效吗? 如果失败了,你不想知道原因吗?你不想知道失败时的相关变量是什么吗?
请阅读:什么是函数的返回值?我如何使用它们?
嗨,RaptorUK。
谢谢你的及时回复。
UsePoint 是为了调整5个小数点,所以是Point*10。
OpenPrice 是OrderOpenPrice()
谢谢你
路易斯
嗨,RaptorUK。
谢谢你的及时回复。
UsePoint 是为了调整5个小数点,所以是Point*10。
你能解释一下为什么你在这种情况下使用它吗?
嗨,RaptorUK。
你是对的。我只需要把它用于止盈和止损(我想......)。
嗨,RaptorUK。
你是对的。我只需要把它用于止盈和止损(我想......)。
嗨,RaptorUK。
我看了一下你提供的链接,在代码中加入了错误程序,刚刚返回的错误是:2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Order Send failed, error # 4051.
然后我在代码中对OrderSelect和使用Ticket做了一些修改,但事情还是没有进展。我还搜索了一下其含义,发现是ERR_INVALID_FUNCTION_PARAMVALUE(4051),不幸的是我不知道
如何从这里得到...
double OpenOppositeOrder() { int Op; // for(int Counter=0;Counter<=OrdersTotal()-1;Counter++) for(int Counter=OrdersTotal()-1;Counter>=0;Counter--) { //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES); OrderSelect(Ticket,SELECT_BY_TICKET); { if(OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber) { Op=OrderType(); if(Op==OP_BUY && NormalizeDouble(Bid,Digits)<OpenPrice) { Ticket = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,Digits),UseSlippage,0,0,"Sell Order",MagicNumber,0,Red); if(Ticket>0)AddLimitsSell(); } if( Ticket > 0 ) { Print("Order placed # ", Ticket); } else { Print("Order Send failed, error # ", GetLastError() ); } if(Op==OP_SELL && NormalizeDouble(Ask,Digits)>OpenPrice) { Ticket = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,Digits),UseSlippage,0,0,"Buy Order",MagicNumber,0,Green); if(Ticket>0)AddLimitsBuy(); } if( Ticket > 0 ) { Print("Order placed # ", Ticket); } else { Print("Order Send failed, error # ", GetLastError() ); } } } } }
嗨,RaptorUK。
我看了一下你提供的链接,在代码中加入了错误程序,刚刚返回的错误是:2012.11.06 06:40 market order ecn v1 EURUSDi,M5: Order Send failed, error # 4051.
然后我在代码中对OrderSelect和使用Ticket做了一些修改,但事情还是没有进展。我还搜索了一下其含义,发现是ERR_INVALID_FUNCTION_PARAMVALUE(4051),不幸的是我不知道
如何从这里得到...
你需要检查你发送给OrderSend()函数的值 ......它们的类型是否正确?例如,UseSlippage 必须是一个int,听起来像是一个bool ...... LotSize 是一个双数 吗 ?它在正确的范围内吗?大于Min Lot和小于Max Lot,并且是Lot Step的倍数?
嗨,RaptorUK。
很抱歉占用你的时间,可能你开始厌倦我了。所以Slippage是一个int,LotSize是一个double....,事情还是很糟糕....。
我真的很努力去理解这个问题,但似乎我的无知占了便宜(...)
有的时候,似乎是测试器的一些问题,然后我在Demo上尝试。在这里,如果价格低于(买入)OrderOpenPrice,我就不能有一个相反的订单开仓。
请你看一下附件中的代码。
我不希望你为我写代码,而只是提供一点帮助。
请提前感谢您提供的任何帮助,也感谢您的耐心。
路易斯
嗨,RaptorUK。
很抱歉占用你的时间,可能你开始厌倦我了。所以Slippage是一个int,LotSize是一个double....,事情还是很糟糕....。
我真的很努力去理解这个问题,但似乎我的无知占了便宜(...)
有几次,似乎是测试器的一些问题,然后我在Demo上尝试。在这里,如果价格低于(买入)OrderOpenPrice,我就不能有一个相反的订单开仓。
请你看一下附件中的代码。
我不希望你为我写代码,而只是提供一点帮助。
请提前感谢您提供的任何帮助,也感谢您的耐心。
你为什么把正确的代码改为错误的代码?
你的循环是通过交易池中的所有订单(开仓和挂单)进行循环。.现在这段代码没有意义,在循环的第一遍,票据来自哪里?
for(int Counter=OrdersTotal()-1; Counter>=0; Counter--) { //OrderSelect(Counter,SELECT_BY_POS,MODE_TRADES); OrderSelect( Ticket, SELECT_BY_TICKET);
还有一个问题要问你..为什么这个函数的类型是双倍 的,而它并没有返回任何东西?
大家好。
希望得到你们的帮助来处理这个问题。
当一个订单打开后,价格低于订单的开仓价,我想开一个相反的订单。
在这种特殊情况下,我试图使用这个代码,但没有成功。谁能帮帮我?
谢谢
路易斯