답변완료
수식 검토
안녕하세요
아래는 현물 관심종목그룹을 불러내서 종목과 차트를 생성하는 내용입니다.
그런데
1. 관심종목중에서 1번째 종목의 차트생성이 안되네요
아무리 봐도 알 수가 없네요 ㅜ
2. 생성된 관심종목의 차트에서
시스템 신호에 따른 매수와 청산식까지 마저 완성해주시면 고맙겠습니다.
var List = new Array(100);
var ListCnt; //관심종목의 수
var RcvCount; //종목객체 생성종목의 수
//종목객체를 저장할 배열변수
var SymBol = new Array(100);
//주문여부를 저장할 배열변수
var Buy = new Array(100);
//매수주문금액
var BuyMoney = 1000000;
function Main_OnStart()
{
//스팟실행시 지정한 이름의 관심종목을 호출
//관심종목의 종목수
ListCnt = Main.GetItemCountOfInterest("거래_단봉")
Main.MessageList("전체종목수",ListCnt);
//차례대로 배열변수 List에 저장( 최대 100종목)
for(var i = 0; i < ListCnt; i++)
{
List[i] = Main.GetItemCodeInInterest("거래_단봉", i);
Main.MessageList("거래_단봉",List[i]);
}
Main.ReqMarketData(List[0],50,0);
Start = false
RcvCount = 0;
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
//생성 종목수 카운트
RcvCount = RcvCount+1;
//배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장
SymBol[RcvCount] = MarketData;
Main.MessageList(RcvCount,"번째 종목생성",MarketData.name);
//다음 순번 종목객체 요청
if (RcvCount < ListCnt)
{
Main.SetTimer(1, 1000);
}
//종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때)
if (RcvCount == ListCnt)
{
Main.KillTimer(1);
Start = true;
Main.MessageList("종목생성완료",Start);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.ReqMarketData(List[RcvCount],50,0);
for (var i = 1; i <= RcvCount; i++)
{
//차트설정 4분봉 500바
var ChartSet = new ReqChartItem(List[i],4,CHART_PERIOD_MINUTE,
500,CHART_REQCOUNT_BAR, false, false);
}
//시스템 설정
var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar
("p2", "160"));
var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet);
Main.ReqChartEx(ChartSet,SystemSet);
}
}
2014-06-29
1226
글번호 223052
답변완료
스팟 문의
엑셀시트에 매매결과를 저장하고자 합니다.
엑셀객체: 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);
}
}
2014-06-23
1294
글번호 223044