커뮤니티

질문드립니다.

프로필 이미지
착한이
2014-01-23 14:00:59
1221
글번호 222791
답변완료
도와주신 덕분에 실전에 사용할 수 있게 되었습니다. 간단한 질문 2가지만 더 드립니다. 1. 최대수익대비 20%하락시 Trailing Stop(매수매도경우 2가지) 2. 9시 30분까지 차트에서 신호 없을 경우 1외가 옵션 양매도 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-02-12 18:07:43

안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 1. 매수/매도 진입주문 발생하면 그 이후 해당 종목의 최고가/최저가를 계산하고 최고가/최저가 대비 20% 반대로 움직이면 청산주문 발생합니다 영문 업데이트가 Up*date로 작성이 되어 있으므로 *제거 하셔야 합니다. 스크립트 객체 차트객체 --> 속성에서 객체명 Chart1, 차트아이디 지정 계좌객체 --> 속성에서 객체명 Account1, 계좌번호 지정 종목객체 --> 속성에서 객체명 MarketData1, 차트와 동일종목지정 var pst; var hh; var ll; function Main_OnStart() { pst = 0; } function Chart1_OnRiseSignal(Signal) { if ( pst == 0 && Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); pst = 1; hh = MarketData1.current; } if (pst == 1 && Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); pst = 0; } if ( pst == 0 && Signal.signalKind == 3) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); pst = -1; ll = MarketData1.current; } if (pst == -1 && Signal.signalKind == 4) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); pst = 0; } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*제거 { if (sItemCode == MarketData1.code && lUp*dateID == 20001)//*제거 { if (pst == 1) { if (MarketData1.current > hh) { hh = MarketData1.current; } if (MarketData1.current <= hh*0.80) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); pst = 0; } } if (pst == -1) { if (MarketData1.current < ll) { ll = MarketData1.current; } if (MarketData1.current >= ll*0.80) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); pst = 0; } } } } 2. 스크립트 객체 차트객체 --> 속성에서 객체명 Chart1, 차트아이디 지정 계좌객체 --> 속성에서 객체명 Account1, 계좌번호 지정 옵션객체 var pst; var sigtime; function Main_OnStart() { pst = 0; Main.SetTimer(1, 1000); sigtime = 0; } function Chart1_OnRiseSignal(Signal) { if ( pst == 0 && Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); pst = 1; sigtime = signal.time; } if (pst == 1 && Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); pst = 0; } if ( pst == 0 && Signal.signalKind == 3) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); pst = -1; sigtime = signal.time; } if (pst == -1 && Signal.signalKind == 4) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); pst = 0; } } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 93000) { Main.KillTimer(1); if (sigtime == 0) { Account1.OrderSell(Option.GetATMCallRecent(1,0),1,0,1); Account1.OrderSell(Option.GetATMPutRecent(1, 0),1,0,1); } } } 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 질문드립니다. > 도와주신 덕분에 실전에 사용할 수 있게 되었습니다. 간단한 질문 2가지만 더 드립니다. 1. 최대수익대비 20%하락시 Trailing Stop(매수매도경우 2가지) 2. 9시 30분까지 차트에서 신호 없을 경우 1외가 옵션 양매도 감사합니다.