커뮤니티

틱차트에서 데이터로 있는 분봉 관련하여 문의드립니다.

프로필 이미지
yosong
2024-09-30 14:05:49
861
글번호 183851
답변완료

첨부 이미지

안녕하세요 항상 도움 감사드립니다. 아래 코드를 사용하고 있는데요. 주차트(data1)를 틱 300으로 설정하고 밑에 데이터(data2~20)들을 분봉(30초)로 설정하였는데 프린트문으로 데이터를 뽑아보면 첨부된 파일 왼쪽처럼 틱차트가 30초전에 여러개 완성되는 경우가 있어 data2~20들이 빈경우가 있고 오른쪽처럼 틱차트가 1분단위이상이여서 data2~20들이 여러개에 봉이 발생하는데 하나만 찍히는 경우가 발생합니다. 이럴경우에 처리하는 방법이 있는지 문의드립니다. 아래코드는 IF문부분이 반복되어 생략하였습니다. 꼭 확인 부탁드립니다. 감사합니다. var : var11(0),var12(0),var13(0),var14(0),var15(0),var1(0),var2(0); var : var21(0),var22(0),var23(0),var24(0),var25(0); var : var31(0),var32(0),var33(0),var34(0),var35(0),var36(0); var : var41(0),var42(0),var43(0),var44(0),var45(0),var46(0); var : var59(0),var52(0),var56(0),var57(0),var51(0); var : var69(0),var62(0),var66(0),var67(0),var61(0),var63(0),var64(0),var65(0); input : StartDate(20240102),EndDate(20240823); input : StartTime(090000),EndTime(150000); var : Tcond(false); var : lastPrintTime(0); if sDate >= StartDate and sDate <= EndDate Then { var11 = Data2(c); var21 = Data6(c); var34 = var33[1] - var33; if (abs(Var21[1]-Var21)) > 100000 THEN var15 =0; ELSE IF var21[1] < 0 AND var21 > 0 THEN var15 = var21 - var21[1]; ELSE IF var21[1] < 0 AND var21 < 0 THEN var15 = var21 - var21[1]; ELSE IF var21[1] > 0 AND var21 < 0 THEN var15 = var21[1] - var21; ELSE IF var21[1] > 0 AND var21 > 0 THEN var15 = var21[1] - var21; ELSE var15 = var21[1] - var21; IF var59[1] < 0 AND var59 > 0 THEN var69 = var59 - var59[1]; ELSE IF var59[1] < 0 AND var59 < 0 THEN var69 = var59 - var59[1]; ELSE IF var59[1] > 0 AND var59 < 0 THEN var69 = var59[1] - var59; ELSE IF var59[1] > 0 AND var59 > 0 THEN var69 = var59[1] - var59; ELSE var69 = var59[1] - var59; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = False; } if sDate >= StartDate and sDate <= EndDate and Tcond == true Then { # 현재봉이 마무리되고 다음 봉이 시작되는 시점에 print 실행 if (NextBarOpen > 0 and stime != lastPrintTime) Then { print("c:\win\data1.csv",",거래량,%.f,폭,%.2f,5이격,%.2f,10이격,%.2f,20이격,%.2f,미결제,%.f,비차익,%.f,매수수량,%.f,매수건수,%.f,매도수량,%.f,매도건수,%.f,매도총건수,%.f,매수총건수,%.f,매도총수량,%.f,매수총건수,%.f,상승체결,%.f,하락체결,%.f,상승건수,%.f,하락건수,%.f,체결건수,%.f,상승제외,%.f,하락제외,%.f,외선현,%.f,기현외현,%.f,기옵콜,%.f,기옵풋,%.f,차익,%.f,코10,%.2f,",V,var61,var63,var64,var65,var34,var15,var11,var12,var13,var14,var22,var23,var24,var25,var31,var32,Upticks,Downticks,Ticks,Var1,Var2,Var41,Var42,Var43,Var44,Var45,Var46); lastPrintTime = stime; } Plot1(var34, "미결제약정"); Plot2(var11,"매수5호가수량"); Plot3(var12,"매수5호가건수"); Plot4(var13,"매도호5호가수량"); Plot5(var14,"매도5호가건수"); Plot6(var15,"비차익"); Plot7(var22,"매도총건수"); Plot8(var23,"매수총건수"); Plot9(var24,"매도총수량"); Plot10(var25,"매수총건수"); Plot11(var31,"상승체결"); Plot12(var32,"하락체결"); #Plot13(var15, "비차익2"); }
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-30 16:56:24

안녕하세요 예스스탁입니다. 올려주신 내용은 별도로 처리할 방법이 없습니다. print함수가 실시간에서 시세가 수신될때마다 출력되므로 올리신 수식에서 NextBarOpen > 0으로 기본차트 봉완성시에 1회 동작하게 제어를 한 상태입니다. 해당 조건을 풀면 시세 수신될때만 출력이 되고 다른 데이터 봉완성시에 추가로 출력하게 제어가 가능하지 않습니다. 도움을 드리지 못해 죄송합니다. 즐거운 하루되세요 > yosong 님이 쓴 글입니다. > 제목 : 틱차트에서 데이터로 있는 분봉 관련하여 문의드립니다. > 안녕하세요 항상 도움 감사드립니다. 아래 코드를 사용하고 있는데요. 주차트(data1)를 틱 300으로 설정하고 밑에 데이터(data2~20)들을 분봉(30초)로 설정하였는데 프린트문으로 데이터를 뽑아보면 첨부된 파일 왼쪽처럼 틱차트가 30초전에 여러개 완성되는 경우가 있어 data2~20들이 빈경우가 있고 오른쪽처럼 틱차트가 1분단위이상이여서 data2~20들이 여러개에 봉이 발생하는데 하나만 찍히는 경우가 발생합니다. 이럴경우에 처리하는 방법이 있는지 문의드립니다. 아래코드는 IF문부분이 반복되어 생략하였습니다. 꼭 확인 부탁드립니다. 감사합니다. var : var11(0),var12(0),var13(0),var14(0),var15(0),var1(0),var2(0); var : var21(0),var22(0),var23(0),var24(0),var25(0); var : var31(0),var32(0),var33(0),var34(0),var35(0),var36(0); var : var41(0),var42(0),var43(0),var44(0),var45(0),var46(0); var : var59(0),var52(0),var56(0),var57(0),var51(0); var : var69(0),var62(0),var66(0),var67(0),var61(0),var63(0),var64(0),var65(0); input : StartDate(20240102),EndDate(20240823); input : StartTime(090000),EndTime(150000); var : Tcond(false); var : lastPrintTime(0); if sDate >= StartDate and sDate <= EndDate Then { var11 = Data2(c); var21 = Data6(c); var34 = var33[1] - var33; if (abs(Var21[1]-Var21)) > 100000 THEN var15 =0; ELSE IF var21[1] < 0 AND var21 > 0 THEN var15 = var21 - var21[1]; ELSE IF var21[1] < 0 AND var21 < 0 THEN var15 = var21 - var21[1]; ELSE IF var21[1] > 0 AND var21 < 0 THEN var15 = var21[1] - var21; ELSE IF var21[1] > 0 AND var21 > 0 THEN var15 = var21[1] - var21; ELSE var15 = var21[1] - var21; IF var59[1] < 0 AND var59 > 0 THEN var69 = var59 - var59[1]; ELSE IF var59[1] < 0 AND var59 < 0 THEN var69 = var59 - var59[1]; ELSE IF var59[1] > 0 AND var59 < 0 THEN var69 = var59[1] - var59; ELSE IF var59[1] > 0 AND var59 > 0 THEN var69 = var59[1] - var59; ELSE var69 = var59[1] - var59; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; } if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then { Tcond = False; } if sDate >= StartDate and sDate <= EndDate and Tcond == true Then { # 현재봉이 마무리되고 다음 봉이 시작되는 시점에 print 실행 if (NextBarOpen > 0 and stime != lastPrintTime) Then { print("c:₩win₩data1.csv",",거래량,%.f,폭,%.2f,5이격,%.2f,10이격,%.2f,20이격,%.2f,미결제,%.f,비차익,%.f,매수수량,%.f,매수건수,%.f,매도수량,%.f,매도건수,%.f,매도총건수,%.f,매수총건수,%.f,매도총수량,%.f,매수총건수,%.f,상승체결,%.f,하락체결,%.f,상승건수,%.f,하락건수,%.f,체결건수,%.f,상승제외,%.f,하락제외,%.f,외선현,%.f,기현외현,%.f,기옵콜,%.f,기옵풋,%.f,차익,%.f,코10,%.2f,",V,var61,var63,var64,var65,var34,var15,var11,var12,var13,var14,var22,var23,var24,var25,var31,var32,Upticks,Downticks,Ticks,Var1,Var2,Var41,Var42,Var43,Var44,Var45,Var46); lastPrintTime = stime; } Plot1(var34, "미결제약정"); Plot2(var11,"매수5호가수량"); Plot3(var12,"매수5호가건수"); Plot4(var13,"매도호5호가수량"); Plot5(var14,"매도5호가건수"); Plot6(var15,"비차익"); Plot7(var22,"매도총건수"); Plot8(var23,"매수총건수"); Plot9(var24,"매도총수량"); Plot10(var25,"매수총건수"); Plot11(var31,"상승체결"); Plot12(var32,"하락체결"); #Plot13(var15, "비차익2"); }