Last active
September 18, 2024 06:50
-
-
Save igotit-anything/4fe4e60fae8a4b93ccedd74ee4c430ef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
함수 설명: Get_Loss_Spread_USD(double volume_lot) | |
목적: 거래 종목의 스프레드로 인해 발생하는 USD 손실을 계산. 반환값은 항상 음수. | |
매개변수: volume_lot - 거래량을 랏 단위로 받음. | |
포인트 단위 스프레드: | |
SymbolInfoInteger 함수로 종목의 스프레드를 포인트 단위로 가져옴. | |
1랏 기준 USD 금액: | |
SymbolInfoDouble 함수로 가격 1 Tick의 USD 값을 가져옴. 상대 통화의 USD 환율에 따라 변경됨. | |
Tick 크기 계산: | |
1 Tick의 크기를 SYMBOL_TRADE_TICK_SIZE로 가져오고, 이를 포인트 단위로 변환. | |
포인트 단위 금액: | |
1 포인트가 얼마만큼의 USD 가치인지 계산. 1 Tick이 1 Point가 아닐 수 있음. | |
스프레드 손실 계산: | |
거래량(volume_lot), 포인트 단위 USD 금액, 스프레드를 곱해 최종 손실을 USD로 반환. | |
*/ | |
double CCyD_SymbolOne::Get_Loss_Spread_USD(double volume_lot) | |
{ | |
double loss_spread_usd=0; // 항상 음수. | |
// 종목의 스프레드(=Ask-Bid)가 포인트 단위로 반환됨. | |
// ex. EURGBP 스프레드 12포인트라면 | |
double spread_point = (double)SymbolInfoInteger(m_ccydSymbolName.Meta, SYMBOL_SPREAD); | |
//중요: 가격 1 Tick 에 해당하는 금액 인데 종목수량 "1랏" 기준의 계좌 결제통화(USD) 단위로 반환됨. | |
//심볼 상대통화의 USD 시세 변경에 따라 같이 변경되는 값. | |
double tickValue_1lot_usd = SymbolInfoDouble(m_ccydSymbolName.Meta, SYMBOL_TRADE_TICK_VALUE); | |
//종목의 1 Tick 의 크기 받기.(예 : 0.00002). 1 tick 이 1 point 아닌 5point 등도 가능. | |
//1 Tick 을 포인트 단위로 변경. | |
double ticksize_point = SymbolInfoDouble(m_ccydSymbolName.Meta, SYMBOL_TRADE_TICK_SIZE) //1 tick 의 크기 | |
/ SymbolInfoDouble(m_ccydSymbolName.Meta,SYMBOL_POINT); // 1 point의 크기 | |
// 가격 1포인트에 해당하는 금액. 종목수량 "1랏"기준 달러단위. | |
double pointValue_1lot_usd = tickValue_1lot_usd * ticksize_point; | |
loss_spread_usd = -1.0 * volume_lot * pointValue_1lot_usd * spread_point; | |
return loss_spread_usd; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://igotit.tistory.com/4334