커뮤니티

수식 부탁드립니다.

프로필 이미지
지나리
2015-04-09 14:30:50
1941
글번호 223407
답변완료
안녕하세요. 선물 일봉챠트상 신호를 기준으로 선물을 매매하는데요. 아래와 같은 명령을 수식으로 부탁드립니다. 감사드립니다. 1. 1번 차트에서 미완성 매수신호(미완성 신호가 1시간 이상 지속될 경우)가 발생하는 경우 =>잔고를 확인하여 매도한 물량이 있다면 전부 청산한다. =>매도물량 청산 후 선물 3개를 시장가로 신규매수한다 (*)미완성신호라함은 미완성 신호가 발생후 1시간 이상 지속되는 경우를 말함 2. (1번차트상 미완성 매수신호 발생 or 1번챠트상 매수상태) & 2번차트상 매도상태인 경우 =>선물 1개를 시장가로 매수하되, 최대 3개까지만 매수한다. (**)매도상태라 함은 일봉차트상 몇일 전에 이미 매도신호가 발생한 후 계속 매도진행 중인 상태를 말함 3. (개인 콜옵션 순매수금액 - 개인 풋옵션 순매수금액) > 5억원인 경우 =>1억원씩 더 차이날 때만다 선물 1개씩 시장가로 매도한다. 매번 감사드립니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-04-10 11:19:05

안녕하세요 예스스탁입니다. 예스스팟의 수식답변은 식작성의 가이드입니다. 아래내용 참고하셔서 수정보완해 사용하시기 바랍니다. 1. 현재미완성신호가 1시간이상 유지&#46124;는지 판단하기 위해서는 미완성신호가 발생할때마다 시간을 저장해야 합니다. 역추적해야 하는데 해당 부분은 작성이 어렵습니다. 아래식은 봉완성(일봉에서 시초가 수신)시부터 1시간단위로 미완성신호상탤를 체크하여 현재와 직전 체크시점에 매도 매수미완성신호였으면 주문을 시작합니다. 이용에 참고하시기 바랍니다. 스크립트 객체설정 계좌객체 추가 --> 객체명 Account1 차트객체 추가 --> 객체명 Chart1 종목객체 추가 --> 객체명 MarketData1, 연결선물로 지정 var Icnt = 0; var Incom = []; var Incom0 = -1; var Incom1 = -1; var ID, Num; function Chart1_OnBarAppended(nData) { if (nData == 1) { Main.SetTimer(1, 3600000);//3600초(1시간) } } //1시간단위로 차트 미완성신호상태 체크 function Main_OnTimer(nEventID) { if (nEventID == 1) { //미완성정보를 배열객체에 저장 Incom = Chart1.GetIncompleteSignal(); //직전 신호종류 Incom1 = Incom0; //현재 신호종류 저장 Incom0 = Incom[0].signalKind; Main.MessageList(Incom0,Incom1); //현재도 매수 미완성이고 직전도 매수 미완성 신호라면 if (Incom0 == 1 && Incom1 == 1) { //타이머 종류 Main.KillTimer(); //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //매도포지션이면 if (Account1.Balance.position == 1) { //잔량 청산위해 매수주문 ID = Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Bid(5), 0); } } } } //주문 접수되면 주문번호 저장 function Main_OnOrderResponse(OrderResponse) { if (ID == OrderResponse.orderID) { Num = OrderResponse.orderNum; } } //저장된 주문번호에 체결정보가 수신되면 function Main_OnNotifyFill(NotifyFill) { if (Num == NotifyFill.orderNum) { //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //잔고가 없으면 시장가로 3계약 매수주문 if (Account1.Balance.count == 0) { Main.KillTimer(2); Account1.OrderBuy(Account1.Balance.code, 3, 0, 1) } } } 2. 아래는 일봉기준으로 하루에 한번만 동작해서 최대 매수가 3계약 될때까지만 주문하게 됩니다. 스크립트 객체설정 계좌객체 추가 --> 객체명 Account1 차트객체 추가 --> 객체명 Chart1 차트객체 추가 --> 객체명 Chart2 종목객체 추가 --> 객체명 MarketData1, 연결선물로 지정 var Icnt = 0; var Chart1In = []; var Chart2In = []; var cnt; function Chart1_OnBarAppended(nData) { if (nData == 1) { Main.SetTimer(1, 5000);//5초 } } //5초단위로 차트 미완성신호상태 체크 function Main_OnTimer(nEventID) { if (nEventID == 1) { //각 차트의 미완성정보를 배열객체에 저장 Chart1In = Chart1.GetIncompleteSignal(); Chart2In = Chart1.GetIncompleteSignal(); Main.MessageList(Incom0,Incom1); //현재도 매수 미완성이고 직전도 매수 미완성 신호라면 if (Chart1In[0].signalKind == 1 && Chart2In[0].signalKind == 3) { //타이머종료 Main.KillTimer(1); Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //잔고가 무포지션 혹은 매도포지션이거나 매수이면 수량이 3개 미만일때만 1계약 시장가 매수 if (Account1.Balance.position <= 1 || (Account1.Balance.position == 2 && ccount1.Balance.count < 3 )) { Account1.OrderBuy(Account1.Balance.code, 1, 0,1); } } } } 3. 문의하신 내용은 예스랭귀지로 작성해서 차트에 적용하셔야 합니다. 스팟에 콜옵션과 풋옵션으로 나누어 수급데이터가 제공되고 있지 않습니다. 차트를 1분봉주기로 아래와 같이 데이터를 구성하신 후에 아래식 시스템식으로 작성하셔서 적용하시면 됩니다. 시스템 적용시에 피라미딩을 모든진이신호 허용으로 설정하시면 됩니다. 아래식은 당일에만 신호가 발생합니다. 주종목 선물, 참조데이터 data2로 개인콜옵션순매수금액 참조데이터 data3으로 개인풋옵션순매수금액 if date != date[1] Then Condition1 = false; if MarketPosition == 0 and Condition1 == false and data2(c)-data3(c) >= 5 and CurrentDate == sdate Then{ buy("b",OnClose,def,1); Condition1 = true; } if MarketPosition == 1 and data2(c)-data3(c) >= 5+MaxEntries Then{ buy("bb",OnClose,def,1); } 즐거운 하루되세요 > 지나리 님이 쓴 글입니다. > 제목 : 수식 부탁드립니다. > 안녕하세요. 선물 일봉챠트상 신호를 기준으로 선물을 매매하는데요. 아래와 같은 명령을 수식으로 부탁드립니다. 감사드립니다. 1. 1번 차트에서 미완성 매수신호(미완성 신호가 1시간 이상 지속될 경우)가 발생하는 경우 =>잔고를 확인하여 매도한 물량이 있다면 전부 청산한다. =>매도물량 청산 후 선물 3개를 시장가로 신규매수한다 (*)미완성신호라함은 미완성 신호가 발생후 1시간 이상 지속되는 경우를 말함 2. (1번차트상 미완성 매수신호 발생 or 1번챠트상 매수상태) & 2번차트상 매도상태인 경우 =>선물 1개를 시장가로 매수하되, 최대 3개까지만 매수한다. (**)매도상태라 함은 일봉차트상 몇일 전에 이미 매도신호가 발생한 후 계속 매도진행 중인 상태를 말함 3. (개인 콜옵션 순매수금액 - 개인 풋옵션 순매수금액) > 5억원인 경우 =>1억원씩 더 차이날 때만다 선물 1개씩 시장가로 매도한다. 매번 감사드립니다.