求大神指点,MT4在达到下单条件后同时下多个挂单会出现部分订单未正确下达。
请问是否下单太快服务器不能同时接受多个订单指令?
该怎么处理?
下单代码如下
OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask,10,止损,止损 ,"Symble+buy",magic,0,clrMediumSpringGreen);
你掛限價單是不是掛的很近?
當你手動下掛單的時候
通常都會顯示:掛單價必需遠離市價xx點
如果你掛單靠的很近…那市價再滑一下…自然無法掛成功
再來就是…直接看日誌上的錯誤寫啥會更清楚問題在哪
你掛限價單是不是掛的很近?
當你手動下掛單的時候
通常都會顯示:掛單價必需遠離市價xx點
如果你掛單靠的很近…那市價再滑一下…自然無法掛成功
再來就是…直接看日誌上的錯誤寫啥會更清楚問題在哪
挂单超过服务器规定的,这点应该没问题。
主要是日志也没报错信息,头大~~~
我的EA是要求下3个挂单,系统下通常下1-3个,很是头疼。
需不需在挂单中间加上时间限制,比如100毫秒下一单,该怎么操作,求解惑!
求大神指点,MT4在达到下单条件后同时下多个挂单会出现部分订单未正确下达。
请问是否下单太快服务器不能同时接受多个订单指令?
该怎么处理?
下单代码如下
OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask,10,止损,止损 ,"Symble+buy",magic,0,clrMediumSpringGreen);
int t1=OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask+((MarketInfo(Symbol(),MODE_STOPLEVEL)+10)/MarketInfo(Symbol(),MODE_LOTSIZE)),10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
int t2=OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask+((MarketInfo(Symbol(),MODE_STOPLEVEL)+20)/MarketInfo(Symbol(),MODE_LOTSIZE)),10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);掛單須跟市價有最小的點差 各平台規定不一樣 後面增加10,20點是避免市價波動劇烈時超出規定點差
int t1=OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask+((MarketInfo(Symbol(),MODE_STOPLEVEL)+10)/MarketInfo(Symbol(),MODE_LOTSIZE)),10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
int t2=OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask+((MarketInfo(Symbol(),MODE_STOPLEVEL)+20)/MarketInfo(Symbol(),MODE_LOTSIZE)),10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);掛單須跟市價有最小的點差 各平台規定不一樣 後面增加10,20點是避免市價波動劇烈時超出規定點差
感谢回答!但是我的平台挂单可以1点差挂单,而且我的挂单都距离市价有50-100点距离,应该不是这个问题。
感谢回答!但是我的平台挂单可以1点差挂单,而且我的挂单都距离市价有50-100点距离,应该不是这个问题。
那不然就是你下掛單時要判斷是否下單成功、若不成功再重下一次…直到訂單成功為止、再處理下一個掛單
應該就能解決這個問題了…
以自帶的範例來修改成你的開倉條件就會是…
ticket=OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){Print("BUY order opened : ",OrderOpenPrice());}
}
else{
Print("Error opening BUY order : ",GetLastError());
//這邊加上再次下單的代碼、寫成開倉的函數也許會比較方便}
感谢回答!但是我的平台挂单可以1点差挂单,而且我的挂单都距离市价有50-100点距离,应该不是这个问题。
根據你提供的代碼
OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
就是Price的錯誤 修改過後就能執行
如果編碼沒錯 同時發送三單 一般服務器是會有漏單 編法要修改
你可以用做標記的方式 或是定義一個計算器 讓程序確保三單全都發送
if(OrderSend=="buy") //接受下單信號 { OrderQTY = 下單數量 ; //確認本次下單的數量 OrderTimes = 下單數量 ; OrderSend = "NoWork"; //終止下單的信號 } if(OrderTimes!=0) for(int i=OrderQTY;i<=0;i--) { int Tick=OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen); if(OrderSelect(Tick,SELECT_BY_TICKET,MODE_TRADES)) { Print("Order Depend") //確認下單成功 OrderTimes--; //下單成功時下單數量減一 } else Print("Error opening BUY order : ",GetLastError()); //確認下單失敗 }
擷取樓上部分的代碼
代碼順序我沒試過 大概是這樣的邏輯
求大神指点,MT4在达到下单条件后同时下多个挂单会出现部分订单未正确下达。
请问是否下单太快服务器不能同时接受多个订单指令?
该怎么处理?
下单代码如下
OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask,10,止损,止损 ,"Symble+buy",magic,0,clrMediumSpringGreen);
你的代码写的不标准,思路也有问题,Ask即时价格下同时入场2-3单? 正常不应该这么写的,挂单一定要距离现价多少个点,你点告诉电脑,不要让电脑去猜,玩极限距离
这是正规的挂单代码:
double orderprice3=Bid+200*Point();
double stoploss3=orderprice3+420*Point();
if(OrderSend(Symbol(),OP_SELLLIMIT,0.01,orderprice3,50,stoploss3,0,"defencegua1",333,clrNONE)<0)
{
Print("OP_SELLLIMIT 333 failed with error #",GetLastError());
}
double orderprice4=Bid+400*Point();
double stoploss4=orderprice4+220*Point();
if(OrderSend(Symbol(),OP_SELLLIMIT,0.01,orderprice4,50,stoploss4,0,"defencegua2",333,clrNONE)<0)
{
Print("OP_SELLLIMIT 333 failed with error #",GetLastError());
}
求大神指点,MT4在达到下单条件后同时下多个挂单会出现部分订单未正确下达。
请问是否下单太快服务器不能同时接受多个订单指令?
该怎么处理?
下单代码如下
OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask,10,止损,止盈,"Symble+buy",magic,0,clrMediumSpringGreen);
OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask,10,止损,止损 ,"Symble+buy",magic,0,clrMediumSpringGreen);