커뮤니티

부탁드립니다.

프로필 이미지
너무조아
2016-02-19 19:23:14
2173
글번호 223822
답변완료
차트 C1 에서 이동평균선 이 var1 = ema(c,P1) 이라면 아래의 조건에 맞도록 예스스팟 수식을 작성해 주시면 감사 하겠습니다. 1. 피라미딩 허용안함. 2. C 가 var1을 crossup 후 N 초를 초과하도록 C 가 var1을 crossdown 하지 아니하면 매수 3. C 가 var1을 crossdown 후 N 초를 초과하도록 C 가 var1을 crossup 하지 아니하면 매도
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-02-23 15:43:02

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 스팟식 자체에서는 지표를 계산하기 어렵습니다. 지표를 차트에 적용하고 해당 차트를 예스스팟 차트객체와 연결후 값을 가져와 사용해야 합니다. 차트에 적용할 지표식(지표식이름 지수이평) input : P1(20); var1 = ema(C,P1); plot1(var1); 스팟식 스크립트 객체화면 차트객체 추가 --> 속성에서 객체명은 Chart1, 지수이평 적용된 차트와 아이디 연결 종목객체 추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 객체로 지정 //차트봉완성 function Chart1_OnBarAppended(nData) { //차트 주종목(data1) 완성 if (nData == 1) { //최근 완성봉 종가는 지표값보다 크고 //직전 완성봉 종가는 지표값 이하이면 if Chart1.GetClose(1, 1) > Chart1.GetIndicatorData("지수이평",1,1) && Chart1.GetClose(1, 2) <= Chart1.GetIndicatorData("지수이평",1,2) { //5초 타이머 셋팅(타이머 아이디 1) Main.SetTimer(1, 5000) } //최근 완성봉 종가는 지표값보다 작고 //직전 완성봉 종가는 지표값 이상이면 if Chart1.GetClose(1, 1) < Chart1.GetIndicatorData("지수이평",1,1) && Chart1.GetClose(1, 2) >= Chart1.GetIndicatorData("지수이평",1,2) { //5초 타이머 셋팅(타이머 아이디 2) Main.SetTimer(2, 5000) } } } function Main_OnTimer(nEventID) { if (nEventID == 1) { //현재봉(미완성봉)의 현재가가 지표값보다 크면 매수주문 if (Chart1.GetClose(1, 0) > Chart1.GetIndicatorData("지수이평",1,0)) { Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(3), 0); } } if (nEventID == 1) { //현재봉(미완성봉)의 현재가가 지표값보다 작으면 매도주문 if (Chart1.GetClose(1, 0) < Chart1.GetIndicatorData("지수이평",1,0)) { Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(3), 0); } } } 즐거운 하루되세요 > 너무조아 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 차트 C1 에서 이동평균선 이 var1 = ema(c,P1) 이라면 아래의 조건에 맞도록 예스스팟 수식을 작성해 주시면 감사 하겠습니다. 1. 피라미딩 허용안함. 2. C 가 var1을 crossup 후 N 초를 초과하도록 C 가 var1을 crossdown 하지 아니하면 매수 3. C 가 var1을 crossdown 후 N 초를 초과하도록 C 가 var1을 crossup 하지 아니하면 매도