- 시뮬레이션의 파라미터를 실제에서 조정할 수 있도록
- 얼마 이하의 매수, 매도 체결은 무시하도록
This commit is contained in:
@@ -31,21 +31,14 @@ namespace AutoSellerNS
|
||||
public List<int> m_PriceList = new List<int>();
|
||||
public double m_dCheckCountLimit = 5;
|
||||
|
||||
double m_dFastSD = 0.75;
|
||||
double m_dFastUpCnt = 0.05;
|
||||
double m_dFastDownCnt = 0.05;
|
||||
double m_dSlowSD = 0.2;
|
||||
double m_dSlowUpCnt = 0.4;
|
||||
double m_dSlowDownCnt = 0.4;
|
||||
int m_iTimeLimit = 5;
|
||||
int m_iPrevTime = 0;
|
||||
double m_dTimeSub = 0.02;
|
||||
|
||||
public void OnRecievedPrice()
|
||||
{
|
||||
bool bReal = (m_StockCur.GetHeaderValue(19) == '2');
|
||||
m_iCurPrice = m_StockCur.GetHeaderValue(13);
|
||||
int iTime = m_StockCur.GetHeaderValue(18); // *** 초단위 시간 확인
|
||||
int iTime = m_StockCur.GetHeaderValue(18);
|
||||
int iConclusionCnt = m_StockCur.GetHeaderValue(17);
|
||||
|
||||
int iTimeDiff = 0;
|
||||
if(m_iPrevTime > 0)
|
||||
@@ -57,22 +50,22 @@ namespace AutoSellerNS
|
||||
double dAverage = (float)m_PriceList.Average();
|
||||
double sumOfSquaresOfDifferences = m_PriceList.Select(val => Math.Pow((val-dAverage)/m_CybosHelper.GetUnitValue(val), 2)).Sum();
|
||||
double dStdDev = Math.Sqrt(sumOfSquaresOfDifferences / m_PriceList.Count);
|
||||
if(dStdDev >= m_dFastSD)
|
||||
if(dStdDev >= Config.GetFastSD())
|
||||
{
|
||||
if(m_iCurPrice >= dAverage)
|
||||
m_dCheckCountLimit += m_dFastUpCnt;
|
||||
m_dCheckCountLimit += Config.GetFastUp();
|
||||
else
|
||||
m_dCheckCountLimit -= m_dFastDownCnt;
|
||||
m_dCheckCountLimit -= Config.GetFastDown();
|
||||
}
|
||||
else if(dStdDev <= m_dSlowSD)
|
||||
else if(dStdDev <= Config.GetSlowSD())
|
||||
{
|
||||
if(m_iCurPrice >= dAverage)
|
||||
m_dCheckCountLimit += m_dSlowUpCnt;
|
||||
m_dCheckCountLimit += Config.GetSlowUp();
|
||||
else
|
||||
m_dCheckCountLimit -= m_dSlowDownCnt;
|
||||
m_dCheckCountLimit -= Config.GetSlowDown();
|
||||
}
|
||||
|
||||
m_dCheckCountLimit -= iTimeDiff*m_dTimeSub;
|
||||
m_dCheckCountLimit -= iTimeDiff*Config.GetTimeDown();
|
||||
|
||||
|
||||
if(m_iCurPrice > m_iMaxPrice)
|
||||
@@ -83,10 +76,13 @@ namespace AutoSellerNS
|
||||
int iAskPrice = m_StockCur.GetHeaderValue(7);
|
||||
int iBidPrice = m_StockCur.GetHeaderValue(8);
|
||||
|
||||
if(m_iCurPrice <= iBidPrice)
|
||||
m_iCheckCount++;
|
||||
else
|
||||
m_iCheckCount = 0;
|
||||
if(m_iCurPrice*iConclusionCnt > Config.GetIgnorePrice())
|
||||
{
|
||||
if(m_iCurPrice <= iBidPrice)
|
||||
m_iCheckCount++;
|
||||
else
|
||||
m_iCheckCount = 0;
|
||||
}
|
||||
|
||||
if(m_iCheckCount >= m_dCheckCountLimit && m_Listener.IsSelling() == true)
|
||||
{
|
||||
@@ -111,7 +107,7 @@ namespace AutoSellerNS
|
||||
m_iMaxPrice));
|
||||
}
|
||||
|
||||
if(iTimeDiff >= m_iTimeLimit)
|
||||
if(iTimeDiff >= Config.GetTimeLimit())
|
||||
{
|
||||
m_CybosHelper.SellItem(m_strCode, m_Listener.GetSellableCount(m_strCode), m_aiAskPrice[0]);
|
||||
Util.Log(Util.LOG_TYPE.SELL, string.Format("[시간제한 매도] {0} ({1}초) (현재가 {2:n0}원, 최고가 {3:n0}원)",
|
||||
|
||||
Reference in New Issue
Block a user