커뮤니티

수식 문의 드립니다

프로필 이미지
무명
2014-02-15 06:27:04
1523
글번호 222811
답변완료
1.아래 수식을 사용하여 예스트레이더 차트에서 매수신호 발생시 진입수량만큼 옵션등가 양매수 진입, 차트에서 매도 신호 발생시 진입수량만큼 옵션등가 양매도 진입... 청산 신호 발생시 진입한 수량만큼 옵션 청산되게 수정 부탁드립니다. 2. 아래 수식을 수정하여 선물매수신호발생시 선물진입수량만큼 콜등가매수 / +2단계콜외가매도 / +4단계콜외가매도 진입하고 선물매도신호발생시 선물진입수량만큼 풋등가매수 / -2단계풋외가매도 / -4단계풋외가매도 진입되도록 예스스팟식 부탁드립니다. 선물청산신호발생하면 진입된 옵션전부 청산되고, 반전신호가 발생하면 진입된 옵션청산하고 반전신호대로 옵션진입되도록 부탁드립니다. var Start = 0; var SelCallCode; var SelCallPrice; var SelCallVol; var SellPutCode; var SellPutPrice; var SellPutVol; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생하면 콜 매도 if (Signal.signalKind ==1) { Start = 1; SellCallCode = Option.GetATMCallRecent(0);//주문종목 : ATM콜 종목코드 SellCallPrice = Option.GetBidByCode(SellCallCode, 2);//주문가격 매수2호가 SelCallVol = Signal.count;//주문수량 : 차트신호의 수량 Account1.OrderSell(SellCallCode,SelCallVol, SellCallPrice, 0); Main.MessageList("등가콜매도 : "+SellCallCode); } //차트에서 매수청산신호 발생하면 콜매도 청산 if (Start == 1 && Signal.signalKind == 2) { //매도2호가로 청산 Account1.OrderBuy(SellCallCode, SelCallVol, Option.GetAskByCode(SellCallCode, 2), 0); Main.MessageList("콜청산 : ",SellCallCode); } //선물차트에서 매도신호 발생하면 풋 매도 if (Signal.signalKind ==3) { Start =1; SellPutCode = Option.GetATMPutRecent(0);//주문종목 : ATM풋 종목코드 SellPutPrice = Option.GetBidByCode(SellPutCode, 2);//주문가격 : 매수 2호가 SellPutVol = Signal.count; //수량 : 차트신호의 수량 Account1.OrderSell(SellPutCode, Signal.count, SellPutPrice, 0); Main.MessageList("등가풋매도 : "+SellPutCode); } //차트에서 매도청산신호 발생하면 풋매도 청산 if (Start == 1 && Signal.signalKind == 4) { Account1.OrderBuy(SellPutCode, SellPutVol, Option.GetAskByCode(SellPutCode, 2), 0); Main.MessageList("풋청산 : ",SellPutCode); } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-02-17 19:08:23

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 스크립트 객체화면에 설정할 내용은 아래와 같습니다. 차트객체 추가 --> 속성에서 객체명은 Chart1, 차트아이디 설정 후 연결 옵션객체 추가 계좌객체 추가 --> 속성에서 객체명은 Account1, 계좌번호 설정 1. var Start = 0; var BC; var BP; var Bcount; var SC; var SP; var Scount; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생 if (Signal.signalKind == 1) { Start = 1; BC = Option.GetATMCallRecent(0,0); BP = Option.GetATMPutRecent(0,0); Bcount = Signal.count; Account1.OrderBuy(BC,Bcount,Option.GetAskByCode(BC,3),0); Account1.OrderBuy(BP,Bcount,Option.GetAskByCode(BP,3),0); } //차트에서 매수청산신호 발생 if (Start == 1 && Signal.signalKind == 2) { Start = 0; Account1.OrderSell(BC,Bcount,Option.GetBidByCode(BC,3),0); Account1.OrderSell(BP,Bcount,Option.GetBidByCode(BP,3),0); } //차트에서 매도신호 발생 if (Signal.signalKind == 3) { Start = -1; SC = Option.GetATMCallRecent(0,0); SP = Option.GetATMPutRecent(0,0); Scount = Signal.count; Account1.OrderSell(SC,Scount,Option.GetBidByCode(SC,3),0); Account1.OrderSell(SP,Scount,Option.GetBidByCode(SP,3),0); } //차트에서 매도청산신호 발생 if (Start == -1 && Signal.signalKind == 4) { Start = 0; Account1.OrderBuy(SC,Scount,Option.GetAskByCode(SC,3),0); Account1.OrderBuy(SP,Scount,Option.GetAskByCode(SP,3),0); } } 2. var Start = 0; var B1,B2,B3; var Bcount; var S1,S2,S3; var Scount; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생 if (Signal.signalKind == 1) { Start = 1; B1 = Option.GetATMCallRecent(0,0); B2 = Option.GetATMCallRecent(2,0); B3 = Option.GetATMCallRecent(4,0); Bcount = Signal.count; Account1.OrderBuy(B1,Bcount,Option.GetAskByCode(B1,3),0); Account1.OrderSell(B2,Bcount,Option.GetBidByCode(B2,3),0); Account1.OrderSell(B3,Bcount,Option.GetBidByCode(B3,3),0); } //차트에서 매수청산신호 발생 if (Start == 1 && Signal.signalKind == 2) { Start = 0; Account1.OrderSell(B1,Bcount,Option.GetBidByCode(B1,3),0); Account1.OrderBuy(B2,Bcount,Option.GetAskByCode(B2,3),0); Account1.OrderBuy(B3,Bcount,Option.GetAskByCode(B3,3),0); } //차트에서 매도신호 발생 if (Signal.signalKind == 3) { Start = -1; S1 = Option.GetATMPutRecent(0,0); S2 = Option.GetATMPutRecent(-2,0); S3 = Option.GetATMPutRecent(-4,0); Scount = Signal.count; Account1.OrderBuy(S1,Scount,Option.GetAskByCode(S1,3),0); Account1.OrderSell(S2,Scount,Option.GetBidByCode(S2,3),0); Account1.OrderSell(S3,Scount,Option.GetBidByCode(S3,3),0); } //차트에서 매도청산신호 발생 if (Start == -1 && Signal.signalKind == 4) { Start = 0; Account1.OrderSell(S1,Scount,Option.GetBidByCode(S1,3),0); Account1.OrderBuy(S2,Scount,Option.GetAskByCode(S2,3),0); Account1.OrderBuy(S3,Scount,Option.GetAskByCode(S3,3),0); } } 즐거운 하루되세요 > 무명 님이 쓴 글입니다. > 제목 : 수식 문의 드립니다 > 1.아래 수식을 사용하여 예스트레이더 차트에서 매수신호 발생시 진입수량만큼 옵션등가 양매수 진입, 차트에서 매도 신호 발생시 진입수량만큼 옵션등가 양매도 진입... 청산 신호 발생시 진입한 수량만큼 옵션 청산되게 수정 부탁드립니다. 2. 아래 수식을 수정하여 선물매수신호발생시 선물진입수량만큼 콜등가매수 / +2단계콜외가매도 / +4단계콜외가매도 진입하고 선물매도신호발생시 선물진입수량만큼 풋등가매수 / -2단계풋외가매도 / -4단계풋외가매도 진입되도록 예스스팟식 부탁드립니다. 선물청산신호발생하면 진입된 옵션전부 청산되고, 반전신호가 발생하면 진입된 옵션청산하고 반전신호대로 옵션진입되도록 부탁드립니다. var Start = 0; var SelCallCode; var SelCallPrice; var SelCallVol; var SellPutCode; var SellPutPrice; var SellPutVol; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생하면 콜 매도 if (Signal.signalKind ==1) { Start = 1; SellCallCode = Option.GetATMCallRecent(0);//주문종목 : ATM콜 종목코드 SellCallPrice = Option.GetBidByCode(SellCallCode, 2);//주문가격 매수2호가 SelCallVol = Signal.count;//주문수량 : 차트신호의 수량 Account1.OrderSell(SellCallCode,SelCallVol, SellCallPrice, 0); Main.MessageList("등가콜매도 : "+SellCallCode); } //차트에서 매수청산신호 발생하면 콜매도 청산 if (Start == 1 && Signal.signalKind == 2) { //매도2호가로 청산 Account1.OrderBuy(SellCallCode, SelCallVol, Option.GetAskByCode(SellCallCode, 2), 0); Main.MessageList("콜청산 : ",SellCallCode); } //선물차트에서 매도신호 발생하면 풋 매도 if (Signal.signalKind ==3) { Start =1; SellPutCode = Option.GetATMPutRecent(0);//주문종목 : ATM풋 종목코드 SellPutPrice = Option.GetBidByCode(SellPutCode, 2);//주문가격 : 매수 2호가 SellPutVol = Signal.count; //수량 : 차트신호의 수량 Account1.OrderSell(SellPutCode, Signal.count, SellPutPrice, 0); Main.MessageList("등가풋매도 : "+SellPutCode); } //차트에서 매도청산신호 발생하면 풋매도 청산 if (Start == 1 && Signal.signalKind == 4) { Account1.OrderBuy(SellPutCode, SellPutVol, Option.GetAskByCode(SellPutCode, 2), 0); Main.MessageList("풋청산 : ",SellPutCode); } }