커뮤니티

다시 올립니다.

프로필 이미지
에이텍
2014-02-21 17:01:30
196
글번호 72816
답변완료
아래 수직지왕님의 지표식을 시스템식으로 변경해주세요.. 지표를 적용하면 파동선이 나오는데 그 선의 상,하 방향에따른 신호가 나왔으면합니다. #==========================================# # 지 표 명 : 당일파동선 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:전환율(0.5),선두께(4),선색(green); //전환율 또는 변동률 Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0), date11(0),date12(0),time11(0),time12(0),TL1(0), date21(0),date22(0),time21(0),time22(0),TL2(0); Array:hiVal[2](0),loVal[2](0),hiBar[2](0),loBar[2](0); upRate = 1 + (전환율/100); //상승률 dnRate = 1 - (전환율/100); //하락률 loBar[1] = loBar[1] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리 hiBar[1] = hiBar[1] + 1; //전고점의 위치 if DayIndex == 0 then { if trnd == upTr then { date11 = date[loBar[1]]; //추세선 시작일 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 } else { date11 = date[hiBar[1]]; //추세선 시작일 time11 = stime[hiBar[1]]; //추세선 시작시간 Value11 = hiVal[1]; //추세선 시작가격 } date12 = date[1]; //추세선 종료일 time12 = stime[1]; //추세선 종료시간 Value12 = C[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); hiVal[1] = O; hiBar[1] = 0; loVal[1] = O; loBar[1] = 0; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; trnd = 0; if hiVal[1] * dnRate > C then trnd = dnTr; else if loVal[1] * upRate < C then trnd = upTr; } if hiVal[0] <= C then { hiVal[0] = C; hiBar[0] = 0; } else { hiBar[0] = hiBar[0] + 1; } if loVal[0] >= C then { loVal[0] = C; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; } if hiVal[0] * dnRate > C then trnd = dnTr; else if loVal[0] * upRate < C then trnd = upTr; if trnd[1] != dnTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면 hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; hiVal[0] = C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다. date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 } if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데 hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면 hiVal[0] * dnRate > C then { hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다. hiBar[1] = hiBar[0]; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다. date12 = date[hiBar[1]]; //추세선 종료일 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL_SetEnd(TL1, date12,time12,Value12); //TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다. //TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다. } if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우 loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date11 = date[hiBar[1]]; time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데 loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면 loVal[0] * upRate < C then { loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다. loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL_SetEnd(TL1, date12,time12,Value12); } TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); if trnd == upTr then { date21 = date[loBar[1]]; //추세선 시작일 time21 = stime[loBar[1]]; //추세선 시작시간 Value21 = loVal[1]; //추세선 시작가격 } else { date21 = date[hiBar[1]]; //추세선 시작일 time21 = stime[hiBar[1]]; //추세선 시작시간 Value21 = hiVal[1]; //추세선 시작가격 } date22 = date; //추세선 종료일 time22 = stime; //추세선 종료시간 Value22 = C; //추세선 종료가격 TL_Delete(TL2); TL2 = TL_New(date21,time21,Value21,date22,time22,Value22); TL_SetSize(TL2,선두께); TL_SetColor(TL2,선색);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-02-21 18:23:10

안녕하세요 예스스탁입니다. 아래 하락이나 상승으로 변동시 매수와 매도가 되게 수정했습니다. 추세선은 저점이나 고점에서 지정된%(전환률) 이상 변환후에 과거 저점과 고점부터 선을 그릴수 있지만 신호는 과거봉에 찍을 수가 없으므로 변동이 확인되는 봉에 신호가 출력이 되므로 추세선의 전고점과 점저점보다 늦게 발생합니다. 이용에 참고하시기 바랍니다. Input:전환율(0.5),선두께(4),선색(green); //전환율 또는 변동률 Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0), date11(0),date12(0),time11(0),time12(0),TL1(0), date21(0),date22(0),time21(0),time22(0),TL2(0); Array:hiVal[2](0),loVal[2](0),hiBar[2](0),loBar[2](0); upRate = 1 + (전환율/100); //상승률 dnRate = 1 - (전환율/100); //하락률 loBar[1] = loBar[1] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리 hiBar[1] = hiBar[1] + 1; //전고점의 위치 if DayIndex == 0 then { if trnd == upTr then { date11 = date[loBar[1]]; //추세선 시작일 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 } else { date11 = date[hiBar[1]]; //추세선 시작일 time11 = stime[hiBar[1]]; //추세선 시작시간 Value11 = hiVal[1]; //추세선 시작가격 } date12 = date[1]; //추세선 종료일 time12 = stime[1]; //추세선 종료시간 Value12 = C[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); hiVal[1] = O; hiBar[1] = 0; loVal[1] = O; loBar[1] = 0; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; trnd = 0; if hiVal[1] * dnRate > C then trnd = dnTr; else if loVal[1] * upRate < C then trnd = upTr; } if hiVal[0] <= C then { hiVal[0] = C; hiBar[0] = 0; } else { hiBar[0] = hiBar[0] + 1; } if loVal[0] >= C then { loVal[0] = C; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; } if hiVal[0] * dnRate > C then trnd = dnTr; else if loVal[0] * upRate < C then trnd = upTr; if trnd[1] != dnTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면 sell(); hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; hiVal[0] = C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다. date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 } if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데 hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면 hiVal[0] * dnRate > C then { hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다. hiBar[1] = hiBar[0]; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다. date12 = date[hiBar[1]]; //추세선 종료일 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL_SetEnd(TL1, date12,time12,Value12); //TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다. //TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다. } if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우 buy(); loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date11 = date[hiBar[1]]; time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데 loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면 loVal[0] * upRate < C then { loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다. loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL_SetEnd(TL1, date12,time12,Value12); } TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); if trnd == upTr then { date21 = date[loBar[1]]; //추세선 시작일 time21 = stime[loBar[1]]; //추세선 시작시간 Value21 = loVal[1]; //추세선 시작가격 } else { date21 = date[hiBar[1]]; //추세선 시작일 time21 = stime[hiBar[1]]; //추세선 시작시간 Value21 = hiVal[1]; //추세선 시작가격 } date22 = date; //추세선 종료일 time22 = stime; //추세선 종료시간 Value22 = C; //추세선 종료가격 TL_Delete(TL2); TL2 = TL_New(date21,time21,Value21,date22,time22,Value22); TL_SetSize(TL2,선두께); TL_SetColor(TL2,선색); 즐거운 하루되세요 > 에이스테크 님이 쓴 글입니다. > 제목 : 다시 올립니다. > 아래 수직지왕님의 지표식을 시스템식으로 변경해주세요.. 지표를 적용하면 파동선이 나오는데 그 선의 상,하 방향에따른 신호가 나왔으면합니다. #==========================================# # 지 표 명 : 당일파동선 # 작 성 자 : 수식지왕 # 블 로 그 : http://yahoosir.blog.me #==========================================# Input:전환율(0.5),선두께(4),선색(green); //전환율 또는 변동률 Var:j(0),upTr(100),dnTr(-100),upRate(0),dnRate(0),trnd(0), date11(0),date12(0),time11(0),time12(0),TL1(0), date21(0),date22(0),time21(0),time22(0),TL2(0); Array:hiVal[2](0),loVal[2](0),hiBar[2](0),loBar[2](0); upRate = 1 + (전환율/100); //상승률 dnRate = 1 - (전환율/100); //하락률 loBar[1] = loBar[1] + 1; //전저점의 위치. 현재 봉으로부터 떨어져 있는 거리 hiBar[1] = hiBar[1] + 1; //전고점의 위치 if DayIndex == 0 then { if trnd == upTr then { date11 = date[loBar[1]]; //추세선 시작일 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 } else { date11 = date[hiBar[1]]; //추세선 시작일 time11 = stime[hiBar[1]]; //추세선 시작시간 Value11 = hiVal[1]; //추세선 시작가격 } date12 = date[1]; //추세선 종료일 time12 = stime[1]; //추세선 종료시간 Value12 = C[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); hiVal[1] = O; hiBar[1] = 0; loVal[1] = O; loBar[1] = 0; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; trnd = 0; if hiVal[1] * dnRate > C then trnd = dnTr; else if loVal[1] * upRate < C then trnd = upTr; } if hiVal[0] <= C then { hiVal[0] = C; hiBar[0] = 0; } else { hiBar[0] = hiBar[0] + 1; } if loVal[0] >= C then { loVal[0] = C; loBar[0] = 0; } else { loBar[0] = loBar[0] + 1; } if hiVal[0] * dnRate > C then trnd = dnTr; else if loVal[0] * upRate < C then trnd = upTr; if trnd[1] != dnTr and trnd == dnTr then { //상승추세였다가 하락추세로 바뀌었다면 hiVal[1] = hiVal[0]; //새로운 전고점에 현재 고점을 대입 hiBar[1] = hiBar[0]; hiVal[0] = C; //전고점이 확정되었으므로 전고점 이후 최고가는 현재봉의 고가 hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 새로 생긴 것이니까 전저점에서 전고점까지 추세선을 긋는다. date11 = date[loBar[1]]; //추세선 시작일. 전저점의 날짜 time11 = stime[loBar[1]]; //추세선 시작시간 Value11 = loVal[1]; //추세선 시작가격 date12 = date[hiBar[1]]; //추세선 종료일. 전고점의 날짜 time12 = stime[hiBar[1]]; //추세선 종료시간 Value12 = hiVal[1]; //추세선 종료가격 TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); //TL_New는 신규 추세선을 그려주는 함수 } if trnd[1] == dnTr and trnd == dnTr and //추세는 하락 상태에서 바뀌지 않았는데 hiVal[1] < hiVal[0] and //전고점보다 더 높은 고점이 출현했다면 hiVal[0] * dnRate > C then { hiVal[1] = hiVal[0]; //전고점을 현재의 고점으로 바꿔준다. hiBar[1] = hiBar[0]; hiVal[0] = C; hiBar[0] = 0; loVal[0] = C; loBar[0] = 0; //전고점이 추가된 게 아니고 바뀐 것이므로 종료일,종료시간,종료가격만 바꿔준다. date12 = date[hiBar[1]]; //추세선 종료일 time12 = stime[hiBar[1]]; Value12 = hiVal[1]; TL_SetEnd(TL1, date12,time12,Value12); //TL_SetEnd는 기존추세선의 종료지점을 변경해주는 추세선 함수이다. //TL_Delete 함수를 써서 직전의 추세선을 지우고 다시 TL_New로 추세선을 추가해도 된다. } if trnd[1] != upTr and trnd == upTr then { //추세가 하락에서 상승으로 바뀌었을 경우 loVal[1] = loVal[0]; loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date11 = date[hiBar[1]]; time11 = stime[hiBar[1]]; Value11 = hiVal[1]; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); } if trnd[1] == upTr and trnd == upTr and //추세는 상승을 유지하고 있는데 loVal[1] > loVal[0] and //전저점보다 낮은 저가가 출현했다면 loVal[0] * upRate < C then { loVal[1] = loVal[0]; //직전의 전저점만 바꿔준다. loBar[1] = loBar[0]; loVal[0] = C; loBar[0] = 0; hiVal[0] = C; hiBar[0] = 0; date12 = date[loBar[1]]; time12 = stime[loBar[1]]; Value12 = loVal[1]; TL_SetEnd(TL1, date12,time12,Value12); } TL_SetSize(TL1,선두께); TL_SetColor(TL1,선색); if trnd == upTr then { date21 = date[loBar[1]]; //추세선 시작일 time21 = stime[loBar[1]]; //추세선 시작시간 Value21 = loVal[1]; //추세선 시작가격 } else { date21 = date[hiBar[1]]; //추세선 시작일 time21 = stime[hiBar[1]]; //추세선 시작시간 Value21 = hiVal[1]; //추세선 시작가격 } date22 = date; //추세선 종료일 time22 = stime; //추세선 종료시간 Value22 = C; //추세선 종료가격 TL_Delete(TL2); TL2 = TL_New(date21,time21,Value21,date22,time22,Value22); TL_SetSize(TL2,선두께); TL_SetColor(TL2,선색);