본문 바로가기
주식 자동매매 프로그램 제작/국내주식 자동매매

[C# 주식자동매매제작] 주식 실시간 수익률 계산 (수수료계산 반영)

by 타임박스 2022. 4. 22.
반응형


✔ 자동매매프로그램 만들기 - 실시간 수익률 계산하기

매매 수수료 계산 공식



안녕하세요. 

주식을 매수하고 매도하면 수수료가 발생됩니다.

수수료를 생각하지않고 매수, 매도를 프로그램이 진행하면 수익구간으로 판단되어 손해를 보게되죠.

 

주식을 사고나면 사자마자 -0.25%가 나타납니다.

이는 거래수수료 = 매수수수료 + 매도수수료 + 증권세액 반영되어서 그렇습니다.

매수수수료 : 매입금액 * 매매수수료(0.015%) => 모의투자는 매매수수료(0.35%)

매도수수료 : 매도금액 * 매매수수료(0.015%) => 모의투자는 매매수수료(0.35%)

증권세액 : 매도금액 * 증권거래세(0.23%)

위에서 보듯이 모의투자랑 실투자의 매매수수료차이는 엄청납니다... 이래서 모투로 성공하면 실투에서는 무조건 성공..

아래는 실시간 수수료를 계산하고 수익율을 반환하는 코드입니다.

다른 증권사를 사용하는 경우 증권사의 매매수수료율을 확인하고 코드에서 매매수수료율의 값만 변경하시면됩니다.

 

● 실시간 수익률 계산 코드

이 공식은 매수하고나서 실시간으로 변동되는 현재가에 수익인지를 판단하기 위해 사용됩니다.

계산공식을 사용하면 가끔 오차율이 -10 ~ +10원 정도가 발생됩니다.(자리수 반올림이나 버림에서 조금 차이나는듯함)

키움증권에서 테스트했으며 증권사마다 다를 수 있습니다.

//키움증권 기준
public static float 모의매매수수료율 = 0.0035f;
public static float 매매수수료율 = 0.00015f;

//모든 증권사 동일
public static float 증권거래세 = 0.0023f;

/// <summary>
/// 실시간 수수료 계산
/// </summary>
/// <param name="p_buyCost"> 매입가격</param>
/// <param name="buyCnt"> 매입수량 </param>
/// <param name="p_currentCost">종목 현재가격</param>
/// <returns></returns>
public static float GetRevenue(float p_buyCost,int buyCnt, float p_currentCost)
{
    float buyCost = p_buyCost * buyCnt;

    //매수 수수료 1단위 삭제
    int 매수수수료 = (int)(buyCost * 모의매매수수료율);
    매수수수료 = 매수수수료 - 매수수수료 % 10;

    //매도 수수료
    float 현재보유금 = p_currentCost * buyCnt;
    
    //실계좌로 할시 모의매매수수료율 -> 매매수수료율로 변경
    float 매도수수료 = (int)(현재보유금 * 모의매매수수료율);
    매도수수료 = 매도수수료 - 매도수수료 % 10;
    float 증권세액 = (int)(현재보유금 * 증권거래세);
    float 예상취득액 = 현재보유금 - 매도수수료 - 증권세액 - 매수수수료;

    //수익률 계산
    float 투자금대비 = 예상취득액 - buyCost;
    float revenue = (float)Math.Round(투자금대비 / buyCost * 100, 2);

    //수익률 반환
    return revenue;
}

 

 

감사합니다.

반응형

댓글