OrderCalcMargin 현재 보류 중인 주문 및 미결 포지션을 제외하고 현재 계정 및 현재 시장 환경에서 지정된 주문 유형에 필요한 증거금 금액을 계산합니다. 계획된 거래 작업에 대한 마진을 추정할 수 있습니다. 값은 계정의 통화로 반환됩니다. bool OrderCalcMargin ( ENUM_ORDER_TYPE action, // 주문 유형 문자열 symbol, // 심볼 이름 double volume, // volume double price, // open price double& margin // 마진 값을 가져오기 위한 변수); 매개변수 action [in] 주문 유형, ENUM_ORDER_TYPE 열거에서 값을 취할 수 있습니다. symbol [in] 기호 이름입니다. volume [in] 거래량. price [in] 시가. margin [out] 함수가 성공적으로 실행된 경우 필요한 여백 크기가 기록될 변수입니다. 현재 계정에 미결 주문 및 미결 포지션이 없는 것처럼 계산됩니다. 마진 값은 여러 요인에 따라 달라지며 다음과 같이 변경될 수 있습니다.
그런 질문에 코드의 일부를 함수로 옮기고 싶지만 함수의 결과 가 값의 반환이 아니라 변수 값의 실제 변화가 되려면 어떻게 해야 할까요? ?
이것을 시도할 수 있지만 솔루션이 최선은 아닙니다.
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) 속성과 유사한 것이 없습니다. 정확히 기억은 나지 않지만 이 주제는 이미 포럼 어딘가에서 논의되었습니다.
MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED)"와 유사하게 MQL5에서 구매하기 위해 1랏을 여는 데 필요한 여유 증거금을 프로그래밍 방식으로 가져와야 합니다.
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()
{
...
반환(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가지 질문을 드리겠습니다. :)
네, 맞다는 것이 밝혀졌습니다. 제 부분에 잼이 있었고 나는 혼미에 빠졌습니다.
도움을 주셔서 감사합니다.
이제 5가지 질문을 드리겠습니다. :)
답변에 5달러?
)
대기 중...