int CountExpOrder_OS=0,CountExpOrder_OB=0,CountMarketOrder_OS=0,CountMarketOrder_OB=0;
OpenOrdersInfo(CountExpOrder_OS,CountExpOrder_OB,CountMarketOrder_OS,CountMarketOrder_OB); Print("Ордеров на покупку(Magic: ",Magic,")=",CountExpOrder_OB); Print("Ордеров на продажу(Magic: ",Magic,")=",CountExpOrder_OS); Print("Позиций на покупку(Magic: ",Magic,")=",CountMarketOrder_OB); Print("Позиций на продажу(Magic: ",Magic,")=",CountMarketOrder_OS);
void OpenOrdersInfo(int &CountExpOrder_OS,int &CountExpOrder_OB,int &CountMarketOrder_OS,int &CountMarketOrder_OB) { CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number")); CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number")); CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number")); CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number")); }
不幸的是,在MQL5中没有MarketInfo(symbf,MODE_MARGINREQUIRED) 属性的类似物,但在论坛的某个地方已经讨论过了
你需要以编程方式获得在MQL5中开1手买入所需的自由资金量,模拟MQL4的 "MarketInfo(symbf,MODE_MARGINREQUIRED);"
试试OrderCheck()函数。
double margin_buy,margin_sell;
OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_ASK),margin_buy);
OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_BID),margin_sell);
Print("margin_buy=",margin_buy);
Print("margin_sell=",margin_sell);
谢谢你!弄明白了。
double margin_buy,margin_sell;
OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_ASK),margin_buy);
OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,lot,SymbolInfoDouble(_Symbol,SYMBOL_BID),margin_sell);
Print("margin_buy=",margin_buy);
Print("margin_sell=",margin_sell);
我想把部分代码转移到一个函数中,但函数的结果不是返回一个值,而是实际改变变量的值,我该怎么做?
int CountExpOrder_OS=0;
int CountExpOrder_OB=0;
int CountMarketOrder_OS=0;
int CountMarketOrder_OB=0;
OpenOrdersInfo();
void OpenOrdersInfo()
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
Print("Отложенных ордеров на покупку открыто(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Отложенных ордеров на продажу открыто(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Рыночных ордеров на покупку открыто(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Рыночных ордеров на продажу открыто(Magic: ",Magic,")=",CountMarketOrder_OS);
}
我想把一部分代码转移到一个函数中,但这个函数的结果不是返回一个值,而是实际改变变量的值,我该怎么做?
它不会有帮助?
int OpenOrdersInfo()
{
...
return(0);
}
这个问题,我想把部分代码转移到一个函数中,但这个函数的结果不是返回一个值,而是实际改变变量的值,我该怎么做?
int CountExpOrder_OS=0;
int CountExpOrder_OB=0;
int CountMarketOrder_OS=0;
int CountMarketOrder_OB=0;
OpenOrdersInfo();
void OpenOrdersInfo()
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
Print("Отложенных ордеров на покупку открыто(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Отложенных ордеров на продажу открыто(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Рыночных ордеров на покупку открыто(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Рыночных ордеров на продажу открыто(Magic: ",Magic,")=",CountMarketOrder_OS);
}
这里没问题,VOID并没有返回结果。
我想把部分代码转移到一个函数中,但这个函数的结果不是返回一个值,而是实际改变变量的值,我该怎么做?
我可以试试,但这不是一个好办法。
OpenOrdersInfo(CountExpOrder_OS,CountExpOrder_OB,CountMarketOrder_OS,CountMarketOrder_OB);
Print("Ордеров на покупку(Magic: ",Magic,")=",CountExpOrder_OB);
Print("Ордеров на продажу(Magic: ",Magic,")=",CountExpOrder_OS);
Print("Позиций на покупку(Magic: ",Magic,")=",CountMarketOrder_OB);
Print("Позиций на продажу(Magic: ",Magic,")=",CountMarketOrder_OS);
void OpenOrdersInfo(int &CountExpOrder_OS,int &CountExpOrder_OB,int &CountMarketOrder_OS,int &CountMarketOrder_OB)
{
CountExpOrder_OS=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,SELL,ALL,"Number"));
CountExpOrder_OB=StrToInteger(Order.Exp_Order_Info(Symbol(),Magic,BUY,ALL,"Number"));
CountMarketOrder_OS=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_SELL, ALL, "Number"));
CountMarketOrder_OB=StrToInteger(Order.Market_Order_Info(Symbol(), Magic, OP_BUY, ALL, "Number"));
}
没关系,VOID并不返回结果。
是的,它的工作是正确的--只是我有一个错误,我陷入了昏迷。
感谢大家的帮助。
现在我将在五个方面提出问题 :)
是的,没错--这只是我的一个疏忽,我陷入了昏迷。
感谢大家的帮助。
我现在要为五块 钱提问了 :)
5英镑买一个答案?
)
等待着...