커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

문의드립니다.

아래식은 지난 선배님의 수식인데... 에러가나서 어떻게 해결할지 못해 문의드립니다. Input:Rate(3), kind(1); // 1:일반다이버전스,2:히든다이버전스,3:과장된다이버전스,4:3중다이버전스 Var:j(0),jj(0),iValue(0), 고저구분(0), // 1: 고점, 2: 저점 신규여부(0); // 1: 신규, 2: 연장 Array:HH[10,4](0),LL[10,4](0), // 1:가격, 2:Index, 3:sDate, 4:sTime IH[10,4](0),IL[10,4](0), // 지표의 고,저점을 관리 TL[10](0), BeginIndex[4](0); var : tx1(0),tx2(0); #==========================================# iValue = RSI(9); // 지표값은 아래와 같이 다양하게 변경 가능 // iValue = StochasticsK(10,5); // iValue = StochasticsD(5,3,3); // iValue = MACD(12,26); // iValue = MACD_OSC(12,26,9); // iValue = CCI(9); // iValue = LRS(C,14); // iValue = Volume; Plot1(iValue); #==========================================# // 주가 차트에 대한 파동선 고저구분 = ChgRateZigZag(Rate,0,HH,LL,신규여부); // 최소변동률지그재그 If 고저구분 == 1 Then { // 고점 If 신규여부 == 1 Then { TL[0] = TL_New(LL[1,3],LL[1,4],LL[1,1],HH[1,3],HH[1,4],HH[1,1]); } If 신규여부 == 2 Then // 고점 연장 { TL_SetEnd(TL[0],HH[1,3],HH[1,4],HH[1,1]); } } Else If 고저구분 == -1 Then { // 저점 If 신규여부 == 1 Then { TL[0] = TL_New(HH[1,3],HH[1,4],HH[1,1],LL[1,3],LL[1,4],LL[1,1]); } If 신규여부 == 2 Then // 저점 연장 { TL_SetEnd(TL[0],LL[1,3],LL[1,4],LL[1,1]); } } TL_SetSize(TL[0],1); TL_SetColor(TL[0],PINK); if 고저구분 == 1 Then { if 고저구분[1] != 1 Then { tx1 = Text_New(HH[1,3],HH[1,4],HH[1,1],NumToStr(HH[1,1],2)); Text_SetStyle(tx1,2,1); } Else { Text_SetString(tx1,NumToStr(HH[1,1],2)); Text_SetLocation(tx1,HH[1,3],HH[1,4],HH[1,1]); } } if 고저구분 == -1 Then { if 고저구분[1] != -1 Then { tx1 = Text_New(LL[1,3],LL[1,4],LL[1,1],NumToStr(LL[1,1],2)); Text_SetStyle(tx1,2,0); } Else { Text_SetString(tx1,NumToStr(LL[1,1],2)); Text_SetLocation(tx1,LL[1,3],LL[1,4],LL[1,1]); } } #==========================================# // 보조지표에 대한 파동선 Value1 = IndiDivergence(고저구분,신규여부,iValue,IH,IL); // 주가의 지그재그파동 결과를 입력 // 결과값이 1이면 정상, 0이면 오류 If Value1 == 1 Then { If 고저구분 == 1 Then { // 고점 If 신규여부 == 1 Then // 주가 파동에 신규 고점 발생 { TL[1] = TL_New_Self(IL[1,3],IL[1,4],IL[1,1],IH[1,3],IH[1,4],IH[1,1]); tx2 = Text_New_Self(IH[1,3],IH[1,4],IH[1,1],NumToStr(IH[1,1],2)); Text_SetStyle(tx2,2,1); } Else // 주가의 꼭지점이 그대로라도 지표는 변하므로 매봉마다 연장처리 { TL_SetEnd(TL[1],IH[1,3],IH[1,4],IH[1,1]); Text_SetString(tx2,NumToStr(IH[1,1],2)); Text_SetLocation(tx2,IH[1,3],IH[1,4],IH[1,1]); } } Else If 고저구분 == -1 Then { // 저점 If 신규여부 == 1 Then // 주가 파동에 신규 저점 발생 { TL[1] = TL_New_Self(IH[1,3],IH[1,4],IH[1,1],IL[1,3],IL[1,4],IL[1,1]); tx2 = Text_New_Self(IL[1,3],IL[1,4],IL[1,1],NumToStr(IL[1,1],2)); Text_SetStyle(tx2,2,0); } Else { TL_SetEnd(TL[1],IL[1,3],IL[1,4],IL[1,1]); Text_SetString(tx2,NumToStr(IL[1,1],2)); Text_SetLocation(tx2,IL[1,3],IL[1,4],IL[1,1]); } } TL_SetSize(TL[1],1); TL_SetColor(TL[1],BLUE); } #==========================================# // 다이버전스 표시 If (kind == 1 and HH[2,1] < HH[1,1] and IH[2,1] > IH[1,1]) or // 일반 약세 다이버전스 : 주가 고점 상승, 보조지표 고점 하락 (kind == 2 and HH[2,1] > HH[1,1] and IH[2,1] < IH[1,1]) or // 히든 약세 다이버전스 : 주가 고점 하락, 보조지표 고점 상승 (kind == 3 and abs(HH[2,1] - HH[1,1]) <= 2 * PriceScale and IH[2,1] > IH[1,1]) Then { // 과장된 약세 다이버전스 : 주가 고점의 차이가 2틱 이내이고 보조지표 고점 하락 Value2 = (HH[1,1]-HH[2,1])/(HH[1,2]-HH[2,2])*(Index-HH[2,2])+HH[2,1]; Value3 = (IH[1,1]-IH[2,1])/(IH[1,2]-IH[2,2])*(Index-IH[2,2])+IH[2,1]; If BeginIndex[0] == HH[2,2] Then { // 다이버전스를 나타내는 추세선의 시작점이 변함이 없으면 추세선 끝점만 연장 TL_SetEnd(TL[2],sDate,sTime,Value2); TL_SetEnd(TL[3],sDate,sTime,Value3); } Else { TL[2] = TL_New(HH[2,3],HH[2,4],HH[2,1],sDate,sTime,Value2); TL[3] = TL_New_Self(IH[2,3],IH[2,4],IH[2,1],sDate,sTime,Value3); BeginIndex[0] = HH[2,2]; // 추세선 시작점인 2번 고점의 index 값을 저장 } TL_SetSize(TL[2],3); TL_SetSize(TL[3],3); TL_SetColor(TL[2],LGREEN); TL_SetColor(TL[3],LGREEN); } If (kind == 1 and LL[2,1] > LL[1,1] and IL[2,1] < IL[1,1]) or // 일반 강세 다이버전스 : 주가 저점 하락, 보조지표 저점 상승 (kind == 2 and LL[2,1] < LL[1,1] and IL[2,1] > IL[1,1]) or // 히든 강세 다이버전스 : 주가 저점 상승, 보조지표 저점 하락 (kind == 3 and abs(LL[2,1] - LL[1,1]) <= 2 * PriceScale and IL[2,1] < IL[1,1]) Then { // 과장된 강세 다이버전스 : 주가 저점의 차이가 2틱 이내, 보조지표 저점 상승 Value4 = (LL[1,1]-LL[2,1])/(LL[1,2]-LL[2,2])*(Index-LL[2,2])+LL[2,1]; Value5 = (IL[1,1]-IL[2,1])/(IL[1,2]-IL[2,2])*(Index-IL[2,2])+IL[2,1]; If BeginIndex[1] == LL[2,2] Then { TL_SetEnd(TL[4],sDate,sTime,Value4); TL_SetEnd(TL[5],sDate,sTime,Value5); } Else { TL[4] = TL_New(LL[2,3],LL[2,4],LL[2,1],sDate,sTime,Value4); TL[5] = TL_New_Self(IL[2,3],IL[2,4],IL[2,1],sDate,sTime,Value5); BeginIndex[1] = LL[2,2]; } TL_SetSize(TL[4],3); TL_SetSize(TL[5],3); TL_SetColor(TL[4],MAGENTA); TL_SetColor(TL[5],MAGENTA); } If kind == 4 and HH[3,1] < HH[1,1] and // 주가 고점 상승 (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(HH[2,2]-HH[3,2])+HH[3,1] > HH[2,1] and // 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치 IH[3,1] > IH[1,1] and // 보조지표 고점 하락 (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(IH[2,2]-IH[3,2])+IH[3,1] > IH[2,1] Then { // 2번 고점은 1번과 3번 고점을 잇는 선보다 밑에 위치 Value2 = (HH[1,1]-HH[3,1])/(HH[1,2]-HH[3,2])*(Index-HH[3,2])+HH[3,1]; Value3 = (IH[1,1]-IH[3,1])/(IH[1,2]-IH[3,2])*(Index-IH[3,2])+IH[3,1]; If BeginIndex[0] == HH[3,2] Then { TL_SetEnd(TL[2],sDate,sTime,Value2); TL_SetEnd(TL[3],sDate,sTime,Value3); } Else { TL[2] = TL_New(HH[3,3],HH[3,4],HH[3,1],sDate,sTime,Value2); TL[3] = TL_New_Self(IH[3,3],IH[3,4],IH[3,1],sDate,sTime,Value3); BeginIndex[0] = HH[3,2]; } TL_SetSize(TL[2],3); TL_SetSize(TL[3],3); TL_SetColor(TL[2],LGREEN); TL_SetColor(TL[3],LGREEN); } If kind == 4 and LL[3,1] > LL[1,1] and // 주가 저점 하락 (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(LL[2,2]-LL[3,2])+LL[3,1] < LL[2,1] and // 2번 저점이 1번,3번 저점을 잇는 선보다 위에 위치 IL[3,1] < IL[1,1] and // 보조지표 저점 상승 (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(IL[2,2]-IL[3,2])+IL[3,1] < IL[2,1] Then { Value4 = (LL[1,1]-LL[3,1])/(LL[1,2]-LL[3,2])*(Index-LL[3,2])+LL[3,1]; Value5 = (IL[1,1]-IL[3,1])/(IL[1,2]-IL[3,2])*(Index-IL[3,2])+IL[3,1]; If BeginIndex[1] == LL[3,2] Then { TL_SetEnd(TL[4],sDate,sTime,Value4); TL_SetEnd(TL[5],sDate,sTime,Value5); } Else { TL[4] = TL_New(LL[3,3],LL[3,4],LL[3,1],sDate,sTime,Value4); TL[5] = TL_New_Self(IL[3,3],IL[3,4],IL[3,1],sDate,sTime,Value5); BeginIndex[1] = LL[3,2]; } TL_SetSize(TL[4],3); TL_SetSize(TL[5],3); TL_SetColor(TL[4],MAGENTA); TL_SetColor(TL[5],MAGENTA); }
프로필 이미지
as8282
2020-03-26
908
글번호 137246
지표

wko7856 님에 의해서 삭제되었습니다.

프로필 이미지
wko7856
2020-03-26
0
글번호 137242
시스템
답변완료

로직부탁드립니다

예스그로벌을 이용해 NH선물에서 거래하려고 합니다 수식을 부탁드립니다 요청수식 20ma-120ma 골든크로시하였을 때 시가(dayopen(0)) 위에서 v3<v4 이면 매수 진입 후 매수 청산은 v3>v4 또는 익절 100틱이던지 손절 50틱 매수 청산 {v3 = (DayHigh(0)+ DayLow(0))/2; v4 = (DayHigh(0)+ DayLow(0) + DayClose(0))/3;} 20ma-120ma 대드크로시하였을 때 시가(dayopen(0)) 아래에서 v3>v4 이면 매도 진입 후 매수 청산은 v3<v4 또는 익절 100틱이던지 손절 50틱 매도 청산 {v3 = (DayHigh(0)+ DayLow(0))/2; v4 = (DayHigh(0)+ DayLow(0) + DayClose(0))/3;}
프로필 이미지
wko7856
2020-03-26
677
글번호 137241
시스템
답변완료

Trix지표와 함수결과값의 차이

아래코딩 (1)에서 특정분봉(여기선 하루) Trix 값을 현재분봉에 나타내는 코딩으로 이전분의 질문을 바탕으로 공부하고 있는데 이것을 사용자함수(2번)로 전환하여 비교해 보니까 값이 다르게 나옵니다. (1)의 내용을 사용자함수로 만들고 싶은데 어떻게 수정해야 할까요? 항상 감사합니다. (1) Input : ntime(390),Period(20),signal(9); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } PLOT1(TRIXv); PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then Plot3(TRIXv, "GC"); else NoPlot(3); } 2) var50 = D_Trix(360, 20, 9); if var50 == 1 then Plot4(5, "Check"); else NoPlot(4); <사용자함수 > Input : ntime(Numeric),Period(Numeric),signal(Numeric); var : S1(0),D1(0),TM(0),TF1(0),EP1(0),EP2(0); Var : emav1(0),PreEmav1(0); Var : emav2(0),PreEmav2(0); Var : emav3(0),PreEmav3(0); var : TRIXv(0),TRIXs(0),PreTRIXs(0); EP1 = 2/(Period+1); EP2 = 2/(Signal+1); if Bdate != Bdate[1] Then{ S1 = TimeToMinutes(stime); D1 = sdate; } if D1 > 0 then{ if sdate == D1 Then TM = TimeToMinutes(stime)-S1; Else TM = TimeToMinutes(stime)+1440-S1; TF1 = TM%ntime; if Bdate != Bdate[1] or (Bdate == Bdate[1] and TF1 < TF1[1]) Then { value1 = value1+1; PreEmav1 = emav1[1]; PreEmav2 = emav2[1]; PreEmav3 = emav3[1]; PreTRIXs = TRIXs[1]; } if value1 <= 1 then { emav1 = C; emav2 = emav1; emav3 = emav2; TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXS = TRIXv; } else{ emav1 = C * EP1 + PreEmav1 * (1-EP1); emav2 = emav1 * EP1 + PreEmav2 * (1-EP1); emav3 = emav2 * EP1 + PreEmav3 * (1-EP1); TRIXv = (emav3 - PreEmav3) / PreEmav3 * 100; TRIXs = TRIXv * EP2 + PreTRIXs * (1-EP2); } # PLOT1(TRIXv); # PLOT2(TRIXs); if CrossUp(TRIXv, TRIXs) then var30 = 1; else var30 = 0; } 내_Trix = var30;
프로필 이미지
짱짱해야지
2020-03-26
734
글번호 137236
지표

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
대가들의매매
2020-03-26
5
글번호 137228
시스템
답변완료

문의

청산수식 부탁드립니다. 1) 14시 현재 60 개의 미결제가 있고 다른 청산전략은 없을 때 14시부터 1분 간격으로 1개씩 exitlong 14시부터 10초 간격으로 1개씩 exitlong 14시부터 20틱 간격으로 1개씩 exitlong 2) 14시 현재 60개의 미결제가 있고 다른 청산전략 수식도 작용할 수 있는 가운데 14시부터 1분 간격으로 1개씩 exitlong 14시부터 10초 간격으로 1개씩 exitlong 14시부터 20틱 간격으로 1개씩 exitlong
프로필 이미지
목마와숙녀
2020-03-26
561
글번호 137227
시스템
답변완료

수식부탁드립니다

#,안녕하세요 관리자님 수정해주신수식 진심 감사드립니다. ㅡ,보조지표 Stochastics를 사용할경우입니다 주가의 변화에 지표의 변화가 달리할때 즉,주가가 상승할때 반대로 지표(Stochastics)의 고점이 낮아질때나, 또는 주가가 하락할때 반대로 지표(Stochastics)의 저점이 높아질때 주가와 지표가 변화를 달리하는 시점부터 지표(Stochastics)저점들을(또는 고점들을) 추세선으로 표시(다이버젼스발생)하고싶습니다.고점저점기준은 골드데드구간으로 하면좋겠습니다 (목적은 다이버젼스발생을 찾기 위해서 입니다) ##, 고맙습니다.
프로필 이미지
골든키
2020-03-26
537
글번호 137224
지표
답변완료

문의드립니다.

inp_Period = input(title = "trend continue", type = input.integer, defval = 8) inp_Source = input(title = "Source", type = input.source, defval = close) da_SMA = sma(inp_Source, inp_Period) da_SMA_Pov_2 = da_SMA * da_SMA da_Sum = sma(da_SMA, inp_Period) * inp_Period da_Sum_Pov_2 = sma(da_SMA_Pov_2, inp_Period) * inp_Period da_StdDev = sqrt((da_Sum_Pov_2 - da_Sum * da_Sum / inp_Period) / inp_Period) da_StdDev_Avg = sma(da_StdDev, inp_Period) da_Line = da_StdDev_Avg == 0 ? 1 : da_StdDev / da_StdDev_Avg plot(da_Line, color = da_Line > 0.2 ? color.green : color.red) 변환 문의드려도 될지요 감사합니다.
프로필 이미지
물고기
2020-03-26
520
글번호 137222
지표

경매story 님에 의해서 삭제되었습니다.

프로필 이미지
경매story
2020-03-26
4
글번호 137220
시스템
답변완료

시스템 차트표시 설정을 바꾸면 시스템 화살표 위치가 바뀌는 현상

data2, data3 참조데이터를 사용하여 시스템식을 작성했는데요. 원하는 위치에 화살표가 나올 때가 있고 안나올 때가 있어서 며칠간 검색 및 문의해서 얻은 결론은 데이터번호를 var와 그 수식에 넣으면 해결될 수 있다고 해서 식을 수정했습니다. 그런데 문제가 해결되지 않아서요. 오늘 안 사실인데 시스템의 화살표가 의도한 지점에 안나올 때 시스템트레이딩 설정->'차트표시' 탭-> '진입과 청산을 선으로 연결' 체크하거나 해제 확인을 누르고 나오면 화살표가 제가 의도한(의도하여 작성한 수식) 대로 표시가 됩니다. 질문을 정리하면 시스템식이 의도한 대로 화살표가 나올 때도 있고, 안나올 때가 있는데 안나올 때, 시스템 설정에서 '차트 표시'에서 '진입과 청산을 선으로 연결'을 체크하거나 체크 해제한 후 확인을 하면 정상(제가 의도한 수식)으로 화살표가 표시가 됩니다. 버그 일까요? 아니면 잘못된 수식 작성 때문일까요?
프로필 이미지
수급돌파
2020-03-26
530
글번호 137219
시스템