커뮤니티

수정 부탁드립니다

프로필 이미지
fill
2014-12-16 21:18:39
235
글번호 81413
답변완료
안녕하십니까? 아래 수식지왕님 스윙파동선에 피보나치 등분선을 삽입 부탁드립니다. 상승파동과 하락파동을 나누어 수정부탁드립니다. --상승적용-- r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; --하락적용--- r1[0] = 0; r1[1] = 0.236; r1[2] = 0.382; r1[3] = 0.50; r1[4] = 0.618; r1[5] = 0.764; r1[6] = 1; 그리고 파동선 완성시 소리 출력도 부탁드립니다. #==========================================# # 지표명 : 지그재그파동(기간값) # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN [출처] 최고,최저가 갱신에 의한 Zigzag파동선(파일첨부)|작성자 수식지왕
지표
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2014-12-17 13:11:17

안녕하세요 예스스탁입니다. 마지막 추세에 대해서만 그려지게 됩니다. Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),T(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""),r[10](0); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); if turnPntArr[1][0] == "Hi" Then{ T = 1; } if turnPntArr[1][0] == "Lo" Then T = -1; } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN); var : TTL1(0),TTL2(0),TTL3(0),TTL4(0),TTL5(0),TTL6(0),TTL7(0); if T == -1 then{ r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[0],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[0]); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[1],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[1]); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[2],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[2]); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[3],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[3]); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[4],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[4]); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[5],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[5]); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[6],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[6]); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); } #--하락적용--- if T == 1 Then{ r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[0],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[0]); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[1],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[1]); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[2],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[2]); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[3],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[3]); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[4],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[4]); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[5],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[5]); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[6],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[6]); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); } 즐거운 하루되세요 > fill 님이 쓴 글입니다. > 제목 : 수정 부탁드립니다 > 안녕하십니까? 아래 수식지왕님 스윙파동선에 피보나치 등분선을 삽입 부탁드립니다. 상승파동과 하락파동을 나누어 수정부탁드립니다. --상승적용-- r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; --하락적용--- r1[0] = 0; r1[1] = 0.236; r1[2] = 0.382; r1[3] = 0.50; r1[4] = 0.618; r1[5] = 0.764; r1[6] = 1; 그리고 파동선 완성시 소리 출력도 부탁드립니다. #==========================================# # 지표명 : 지그재그파동(기간값) # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN [출처] 최고,최저가 갱신에 의한 Zigzag파동선(파일첨부)|작성자 수식지왕
프로필 이미지

예스스탁 예스스탁 답변

2014-12-17 16:30:30

안녕하세요 예스스탁입니다. Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),T(0); var : TL11(0),TL21(0),TL31(0),TL41(0),TL51(0),TL61(0),TL71(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""),r[10](0); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); if turnPntArr[1][0] == "Hi" Then{ T = 1; } if turnPntArr[1][0] == "Lo" Then T = -1; } Else{ TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN); var : TTL1(0),TTL2(0),TTL3(0),TTL4(0),TTL5(0),TTL6(0),TTL7(0); if T == -1 then{ TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[0],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[0]); TTL2 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[1],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[1]); TTL3 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[2],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[2]); TTL4 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[3],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[3]); TTL5 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[4],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[4]); TTL6 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[5],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[5]); TTL7 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]+(valArr[3]-valArr[2])*R[6],sdate,stime,valArr[2]+(valArr[3]-valArr[2])*R[6]); TL_SetColor(TTL1,blue); TL_SetColor(TTL2,BLUE); TL_SetColor(TTL3,BLUE); TL_SetColor(TTL4,BLUE); TL_SetColor(TTL5,BLUE); TL_SetColor(TTL6,BLUE); TL_SetColor(TTL7,BLUE); } #--하락적용--- if T == 1 Then{ TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[0],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[0]); TTL2 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[1],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[1]); TTL3 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[2],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[2]); TTL4 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[3],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[3]); TTL5 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[4],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[4]); TTL6 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[5],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[5]); TTL7 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2]-(valArr[2]-valArr[3])*R[6],sdate,stime,valArr[2]-(valArr[2]-valArr[3])*R[6]); TL_SetColor(TTL1,RED); TL_SetColor(TTL2,RED); TL_SetColor(TTL3,RED); TL_SetColor(TTL4,RED); TL_SetColor(TTL5,RED); TL_SetColor(TTL6,RED); TL_SetColor(TTL7,RED); } var : TTL11(0),TTL21(0),TTL31(0),TTL41(0),TTL51(0),TTL61(0),TTL71(0); if barArr[2] > barArr[2][1] and barArr[2][1] <= barArr[2][2] Then{ plot1(1); var1 = sdate[barArr[2]]; var2 = stime[barArr[2]]; var3 = var1[1]; var4 = var2[1]; if valArr[3] > valArr[4] Then{ TTL11 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[0],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[0]); TTL21 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[1],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[1]); TTL31 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[2],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[2]); TTL41 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[3],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[3]); TTL51 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[4],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[4]); TTL61 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[5],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[5]); TTL71 = TL_New(var3,var4,valArr[3]-(valArr[3]-valArr[4])*R[6],var1,var2,valArr[3]-(valArr[3]-valArr[4])*R[6]); TL_SetColor(TTL11,BLUE); TL_SetColor(TTL21,BLUE); TL_SetColor(TTL31,BLUE); TL_SetColor(TTL41,BLUE); TL_SetColor(TTL51,BLUE); TL_SetColor(TTL61,BLUE); TL_SetColor(TTL71,BLUE); } if valArr[3] < valArr[4] Then{ TTL11 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[0],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[0]); TTL21 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[1],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[1]); TTL31 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[2],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[2]); TTL41 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[3],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[3]); TTL51 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[4],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[4]); TTL61 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[5],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[5]); TTL71 = TL_New(var3,var4,valArr[3]+(valArr[4]-valArr[3])*R[6],var1,var2,valArr[3]+(valArr[4]-valArr[3])*R[6]); TL_SetColor(TTL11,RED); TL_SetColor(TTL21,RED); TL_SetColor(TTL31,RED); TL_SetColor(TTL41,RED); TL_SetColor(TTL51,RED); TL_SetColor(TTL61,RED); TL_SetColor(TTL71,RED); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 수정 부탁드립니다 > 안녕하세요 예스스탁입니다. 마지막 추세에 대해서만 그려지게 됩니다. Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0),T(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""),r[10](0); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); if turnPntArr[1][0] == "Hi" Then{ T = 1; } if turnPntArr[1][0] == "Lo" Then T = -1; } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN); var : TTL1(0),TTL2(0),TTL3(0),TTL4(0),TTL5(0),TTL6(0),TTL7(0); if T == -1 then{ r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[0],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[0]); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[1],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[1]); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[2],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[2]); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[3],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[3]); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[4],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[4]); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[5],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[5]); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]+(valArr[2]-valArr[1])*R[6],sdate,stime,valArr[1]+(valArr[2]-valArr[1])*R[6]); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); } #--하락적용--- if T == 1 Then{ r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; TL_Delete(TTL1); TL_Delete(TTL2); TL_Delete(TTL3); TL_Delete(TTL4); TL_Delete(TTL5); TL_Delete(TTL6); TL_Delete(TTL7); TTL1 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[0],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[0]); TTL2 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[1],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[1]); TTL3 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[2],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[2]); TTL4 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[3],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[3]); TTL5 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[4],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[4]); TTL6 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[5],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[5]); TTL7 = TL_New(sDate[barArr[1]],sTime[barArr[1]],valArr[1]-(valArr[1]-valArr[2])*R[6],sdate,stime,valArr[1]-(valArr[1]-valArr[2])*R[6]); TL_SetExtRight(TTL1,true); TL_SetExtRight(TTL2,true); TL_SetExtRight(TTL3,true); TL_SetExtRight(TTL4,true); TL_SetExtRight(TTL5,true); TL_SetExtRight(TTL6,true); TL_SetExtRight(TTL7,true); } 즐거운 하루되세요 > fill 님이 쓴 글입니다. > 제목 : 수정 부탁드립니다 > 안녕하십니까? 아래 수식지왕님 스윙파동선에 피보나치 등분선을 삽입 부탁드립니다. 상승파동과 하락파동을 나누어 수정부탁드립니다. --상승적용-- r[0] = 0; r[1] = 0.236; r[2] = 0.382; r[3] = 0.50; r[4] = 0.618; r[5] = 0.764; r[6] = 1; --하락적용--- r1[0] = 0; r1[1] = 0.236; r1[2] = 0.382; r1[3] = 0.50; r1[4] = 0.618; r1[5] = 0.764; r1[6] = 1; 그리고 파동선 완성시 소리 출력도 부탁드립니다. #==========================================# # 지표명 : 지그재그파동(기간값) # 작성자 : 수식지왕 # 블로그 : http://yahoosir.blog.me #==========================================# Input:length(12); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); Array:valArr[20](0),barArr[20](0),turnPntArr[20](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 19 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; // if 고점조건, 저점조건 동시 만족시 { // if 전환점배열의 현재(배열상 1번째)값이 고점이면 전환점구분 = 저점; // else if 전환점배열의 현재 값이 저점이면 전환점구분 = 고점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; turnPntBit = ""; If Condition1 and Condition2 Then { If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else If turnPntArr[1] == "Lo" Then turnPntBit = "Hi"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit == "Hi" or turnPntBit == "Lo" Then { If turnPntBit <> turnPntArr[1] Then { for j = 18 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } TL_SetSize(TL1,4); TL_SetColor(TL1,GREEN [출처] 최고,최저가 갱신에 의한 Zigzag파동선(파일첨부)|작성자 수식지왕
프로필 이미지

fill

2014-12-17 17:07:49

많은 시간을 내어서 고생하셨습니다. 감사드리며 잘 사용하겠습니다.