커뮤니티

부탁드립니다

프로필 이미지
청심
2017-08-06 17:27:22
122
글번호 111829
답변완료
안녕하세요 시스템식으로 부탁드립니다 Input:n(5), // SwingHigh, SwingLow에서 좌우 날개에 해당하는 봉의 개수 종가사용여부(0), // 고가, 저가 대신 종가로 계산하고자 할 때 파동선두께(2), // 파동선의 두께. 0 ~ 5 수치표시(1); Var:j(0),jj(0),HH(0),LL(0),TL1(0),Text1(0),최종꼭지점(""),처리구분(""); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부 == 1,C,H); // IFF(조건식,참일 때 결과,거짓일 때 결과) LL = IFF(종가사용여부 == 1,C,L); // SwingHigh 정의 Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n); // SwingLow 정의 Condition2 = Lowest (LL,n)[n+1] >= LL[n] and LL[n] < Lowest (LL,n); 처리구분 = ""; If Condition1 and Condition2 Then // 긴 장대봉에서는 SwingHigh와 SwingLow가 동시에 나타날 수 있다. { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL[n] Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH[n] Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 and 저[1,1] < HH[n] Then 처리구분 = "고점처리"; // SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다. Else If Condition2 and 고[1,1] > LL[n] Then 처리구분 = "저점처리"; // SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다. //========================================== If 처리구분 == "고점처리" Then { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 // 2차원 배열이므로 For문안에 또 For문이 올 수 있다. { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[n]; // 가격 고[1,2] = Index - n; // Index 고[1,3] = sDate[n]; // 날짜 고[1,4] = sTime[n]; // 시각 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); // 신규 추세선 생성 If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); // 신규 텍스트 생성 Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Red); } Else If 고[1,1] < HH[n] Then // 고점 다음에 다시 고점이 온 경우로 신규 고점이 더 높아야 의미가 있다. { 고[1,1] = HH[n]; 고[1,2] = Index - n; 고[1,3] = sDate[n]; 고[1,4] = sTime[n]; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); // 텍스트의 위치 변경 Text_SetString(Text1,NumToStr(고[1,1],2)); // 텍스트 값 변경 } } 최종꼭지점 = "고점"; // 이전 꼭지점이 무엇인지 판단하기 쉽도록 변수에 상태를 저장 } //========================================== If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Blue); } Else If 저[1,1] > LL[n] then { 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-08-07 14:30:53

안녕하세요 예스스탁입니다. 추세선으로 출력되는 꼭지점에 신호가 발생하기를 원하시면 해당 내용은 불가능합니다. 해당 수식이 추세선을 이용해 현재에서 판단해 과거봉에 선을 그리도록 되어 있는데 시스템은 현재시점에서 판단하는 내용으로 과거봉에 신호를 발생할수 없습니다. 아래식 적용하시면 매수와 매도신호가 발생하는데 매수신호가 발생한 봉이 최근 저점이 확정되는 봉이고 매도신호가 발생한 봉이 최근 고점이 확정된 봉입니다. Input:n(5), // SwingHigh, SwingLow에서 좌우 날개에 해당하는 봉의 개수 종가사용여부(0), // 고가, 저가 대신 종가로 계산하고자 할 때 파동선두께(2), // 파동선의 두께. 0 ~ 5 수치표시(1); Var:j(0),jj(0),HH(0),LL(0),TL1(0),Text1(0),최종꼭지점(""),처리구분(""),T(0); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부 == 1,C,H); // IFF(조건식,참일 때 결과,거짓일 때 결과) LL = IFF(종가사용여부 == 1,C,L); // SwingHigh 정의 Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n); // SwingLow 정의 Condition2 = Lowest (LL,n)[n+1] >= LL[n] and LL[n] < Lowest (LL,n); 처리구분 = ""; If Condition1 and Condition2 Then // 긴 장대봉에서는 SwingHigh와 SwingLow가 동시에 나타날 수 있다. { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL[n] Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH[n] Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 and 저[1,1] < HH[n] Then 처리구분 = "고점처리"; // SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다. Else If Condition2 and 고[1,1] > LL[n] Then 처리구분 = "저점처리"; // SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다. //========================================== If 처리구분 == "고점처리" Then { T = 1; If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 // 2차원 배열이므로 For문안에 또 For문이 올 수 있다. { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[n]; // 가격 고[1,2] = Index - n; // Index 고[1,3] = sDate[n]; // 날짜 고[1,4] = sTime[n]; // 시각 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); // 신규 추세선 생성 sell(); If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); // 신규 텍스트 생성 Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Red); } Else If 고[1,1] < HH[n] Then // 고점 다음에 다시 고점이 온 경우로 신규 고점이 더 높아야 의미가 있다. { 고[1,1] = HH[n]; 고[1,2] = Index - n; 고[1,3] = sDate[n]; 고[1,4] = sTime[n]; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); // 텍스트의 위치 변경 Text_SetString(Text1,NumToStr(고[1,1],2)); // 텍스트 값 변경 } } 최종꼭지점 = "고점"; // 이전 꼭지점이 무엇인지 판단하기 쉽도록 변수에 상태를 저장 } //========================================== If 처리구분 == "저점처리" Then { T = -1; If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); buy(); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Blue); } Else If 저[1,1] > LL[n] then { 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; } 즐거운 하루되세요 > 청심 님이 쓴 글입니다. > 제목 : 부탁드립니다 > 안녕하세요 시스템식으로 부탁드립니다 Input:n(5), // SwingHigh, SwingLow에서 좌우 날개에 해당하는 봉의 개수 종가사용여부(0), // 고가, 저가 대신 종가로 계산하고자 할 때 파동선두께(2), // 파동선의 두께. 0 ~ 5 수치표시(1); Var:j(0),jj(0),HH(0),LL(0),TL1(0),Text1(0),최종꼭지점(""),처리구분(""); Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime #==========================================# HH = IFF(종가사용여부 == 1,C,H); // IFF(조건식,참일 때 결과,거짓일 때 결과) LL = IFF(종가사용여부 == 1,C,L); // SwingHigh 정의 Condition1 = Highest(HH,n)[n+1] <= HH[n] and HH[n] > Highest(HH,n); // SwingLow 정의 Condition2 = Lowest (LL,n)[n+1] >= LL[n] and LL[n] < Lowest (LL,n); 처리구분 = ""; If Condition1 and Condition2 Then // 긴 장대봉에서는 SwingHigh와 SwingLow가 동시에 나타날 수 있다. { If 최종꼭지점 == "저점" Then { If 저[1,1] > LL[n] Then 처리구분 = "저점처리"; Else 처리구분 = "고점처리"; } Else If 최종꼭지점 == "고점" Then { If 고[1,1] < HH[n] Then 처리구분 = "고점처리"; Else 처리구분 = "저점처리"; } } Else If Condition1 and 저[1,1] < HH[n] Then 처리구분 = "고점처리"; // SwingHigh 조건이 돼도 저점보다 낮으면 가격이 계속 하락중이므로 무시한다. Else If Condition2 and 고[1,1] > LL[n] Then 처리구분 = "저점처리"; // SwingLow 조건이 돼도 고점보다 높으면 가격이 계속 상승중이므로 무시한다. //========================================== If 처리구분 == "고점처리" Then { If 최종꼭지점 == "저점" Then { For j = 10 DownTo 2 { For jj = 1 To 4 // 2차원 배열이므로 For문안에 또 For문이 올 수 있다. { 고[j,jj] = 고[j-1,jj]; } } 고[1,1] = HH[n]; // 가격 고[1,2] = Index - n; // Index 고[1,3] = sDate[n]; // 날짜 고[1,4] = sTime[n]; // 시각 TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]); // 신규 추세선 생성 If 수치표시 == 1 Then { Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2)); // 신규 텍스트 생성 Text_SetStyle(Text1, 2, 1); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Red); } Else If 고[1,1] < HH[n] Then // 고점 다음에 다시 고점이 온 경우로 신규 고점이 더 높아야 의미가 있다. { 고[1,1] = HH[n]; 고[1,2] = Index - n; 고[1,3] = sDate[n]; 고[1,4] = sTime[n]; TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]); // 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임 If 수치표시 == 1 Then { Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]); // 텍스트의 위치 변경 Text_SetString(Text1,NumToStr(고[1,1],2)); // 텍스트 값 변경 } } 최종꼭지점 = "고점"; // 이전 꼭지점이 무엇인지 판단하기 쉽도록 변수에 상태를 저장 } //========================================== If 처리구분 == "저점처리" Then { If 최종꼭지점 == "고점" then { For j = 10 DownTo 2 { For jj = 1 To 4 { 저[j,jj] = 저[j-1,jj]; } } 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2)); Text_SetStyle(Text1, 2, 0); } TL_SetSize(TL1,파동선두께); TL_SetColor(TL1,Blue); } Else If 저[1,1] > LL[n] then { 저[1,1] = LL[n]; 저[1,2] = Index - n; 저[1,3] = sDate[n]; 저[1,4] = sTime[n]; TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]); If 수치표시 == 1 Then { Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]); Text_SetString(Text1,NumToStr(저[1,1],2)); } } 최종꼭지점 = "저점"; }