답변완료
당일 거래종료시 잔고기준 청산
안녕하세요
다음 내용 수식 부탁드립니다.
현재 YT신호 기준으로 연결선물 spot주문이 들어가고 있는데,
YT의 최종 진입기준은 14:50 이전, 마감청산을 제외한 최종 청산기준은 14:55 이전,
장마감시간은 15:00 입니다.
시스템이 여러개라서 14:55 이후 포지션이 시스템에 따라 매수,매도 가 혼재되어 있고,
15:00 에 불필요하게 매수청산,매도청산이 발생합니다. ---> 상쇄 필요
이 문제를 해결하기 위하여
1) 기존 spot 수식 청산수식 부분에 '마켓타임 14:56 이전'을 모두 추가하여,
YT의 마감청산 이전까지만 작동하게 하고
2) 새로운 spot을 추가하여, 14:59:30~15:00:30 에 각 계좌 잔고기준으로
포지션을 일괄청산 하려고 합니다 (매수잔고 or 매도잔고 5호가 청산)
---> 계좌별 선물잔고 마감청산용 수식만 작성
---> 마감시 계좌별 선물잔고 수량은 일정하지 않음
-----------------------------------
1) 위와같은 방식으로, 마감청산시 서로 상쇄될 수 있는 매수청산과 매도청산이
발생하지 않도록 하면 되겠는지요?
2) 위의 내용 2)번의 새로 추가할 spot 수식을 부탁드립니다.
---> 총 운영계좌가 3개인데 1개의 spot으로 가능하다면 더 좋겠습니다
(A계좌 14:59:30 잔고청산 / B계좌 15:00:00 잔고청산 / C계좌 15:00:30 잔고청산)
계좌간 매수,매도 수량은 상쇄하지 않습니다.
---> 계좌잔고 처리가 다소 늦는 경우도 있으므로, 중복주문 발생하지 않아야 합니다.
---> 만약 spot 3개가 필요하다면 예제수식 한개만 부탁드립니다
3) 스팟 설정시 연결선물 종목코드 00000000 으로 되어있는데,
계좌잔고에는 당월물 선물 종목코드가 표시됩니다.
장마감용 spot 적용시, 이로인하여 문제가 발생되지는 않는지도 궁금합니다.
---> 계좌에 다른 파생상품 종목들이 있을 경우를 대비하여
마감시간에 KP200 선물잔고만 마감청산하는 방법이 정확할 것 같기도 합니다.
감사합니다 !!
2018-05-25
2943
글번호 224417
답변완료
해가 바뀌어 다시 질문 드립니다.
안녕하세요~
작년 4월 1545번 글로 질문 드렸던 내용입니다.
당시 첨부화일이 없어 다시 올렸는데 끝내 답변 없이 역사의 한페이지로만 남았었더라구요.
제가 life expectancy가 그리 길지 않은 관계로 이번엔 좀 힘주어 빠른 답변을 부탁드립니다.
아래는 작년 올렸던 내용입니다.
- - - - - - - - - - -
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 파워검색(주식) 연동한 매매 시스템식을 좀 봐주시기 바랍니다.
> 안녕하세요
예스스탁입니다.
첨부하신 파일이 없습니다.
워드파일이 바로 첨부가 안되므로
ZIP으로 한번 압축하셔서 올려주시기 바랍니다.
즐거운 하루되세요
- - - - - - - - - - - - -
> 소운 님이 쓴 글입니다.
> 제목 : 파워검색(주식) 연동한 매매 시스템식을 좀 봐주시기 바랍니다.
> 안녕하세요~.
예스랭귀지와 스팟을 알게 된 지 아직 두달이 안 된 생초보입니다.
예스랭귀지로 쉬운 지표식이나 검색식은 만들 수 있게 되었습니다만, 스팟은 어렵군요.예제 몇 개 보거나 게시글 복기 정도로 학습하기에는 벅찬 듯 합니다. 마음 고쳐 먹고 이틀 전 서점 가서 두어 권 책도 사왔습니다.
첫 목표는, 차트연동이 아닌, 파워검색 종목을 매수하여 1, 2차 익절(손절 없는) 시스템식으로 간단하게 매매를 완결 짓자는 거였습니다. 그런런데 매도함수에서 지금 3주 째 막혔습니다. 그리고 여타 문제도 눈에 띕니다.
성공한 부분과 아직 구현 못 한 부분으로 나누어 설명합니다.
1. 성공 - 외부입력변수로 매수금액,익절률1차, 익절률2차, 매도비중1차, 매도비중2차 설정하고 종목당 매수금액 만큼 매수되는 걸 확인했습니다.
2. 실패
1) 장 시작 전, 어제 마감 장 기준으로 검색된 종목이 아침에 주문이 나갑니다(ㅠㅠ).
2) 실매수 후 1차익절가격 근처도 안 갔는데 1차익절 주문이,,, 매수가 이하로 발생하여 실제 매도되기도 하고, 또는 현재가가 1차 익절가격 도달도 안했는데 미리 1차 익절가격으로 예약 주문이 발생하기도 했습니다.
3) 당일 실제 매매한 종목이 파워검색에서 다시 검색되어 또 매매하면 안 되도록 스팟식이 짜여 있는데요, 시스템을 한 번 껐다 다시 가동시키면 실제 매매를 안 했는데도 이미 '재탕'종목이라고 거절합니다.
4) 한번은, 손가락 매도로 일부를 매도했더니 시스템 전체가 이상한 메시지가 뜨면서 먹통 비슷하게 되어 버렸습니다.
당일 매매완료되지 않은 종목에 대해서, 다음날 새로 편입해서 자동매매를 새로 걸어주는 방식에 대해 문의 글 중 하나 참조해서 해 봤는데 종목방만 세팅되고 이후 계속 잠을 잡니다. 이거는 다음에 문의 드리겠고요. 일단 위에 파워검색연동 시스템 1,2차 익절완료까지만 도움을 주시길 바랍니다.
웬만하면 첫경험의 수위(=첫 질문)를 높이려고 안간 힘을 썼으나 끝내 이렇게 도움글을 부탁드립니다. 게시글 보니까 정말 정성스럽게 답해 주시던데요, 감명 받고 미리 큰 꾸벅^^ 감사드립니다. 건승하십시오.
-----------------
시스템식을 붙여 넣으니까 금칙어가 있다고 해서 안되고, 스팟식도 첨부도 안되고 해서 워드파일에 붙여서 첨부했습니다. 감사합니다.
- - - - - - - - - -
2018-05-08
2950
글번호 224402
답변완료
종목검색 후 자동매매 에러
안녕하세요.
많은 도움을 받고 있습니다.
예스스팟Q&A에서 종목검색 후 자동매매 게시글을 보고 따라하던 중에 에러가 발생하여 문의드립니다.
하기의 수식으로 종목검색 및 확장차트생성은 정상적으로 수행됩니다만,
그 후에 매매신호가 나와도 실제 거래가 발생하지 않고 있습니다.
function Main_OnRiseSignal(ChartEx, Signal) 이후부터의 수식이 문제인거 같은데요.
혹시 각 종목당 10만원씩 또는 계좌의 10분의 1씩 매수할 수 있도록 수식을 가다듬어 주실 수 있는지요?
=================================================
var ItemList;
var Count;
var ReqCount;
function Main_OnStart()
{
Main.MessageLog("스팟시작");
Main.MessageLog("종목검색시작");
Main.ReqPowerSearch("1_종목검색_테스트");
}
function Main_OnRcvItemList(aItemList, nCount)
{
ItemList = aItemList;
Count = nCount;
Main.SetTimer(1, 10000);
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var StopSet = new SystemStopInfo(new StopLoss(4, CALCMETHOD_PERCENT, 0xFFDA93),
new StopTrailing(2, 5, CALCMETHOD_PERCENT, 0),
//new StopProfitTarget(10, CALCMETHOD_PERCENT, 0xFFDA93),
//new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93),
new StopEndOfDay(151500));
var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet);
var SystemSet = new SystemInfo("1_시스템_이동평균골든크로스", YL_TYPE_NORMAL, null, null, null);
Main.ReqChartEx(ChartSet,SystemSet);
Main.MessageLog("확장차트생성_"+ItemList[ReqCount]);
ReqCount = ReqCount+1;
if (ReqCount == Count)
{
Main.KillTimer(1);
Main.MessageLog("종목검색완료");
}
}
}
function Main_OnRiseSignal(ChartEx, Signal)
{
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매수주문");
}
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매도주문");
}
}
================================================
2018-05-07
3027
글번호 224400