예스스탁
예스스탁 답변
2014-07-04 17:21:32
안녕하세요
예스스탁입니다.
내용은 조금 간단히 해서 작성해 보았습니다.
기본개념은 진입신호가 발생하면 라인수를 카운트하고
어떤 진입명인지 보고 각각 다른 변수에 라인수를 저장해서
청산시에 진입때 출력한 라인수를 가져와 사용하는 내용입니다.
var Line,ALine,BLine,CLine;
var ABuyID, BBuyID, CBuyID,Anum,Bnum,Cnum;
var AxID, BxID, CxID,Axnum,Bxnum,Cxnum;
function Main_OnStart()
{
//초기값은 1
Line = 1;
//A1,B1,C1
Excel1.SetRowData(1,"A"+Line, "진입신호시간","진입신호명","신호가격");
//D1,E1,F1
Excel1.SetRowData(1,"D"+Line, "청산신호시간","청산신호명","신호가격");
}
function Chart1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
//매수신호 발생시 Line은 1씩 증가
Line = Line+1;
if (Signal.name == "A진입")
{
//"A진입"일떼 적혀질 라인수 저장
ALine = Line;
Excel1.SetRowData(1,"A"+Line,Signal.time,Signal.name,Signal.price);
ABuyID = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
if (Signal.name == "B진입")
{
//"B진입"일떼 적혀질 라인수 저장
BLine = Line;
Excel1.SetRowData(1,"A"+Line,Signal.time,Signal.name,Signal.price);
Bid = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
if (Signal.name == "C진입")
{
//"C진입"일떼 적혀질 라인수 저장
CLine = Line;
Excel1.SetRowData(1,"A"+Line,Signal.time,Signal.name,Signal.price);
CBuyID = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
}
if (Signal.signalKind == 2)
{
if (Signal.name == "A매수청산")
{
//"D"에 ALine으로 저장한 행번호 조합
Excel1.SetRowData(1,"D"+ALine,Signal.time,Signal.name,Signal.price);
AxID = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
if (Signal.name == "B매수청산")
{
//"D"에 BLine으로 저장한 행번호 조합
Excel1.SetRowData(1,"D"+BLine,Signal.time,Signal.name,Signal.price);
BxID = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
if (Signal.name == "C매수청산")
{
//"D"에 Cline으로 저장한 행번호 조합
Excel1.SetRowData(1,"D"+CLine,Signal.time,Signal.name,Signal.price);
CxID = Account1.OrderBuy(Main.GetOrderCode(Signal), Signal.count,0,1);
}
}
}
즐거운 하루되세요
> gt 님이 쓴 글입니다.
> 제목 : 스팟 문의
> 엑셀시트에 매매결과를 저장하고자 합니다.
엑셀객체: CXLRPT
(변수는 위에서 선언됨)
아래코드는 시그널이 발생하면 엑셀시트에 내용을 기록하는 일부코드입니다.
차트에서 기본적으로 피라미딩으로 진입합니다. A,B,C,D,E 신호가 발생한다고 가정(순서 랜덤)
A 매수진입신호가 발생하면
행 N에는 A신호에 대한 진입내역(진입시간, 시그널종류, 주문가격, 체결가격 등등)을 기록함
C 매수진입신호가 발생하면 N+1행에 C신호에 대한 진입내역 기록
B 매수신호가 발생하면 N+2행에 B신호에 대한 진입내역 기록
여기서 EXITLONG("A매수청산", ONCLOSE, DEF, "A", DEF); 신호가 발생하면 A진입에 대해 기록된 행(N)을 찾아서 바로 옆에 청산내역을 기록하고자 합니다. 핵심은 해당진입에 대해 해당 행에 기록하는 것인데 이부분이 좀 막힙니다. 코드 검증도 부탁드리겠습니다.
도움주시면 감사하겠습니다...
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// INIT
//
function CXLRPTInit()
{
var strData = CXLRPT.GetData(gCXLRPTxSheetIndex, "A1");
if (strData != "NO")
{
CXLRPT.SetRowData(gCXLRPTxSheetIndex,
"A1", "ITEM",
"OPEN TIME", "TYPE", "ORDER PRICE", "CONTRACT PRICE", "CONTRACTS",
"CLOSE TIME", "TYPE", "ORDER PRICE", "CONTRACT PRICE", "CONTRACTS",
"COMMISSION", "PROFITS");
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// XLS TRADING RESULT
//
function XLSTradingResult(TicketTime)
{
// BUY SIGNAL
if (gPosition == 1)
{
gCXLRPTxRowEB = CXLRPT.GetRowCount(gCXLRPTxSheetIndex) + 1;
CXLRPT.SetFont(gCXLRPTxSheetIndex, "A" + gCXLRPTxRowEB, "10", "Tahoma", "RED", false, true, 0);
CXLRPT.SetRowData(gCXLRPTxSheetIndex, "A" + gCXLRPTxRowEB, gOrderCode, TicketTime, "BUY", CMD.Ask(3), "-", gDefOrderContracts);
}
// EXITLONG SIGNAL
else if (gPosition == 2)
{
gCXLRPTxRowEXL = CXLRPT.GetRowCount(gCXLRPTxSheetIndex) + 1;
CXLRPT.SetRowData(gCXLRPTxSheetIndex, "G" + gCXLRPTxRowEXL, TicketTime, "EL", CMD.Bid(3), "-", gDefOrderContracts, gDefCommission * 2, gEBxContractPrice - gEXLxContractPrice);
}
// SELL SIGNAL
else if (gPosition == -1)
{
gCXLRPTxRowES = CXLRPT.GetRowCount(gCXLRPTxSheetIndex) + 1;
CXLRPT.SetRowData(gCXLRPTxSheetIndex, "A" + gCXLRPTxRowES, gOrderCode, TicketTime, "SELL", CMD.Bid(3), "-", gDefOrderContracts);
}
// EXISHORT SIGNAL
else if (gPosition == -2)
{
gCXLRPTxRowEXS = CXLRPT.GetRowCount(gCXLRPTxSheetIndex) + 1;
CXLRPT.SetRowData(gCXLRPTxSheetIndex, "G" + gCXLRPTxRowEXS, TicketTime, "ES", CMD.Ask(3), "-", gDefOrderContracts, gDefCommission * 2, gESxContractPrice - gEXSxContractPrice);
}
}