초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 662

 
Sergey Gritsay :
불행히도 MQL5에는 MarketInfo(symbf,MODE_MARGINREQUIRED) 속성과 유사한 것이 없습니다. 정확히 기억은 나지 않지만 이 주제는 이미 포럼 어딘가에서 논의되었습니다.
주문계산마진
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] 함수가 성공적으로 실행된 경우 필요한 여백 크기가 기록될 변수입니다. 현재 계정에 미결 주문 및 미결 포지션이 없는 것처럼 계산됩니다. 마진 값은 여러 요인에 따라 달라지며 다음과 같이 변경될 수 있습니다.
문서 | 2015.12.03 14:00
 
forexman77 :

MQL4 "MarketInfo(symbf,MODE_MARGINREQUIRED)"와 유사하게 MQL5에서 구매하기 위해 1랏을 여는 데 필요한 여유 증거금을 프로그래밍 방식으로 가져와야 합니다.

OrderCheck() 함수를 시도하십시오.
 
Alexey Kozitsyn :
OrderCheck() 함수를 시도하십시오.
고맙습니다! 이해했다.
double lot= 1.0 ;
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);
 
forexman77 :
고맙습니다! 이해했다.
double lot= 1.0 ;
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);
예, 그렇게 할 수 있지만 OrderCheck()의 경우 요청 자체 직전에 보낼 준비가 된 거래 요청 구조가 제공됩니다.
 

그런 질문에 코드의 일부를 함수로 옮기고 싶지만 함수의 결과 가 값의 반환이 아니라 변수 값의 실제 변화가 되려면 어떻게 해야 할까요? ?

 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);

  } 

 
-Aleks- :

그런 질문에 코드의 일부를 함수로 옮기고 싶지만 함수의 결과 가 값의 반환이 아니라 변수 값의 실제 변화가 되려면 어떻게 해야 할까요? ?

도움이 되지 않을까요?

int OpenOrdersInfo()

{

...

반환(0);

}

 
-Aleks- :

그런 질문에 코드의 일부를 함수로 옮기고 싶지만 함수의 결과 가 값의 반환이 아니라 변수 값의 실제 변화가 되려면 어떻게 해야 할까요? ?

 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가 결과를 반환하지 않는 것으로 밝혀졌습니다.

 
-Aleks- :

그런 질문에 코드의 일부를 함수로 옮기고 싶지만 함수의 결과 가 값의 반환이 아니라 변수 값의 실제 변화가 되려면 어떻게 해야 할까요? ?

이것을 시도할 수 있지만 솔루션이 최선은 아닙니다.

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" ));
 }
 
Vladislav Andruschenko :

그래서 여기의 모든 것이 VOID가 결과를 반환하지 않는 것으로 밝혀졌습니다.

네, 맞다는 것이 밝혀졌습니다. 제 부분에 잼이 있었고 나는 혼미에 빠졌습니다.

도움을 주셔서 감사합니다.

이제 5가지 질문을 드리겠습니다. :)

 
-Aleks- :

네, 맞다는 것이 밝혀졌습니다. 제 부분에 잼이 있었고 나는 혼미에 빠졌습니다.

도움을 주셔서 감사합니다.

이제 5가지 질문을 드리겠습니다. :)

답변에 5달러?

)

대기 중...

사유: