커뮤니티

부탁드립니다

프로필 이미지
먼지의추억
2013-08-12 17:17:50
969
글번호 222500
답변완료
수고 많습니다. 1.시초가 돌파하면 옵션2.0의 양매도가 될 수있게 해 주세요. 2.시초가 도라하면 옵션 2.0의 양매수가 될 수잇게 해주세요. 감사합니다
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-08-13 15:16:03

안녕하세요 예스스탁입니다. 문의하신 내용이 정확치 않습니다. 스팟적용 후 처음으로 선물에서 시가보다 현재가가 크거나 작을때만 옵션 양매도나 앵매수가 발생하게 했습니다. 각 수식에 옵션객체, 계좌객체, 종목객체가 필요합니다. 스크립트 객체화면에서 옵션객체 추가 계좌객체 추가 --> 속성에서 객체명을 Account1로 지정하시고 계좌선택 종목객체추가 --> 속성에서 객체명을 MarketData1로 지정하시고 선물로 종목선택 스크립트 객체화면에서 옵션객체를 추가하셔도 예스트레이더 환경설정에서 옵션데이터 미사용으로 되어 있으면 데이터가 수신되지 않습니다. 예스트레이더 상단의 관리메뉴에서 --> 종합환경설정 --> 예스스팟에서 예스스팟 옵션데이터 사용여부를 사용(거래소), 사용(로컬)중 하나로 선택하셔야 합니다. 식상 게시판 금칙어가 있습니다. 영문 업데이트가 Up*date로 *가 중간에 추가되어 있습니다. 제거하시고 적용하시기 바랍니다. 스팟은 시뮬레이션이 되지 않습니다. 시험적용 등으로 충분히 확인과정을 거치신후에 사용하시기 바랍니다. 1. 양매도 function Main_OnStart() { Start = 0; } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거 { //선물 현재가가 시초가보다 큼 if (Start == 0 && MarketData1.open > 0 && MarketData1.current > MarketData1.open) { Start = 1; UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 ) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum]; } } PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 ) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = -1; } } PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (CC > 0 && PP > 0) { // 콜-풋 양매도 매수5호가로 1계약 씩 매도주문 Account1.OrderSell(CallOrderCode, 1, Option.GetBidByCode(CallOrderCode, 5), 0); Account1.OrderSell(PutOrderCode, 1, Option.GetBidByCode(PutOrderCode, 5), 0); } } } 2, 양매수 function Main_OnStart() { Start = 0; } function Main_OnUp*dateMarket(sItemCode, lUp*dateID) // *제거 { if (Start == 0 && MarketData1.open > 0 && MarketData1.current > MarketData1.open) { Start = 1; UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 ) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum]; } } PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 ) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = -1; } } PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (CC > 0 && PP > 0) { // 콜-풋 양매수 매e도5호가로 1계약 씩 매수주문 Account1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode, 5), 0); Account1.OrderBuy(PutOrderCode, 1, Option.GetAskByCode(PutOrderCode, 5), 0); } } } 즐거운 하루되세요 > 먼지의추억 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 수고 많습니다. 1.시초가 돌파하면 옵션2.0의 양매도가 될 수있게 해 주세요. 2.시초가 도라하면 옵션 2.0의 양매수가 될 수잇게 해주세요. 감사합니다