커뮤니티

질문드립니다.

프로필 이미지
지나리
2023-09-22 09:42:55.0
903
글번호 225842
답변완료
다음 수식 문의드립니다. 항상 좋은 답변 감사드립니다. 1. 1분봉 차트(차트1)에서 봉이 완성될때마다 차트2(60분봉)에서의 X지표값을 기억한다. GetIndicatorData함수 활용 (ex: X1, X2, X3...., 메세지 함수로 X지표값 표시) 2. 차트1에서 봉이 완성되는 시점마다 직전봉(-1봉)과 직전전봉(-2봉)의 X지표값이 직전봉이 크다면 -> con=1 직전전봉(-2봉)과 직전전전봉(-3봉)의 X지표값이 직전전봉이 크다면 -> con=2 3. 차트2(60봉)에서 가격이 변동(1틱 상승 또는 하락)될때마다(만약 1틱이 너무 짧다면 5틱의 가격변동) 차트2의 Y지표값을 기억한다. (시계열순서대로 Y1, Y2,, 메시지 함수로 현재 최종 Y지표값 표시) 4. 차트2(60봉)에서 당일 고가인 경우 차트2의 Z지표값을 기억한다.(Z high 1) 또한 당일 저가인 경우 차트2의 Z지표값을 기억한다. (Z Low 1, 메시지 함수 표시) 당일 고가나 저가가 갱신되는 경우 기존의 지표값을 삭제하지 않고 Z지표값을 새롭게 기억한다.(Z high 2 표시) 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-10-17 09:18:23.0

안녕하세요 예스스탁입니다. 1,2 var X1,X2,X3; function Chart1_OnBarAppended(nData) { if (nData == 1) { X3 = X2; X2 = X1; X1 = Chart2.GetIndicatorData("X",1,0); Main.MessageList("X1",X1); var con = 0; if (V1 > V2) con = 1; if (V2 > V3) con = 2; } } 3 자바스크립트는 이벤트 중심입니다. 차트 객체에는 신호발생이나 봉완성이 되면 알려주는 이벤트는 있지만 시세변경에 대한 이벤트는 존재하지 않습니다. 시세변동은 종목객체에서 확인하셔야 합니다. 차트의 봉도 시세를 받아 만들어 지므로 아래와 같이 작성하시면 스팟시작후 체결시세가 수신되면 일정틱수 가격변동시 차트2의 지표를 저장하게 됩니다. 스크립트 객체설정 --> 종목객체 추가 --> 객체명 MarketData1, 차트2와 동일종목으로 지정 영문 업데이트가 게시판 보안상 금칙어라 중간에 *이 들어가 있습니다. Up*date *은 삭제하시기 바랍니다. var Price; var Y1,Y2,Y3; function Main_OnStart() { Price = 0; } function Main_OnUp*dateMarket(sItemCode, lUp*dateID)//*삭제 { //시세변동 if (lUp*dateID == 20001)//*삭제 { if (Price == 0) { Price = MarketData1.current; } else { if (MarketData1.current >= Price + MarketData1.GetTickSize()*5 || MarketData1.current <= Price - MarketData1.GetTickSize()*5) { Price = MarketData1.current; Y3 = Y2; Y2 = Y1; Y1 = Chart2.GetIndicatorData("Y",1,0); Main.MessageList("Y",Y1); } } } } 4 차트객체에는 당일최고/최저가값이 리턴되지 않습니다. 당일최고/최저가는 종목객체에서 확인할 수 있으므로 3번과 같이 종목객체를 추가하셔야 합니다. var ZHigh1,ZHigh2,ZHigh3; var ZLow1,ZLow2,ZLow3; function Chart2_OnBarAppended(nData) { if (nData == 1 && Chart2.GetHigh(1, 1) == MarketData1.high) { ZHigh3 = ZHigh2; ZHigh2 = ZHigh1; ZHigh1 = Chart2.GetIndicatorData("Z",1,0); Main.MessageList("ZHigh1",ZHigh1); } if (nData == 1 && Chart2.GetLow(1, 1) == MarketData1.Low) { ZLow3 = ZLow2; ZLow2 = ZLow1; ZLow1 = Chart2.GetIndicatorData("Z",1,0); Main.MessageList("ZLow1",ZLow1); } } 즐거운 하루되세요 > 지나리 님이 쓴 글입니다. > 제목 : 질문드립니다. > 다음 수식 문의드립니다. 항상 좋은 답변 감사드립니다. 1. 1분봉 차트(차트1)에서 봉이 완성될때마다 차트2(60분봉)에서의 X지표값을 기억한다. GetIndicatorData함수 활용 (ex: X1, X2, X3...., 메세지 함수로 X지표값 표시) 2. 차트1에서 봉이 완성되는 시점마다 직전봉(-1봉)과 직전전봉(-2봉)의 X지표값이 직전봉이 크다면 -> con=1 직전전봉(-2봉)과 직전전전봉(-3봉)의 X지표값이 직전전봉이 크다면 -> con=2 3. 차트2(60봉)에서 가격이 변동(1틱 상승 또는 하락)될때마다(만약 1틱이 너무 짧다면 5틱의 가격변동) 차트2의 Y지표값을 기억한다. (시계열순서대로 Y1, Y2,, 메시지 함수로 현재 최종 Y지표값 표시) 4. 차트2(60봉)에서 당일 고가인 경우 차트2의 Z지표값을 기억한다.(Z high 1) 또한 당일 저가인 경우 차트2의 Z지표값을 기억한다. (Z Low 1, 메시지 함수 표시) 당일 고가나 저가가 갱신되는 경우 기존의 지표값을 삭제하지 않고 Z지표값을 새롭게 기억한다.(Z high 2 표시) 감사합니다.