OrderCalcMargin Calcula o montante da margem necessária para o tipo de ordem especificado na conta corrente e no ambiente de mercado actual, excluindo as ordens pendentes e as posições abertas. Permite-lhe estimar o montante da margem para o comércio planeado. O valor é devolvido na moeda da conta. bool OrderCalcMargin ( acção ENUM_ORDER_TYPE, // tipo de encomenda símbolo de cadeia, // nome do símbolo volume duplo, // preço duplo de volume, // preço aberto duplo& margem // variável para valor de margem); acção dos parâmetros [em] Tipo de encomenda, pode aceitar valores de ENUM_ORDER_TYPE. símbolo [em] Nome do instrumento financeiro. volume [em] Volume da operação comercial. preço [em] Preço de abertura. margem [out] Variável, onde a quantidade necessária de margem será escrita em caso de execução bem sucedida desta função. O cálculo é feito como se não houvesse ordens pendentes ou posições em aberto na conta corrente. O valor da margem depende de muitos factores e pode mudar durante...
É necessário obter programmaticamente,o tamanho dos fundos gratuitos necessários para abrir 1 lote para comprar em MQL5, análogo de MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED)";"
Sim, pode, mas no caso de OrderCheck() é alimentado com a estrutura de pedido de comércio já pronta para ser enviada imediatamente antes do pedido em si.
Quero transferir parte do código para uma função, mas o resultado da função não é devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
Quero transferir uma parte do código para uma função, mas o resultado da função não seria devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
Esta pergunta, quero transferir parte do código para uma função, mas o resultado da função não é o retorno de um valor, mas na realidade alterar os valores das variáveis, como é que o faço?
Quero transferir parte do código para uma função, mas o resultado da função não seria devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
Eu poderia tentar isso, mas não é uma boa solução:
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")); }
Infelizmente, não há nenhum análogo da propriedadeMarketInfo(symbf,MODE_MARGINREQUIRED) na MQL5, mas já foi discutido algures no fórum
É necessário obter programmaticamente,o tamanho dos fundos gratuitos necessários para abrir 1 lote para comprar em MQL5, análogo de MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED)";"
Experimente a função 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);
Obrigado! Imaginei-o.
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);
Quero transferir parte do código para uma função, mas o resultado da função não é devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
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);
}
Quero transferir uma parte do código para uma função, mas o resultado da função não seria devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
não vai ajudar?
int OpenOrdersInfo()
{
...
return(0);
}
Esta pergunta, quero transferir parte do código para uma função, mas o resultado da função não é o retorno de um valor, mas na realidade alterar os valores das variáveis, como é que o faço?
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);
}
Aqui está tudo bem, o VOID não devolve um resultado.
Quero transferir parte do código para uma função, mas o resultado da função não seria devolver um valor, mas alterar efectivamente os valores das variáveis, como é que o faço?
Eu poderia tentar isso, mas não é uma boa solução:
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"));
}
Não faz mal, a VOID não devolve um resultado.
Sim, está a funcionar correctamente - é que houve um insecto da minha parte e eu caí num estupor.
Obrigado a todos pela vossa ajuda.
Agora vou fazer perguntas sobre cinco :)
Sim, é verdade - foi apenas um deslize da minha parte e eu caí num estupor.
Obrigado a todos pela vossa ajuda.
Faço agora perguntas por uma nota de cinco:)
5 libras por uma resposta?
)
À espera...