Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 662
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Desafortunadamente, no hay un análogo de la propiedadMarketInfo(symbf,MODE_MARGINREQUIRED) en MQL5, pero ya se discutió en algún lugar del foro
Es necesario obtener programáticamente,el tamaño de los fondos libres necesarios para abrir 1 lote para comprar en MQL5, análogo a MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED);"
Pruebe la función 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);
Gracias. Lo he descubierto.
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);
Quiero transferir parte del código a una función, pero el resultado de la función no es devolver un valor, sino cambiar realmente los valores de las variables, ¿cómo lo hago?
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);
}
Quiero transferir parte del código a una función, pero el resultado de la función no es la devolución de un valor, sino el cambio real de los valores de las variables, ¿cómo lo hago?
¿no ayudará?
int OpenOrdersInfo()
{
...
return(0);
}
Esta pregunta, quiero transferir parte del código en una función, pero el resultado de la función no es el retorno de un valor, pero en realidad cambiar los valores de las variables, ¿cómo lo hago?
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);
}
Aquí está bien, VOID no devuelve el resultado.
Quiero transferir parte del código a una función, pero el resultado de la función no sería devolver un valor, sino cambiar realmente los valores de las variables, ¿cómo lo hago?
Podría intentar eso, pero no es una buena solución:
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"));
}
Está bien, el VOID no devuelve ningún resultado.
Sí, funciona correctamente, es que ha habido un fallo por mi parte y he caído en el estupor.
Gracias a todos por su ayuda.
Ahora voy a hacer preguntas en cinco :)
Sí, es cierto, ha habido un despiste por mi parte y he caído en el estupor.
Gracias a todos por su ayuda.
Ahora haré preguntas por cinco dólares:)
¿5 libras por una respuesta?
)
Esperando...