Sergey Gritsay: Desafortunadamente, no hay un análogo de la propiedadMarketInfo(symbf,MODE_MARGINREQUIRED) en MQL5, pero ya se discutió en algún lugar del foro
OrderCalcMargin Calcula el importe del margen requerido para el tipo de orden especificado en la cuenta actual y en el entorno de mercado actual, excluyendo las órdenes pendientes actuales y las posiciones abiertas. Permite estimar el importe del margen para la operación prevista. El valor se devuelve en la moneda de la cuenta. bool OrderCalcMargin ( ENUM_ORDER_TYPE action, // tipo de orden string symbol, // nombre del símbolo double volume, // volumen double price, // precio de apertura double& margin // variable para el valor del margen); Parámetros action [in] Tipo de orden, puede aceptar valores de ENUM_ORDER_TYPE. símbolo [en] Nombre del instrumento financiero. volumen [en] Volumen de la operación comercial. precio [en] Precio de apertura. margin [out] Variable en la que se escribirá la cantidad necesaria de margen en caso de que se ejecute con éxito esta función. El cálculo se realiza como si no hubiera órdenes pendientes o posiciones abiertas en la cuenta corriente. El valor del margen depende de muchos factores y puede cambiar durante...
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);"
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?
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?
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?
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:
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")); }
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...