트레일링, 손절 추가
This commit is contained in:
@@ -30,6 +30,9 @@ namespace upper_limit_crawler
|
||||
public long m_iUnitBEP;
|
||||
|
||||
public int m_iCurPrice;
|
||||
public int m_iMaxPrice;
|
||||
|
||||
public bool m_bCheck;
|
||||
};
|
||||
|
||||
|
||||
@@ -68,7 +71,9 @@ namespace upper_limit_crawler
|
||||
m_Td6033.BlockRequest2(1);
|
||||
|
||||
lvBalance.Items.Clear();
|
||||
m_OwnList.Clear();
|
||||
//m_OwnList.Clear();
|
||||
|
||||
m_OwnList.All(c => { c.m_bCheck = false; return true; });
|
||||
|
||||
int iCnt = m_Td6033.GetHeaderValue(7);
|
||||
for(int i = 0; i<iCnt; i++)
|
||||
@@ -87,7 +92,12 @@ namespace upper_limit_crawler
|
||||
|
||||
int iCurPrice = (int)(iEvaluationPrice/iConclusionBalanceCnt);
|
||||
|
||||
OWN_ITEM item = new OWN_ITEM();
|
||||
OWN_ITEM item = m_OwnList.Find(itemFind => itemFind.m_strCode == strCode);
|
||||
if (item == null)
|
||||
{
|
||||
item = new OWN_ITEM();
|
||||
m_OwnList.Add(item);
|
||||
}
|
||||
item.m_strCodeName = strCodeName;
|
||||
item.m_iPayBalance = iPayBalance;
|
||||
item.m_iPayUnitPrice = iPayUnitPrice;
|
||||
@@ -100,13 +110,20 @@ namespace upper_limit_crawler
|
||||
item.m_dConclusionUnitPrice = dConclusionUnitPrice;
|
||||
item.m_iUnitBEP = iUnitBEP;
|
||||
item.m_iCurPrice = iCurPrice;
|
||||
m_OwnList.Add(item);
|
||||
item.m_iMaxPrice = iCurPrice;
|
||||
item.m_bCheck = true;
|
||||
|
||||
|
||||
string[] row = { strCode, strCodeName, dConclusionUnitPrice.ToString("###,###,##0"),
|
||||
iUnitBEP.ToString("###,###,##0"), iCurPrice.ToString("###,###,##0"),
|
||||
iEvaluationProfit.ToString("###,###,##0"), iConclusionBalanceCnt.ToString("###,###,##0"),
|
||||
iEvaluationPrice.ToString("###,###,##0"), dReturn.ToString("#,##0.00")+"%" };
|
||||
var listViewItem = new ListViewItem(row);
|
||||
ListViewItem listViewItem = new ListViewItem(row);
|
||||
listViewItem.UseItemStyleForSubItems = false;
|
||||
if (dReturn > 0)
|
||||
listViewItem.SubItems[chProfitRate.Index].ForeColor = Color.Red;
|
||||
else if (dReturn < 0)
|
||||
listViewItem.SubItems[chProfitRate.Index].ForeColor = Color.Blue;
|
||||
lvBalance.Items.Add(listViewItem);
|
||||
|
||||
UlUtil.Trace(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10}",
|
||||
@@ -115,7 +132,9 @@ namespace upper_limit_crawler
|
||||
dReturn, strCode, iAskableCnt, dConclusionUnitPrice, iUnitBEP));
|
||||
}
|
||||
|
||||
foreach(ColumnHeader col in lvBalance.Columns)
|
||||
m_OwnList.RemoveAll(c => c.m_bCheck = false);
|
||||
|
||||
foreach (ColumnHeader col in lvBalance.Columns)
|
||||
col.Width=-2;
|
||||
}
|
||||
|
||||
@@ -132,6 +151,7 @@ namespace upper_limit_crawler
|
||||
strPriceList += item.m_strCode;
|
||||
}
|
||||
|
||||
|
||||
m_StockMst2.SetInputValue(0, strPriceList);
|
||||
m_StockMst2.BlockRequest2(1);
|
||||
|
||||
@@ -141,9 +161,13 @@ namespace upper_limit_crawler
|
||||
string strCode = m_StockMst2.GetDataValue(0, i);
|
||||
int iCurPrice = m_StockMst2.GetDataValue(3, i);
|
||||
|
||||
// data update
|
||||
OWN_ITEM listItem = m_OwnList.First(item => item.m_strCode == strCode);
|
||||
if (listItem != null)
|
||||
listItem.m_iCurPrice = iCurPrice;
|
||||
if (listItem == null)
|
||||
continue;
|
||||
|
||||
listItem.m_iCurPrice = iCurPrice;
|
||||
listItem.m_iMaxPrice = Math.Max(iCurPrice, listItem.m_iMaxPrice);
|
||||
|
||||
ListViewItem lvItem = lvBalance.FindItemWithText(strCode);
|
||||
if (lvItem != null)
|
||||
@@ -153,11 +177,22 @@ namespace upper_limit_crawler
|
||||
lvItem.SubItems[chEvaluationPrice.Index].Text = (iCurPrice*listItem.m_iConclusionBalanceCnt).ToString("###,###,##0");
|
||||
lvItem.SubItems[chProfitRate.Index].Text = (iCurPrice / (float)listItem.m_iUnitBEP - 1.0f).ToString("#,##0.00%");
|
||||
}
|
||||
|
||||
// cut loss and trailing
|
||||
if (iCurPrice <= listItem.m_iUnitBEP * (1.0f - m_DataMgr.m_Setting.m_fLossCut) ||
|
||||
iCurPrice <= listItem.m_iMaxPrice * (1.0f - m_DataMgr.m_Setting.m_fTrailing))
|
||||
{
|
||||
m_DataMgr.GetTrader().SellCurPrice(listItem.m_strCode, listItem.m_iPayBalance);
|
||||
|
||||
// 미체결 잔량 취소
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshData(object sender, EventArgs e)
|
||||
{
|
||||
m_MainTimer.Enabled = false;
|
||||
|
||||
int iCurTime = Environment.TickCount;
|
||||
if(m_iLastTime==0)
|
||||
{
|
||||
@@ -182,6 +217,8 @@ namespace upper_limit_crawler
|
||||
|
||||
|
||||
m_iLastTime=iCurTime;
|
||||
|
||||
m_MainTimer.Enabled = true;
|
||||
}
|
||||
|
||||
private void btRefresh_Click(object sender, EventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user