커뮤니티

아래와 비슷하지만 부탁드립니다.

프로필 이미지
maker
2020-03-04 17:02:38
389
글번호 136583
답변완료
Input:변동률(0.2),레벨(4),선두께(3); Var:행(0),열(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4),cnt(0), 고라인기울기(0),고라인시작(0),고라인끝(0), 저라인기울기(0),저라인시작(0),저라인끝(0), 시작일(0),시작시각(0); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[3](0),TL1[2](0),고0[10,4](0),저0[10,4](0),결과리턴[8](0); //=========================================================// If 레벨 <= 4 Then { Var1 = 레벨 * 10; Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]); TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]); TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,Var1 + 열]; 저0[행,열] = 저[행,Var1 + 열]; } } Value2 = YHS_Channel(고0,저0,결과리턴); If Value2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],선두께); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],선두께); } cnt = 0; Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } } If cnt > 0 and cnt < (레벨 + 1) * 20 Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If 고라인끝 > 0 Then Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); If 저라인끝 > 0 Then Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } =================================================================================== 제가 드린 수식을 바탕으로 설명해달라고 하셔서 문장으로 적습니다. 위 지표를 아래 문장을 시스템수식으로 변경 부탁드립니다. * 매수 cnt > 0 and cnt < (레벨 + 1) * 20 일 때, 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; 1. Data1의 종가가 고라인끝 위에 위치하고 있을 때 2. Data2의 현재가가 고라인끝 위에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 위에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 위에 위치해 있을 때 * 매도 cnt = 0 일 때, 1. Data1의 종가가 저라인끝 아래에 위치하고 있을 때 2. Data2의 현재가가 저라인끝 아래에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 아래에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 아래에 위치해 있을 때 * 익절 진입가 대비 20틱 (틱수는 변경 가능하도록 부탁드립니다) * 손절 진입가 대비 15틱 (틱수는 변경 가능하도록 부탁드립니다) 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-03-05 13:31:57

안녕하세요 예스스탁입니다. Input:변동률(0.2),레벨(4),선두께(3),P(20),익절틱수(20),손절틱수(20);; Var:행(0,data1),열(0,data1),고점(1,data1),저점(-1,data1),신규(1,data1),연장(2,data1),연속(3,data1),삼선(4,data1),cnt(0,data1), 고라인기울기(0,data1),고라인시작(0,data1),고라인끝(0,data1), 저라인기울기(0,data1),저라인시작(0,data1),저라인끝(0,data1), 시작일(0,data1),시작시각(0,data1),v1(0,data1),val1(0,data1),val2(0,data1); Array:고[10,44](0,data1),저[10,44](0,data1), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0,data1),처리구분[5](0,data1),TL[3](0,data1),TL1[2](0,data1),고0[10,4](0,data1),저0[10,4](0,data1),결과리턴[8](0,data1); //=========================================================// If 레벨 <= 4 Then { v1 = 레벨 * 10; val1 = data1(ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분)); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1]); TL[1] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); TL[2] = TL_New(저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,v1 + 3],고[2,v1 + 4],고[2,v1 + 1], 저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1]); TL[1] = TL_New(저[2,v1 + 3],저[2,v1 + 4],저[2,v1 + 1], 고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1]); TL[2] = TL_New(고[1,v1 + 3],고[1,v1 + 4],고[1,v1 + 1], 저[1,v1 + 3],저[1,v1 + 4],저[1,v1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,v1 + 열]; 저0[행,열] = 저[행,v1 + 열]; } } val2 = data1(YHS_Channel(고0,저0,결과리턴)); If val2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],선두께); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],선두께); } cnt = 0; #Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); #Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); if max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝) and max(고라인끝,저라인끝) >= data2(c) and data2(c) >= min(고라인끝,저라인끝) and data2(c< ma(C,P)) and data3(C<C[1]) Then sell(); } } If cnt > 0 and cnt < (레벨 + 1) * 20 Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; #If 고라인끝 > 0 Then Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); #If 저라인끝 > 0 Then Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); if max(고라인끝,저라인끝) >= data1(c) and data1(c) >= min(고라인끝,저라인끝) and max(고라인끝,저라인끝) >= data2(c) and data2(c) >= min(고라인끝,저라인끝) and data2(c> ma(C,P)) and data3(C>C[1]) Then buy(); } SetStopProfittarget(PriceScale*익절틱수,PointStop); SetStopLoss(PriceScale*손절틱수,PointStop); 즐거운 하루되세요 > maker 님이 쓴 글입니다. > 제목 : 아래와 비슷하지만 부탁드립니다. > Input:변동률(0.2),레벨(4),선두께(3); Var:행(0),열(0),고점(1),저점(-1),신규(1),연장(2),연속(3),삼선(4),cnt(0), 고라인기울기(0),고라인시작(0),고라인끝(0), 저라인기울기(0),저라인시작(0),저라인끝(0), 시작일(0),시작시각(0); Array:고[10,44](0),저[10,44](0), // 열번호 : 1=가격,2=Index,3=sDate,4=sTime,11=가격,12=Index,13=sDate,14=sTime 최종상태[5](0),처리구분[5](0),TL[3](0),TL1[2](0),고0[10,4](0),저0[10,4](0),결과리턴[8](0); //=========================================================// If 레벨 <= 4 Then { Var1 = 레벨 * 10; Value1 = ChgRateZigZag301(H,L,변동률,고,저,최종상태,처리구분); If 최종상태[레벨] == 고점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1]); TL[1] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); TL[2] = TL_New(저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); } } If 최종상태[레벨] == 저점 Then { If 처리구분[레벨] == 신규 Then TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연장 Then TL_SetEnd(TL[2],저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); If 처리구분[레벨] == 연속 Then { TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } If 처리구분[레벨] == 삼선 Then { TL[0] = TL_New(고[2,Var1 + 3],고[2,Var1 + 4],고[2,Var1 + 1], 저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1]); TL[1] = TL_New(저[2,Var1 + 3],저[2,Var1 + 4],저[2,Var1 + 1], 고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1]); TL[2] = TL_New(고[1,Var1 + 3],고[1,Var1 + 4],고[1,Var1 + 1], 저[1,Var1 + 3],저[1,Var1 + 4],저[1,Var1 + 1]); } } } Else { Alert("4레벨까지만 가능합니다!!"); } //=========================================================// cnt = cnt + 1; If (처리구분[레벨] == 신규 or 처리구분[레벨] == 연속) Then { For 행 = 1 To 10 { For 열 = 1 To 4 { // 추세채널을 판단할 레벨만 사용자함수에 전달 고0[행,열] = 고[행,Var1 + 열]; 저0[행,열] = 저[행,Var1 + 열]; } } Value2 = YHS_Channel(고0,저0,결과리턴); If Value2 == 1 Then { // 추세대가 형성되었다면 시작일 = 결과리턴[0]; 시작시각 = 결과리턴[1]; 고라인기울기 = 결과리턴[2]; 고라인시작 = 결과리턴[3]; 고라인끝 = 결과리턴[4]; 저라인기울기 = 결과리턴[5]; 저라인시작 = 결과리턴[6]; 저라인끝 = 결과리턴[7]; If 고라인시작[1] == 고라인시작 and 고라인기울기[1] == 고라인기울기 Then { // 겹쳐 그리지 않도록 TL_SetEnd(TL1[0],sDate,sTime,고라인끝); } Else { TL1[0] = TL_New(시작일,시작시각,고라인시작,sDate,sTime,고라인끝); TL_SetColor(TL1[0],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[0],선두께); } If 저라인시작[1] == 저라인시작 and 저라인기울기[1] == 저라인기울기 Then { TL_SetEnd(TL1[1],sDate,sTime,저라인끝); } Else { TL1[1] = TL_New(시작일,시작시각,저라인시작,sDate,sTime,저라인끝); TL_SetColor(TL1[1],IFF(고라인기울기<0,RED,BLUE)); TL_SetSize(TL1[1],선두께); } cnt = 0; Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } } If cnt > 0 and cnt < (레벨 + 1) * 20 Then { 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; If 고라인끝 > 0 Then Plot1(고라인끝,"고점추세선",IFF(고라인기울기<0,RED,BLUE)); If 저라인끝 > 0 Then Plot2(저라인끝,"저점추세선",IFF(고라인기울기<0,RED,BLUE)); } =================================================================================== 제가 드린 수식을 바탕으로 설명해달라고 하셔서 문장으로 적습니다. 위 지표를 아래 문장을 시스템수식으로 변경 부탁드립니다. * 매수 cnt > 0 and cnt < (레벨 + 1) * 20 일 때, 고라인끝 = 고라인끝 + 고라인기울기; 저라인끝 = 저라인끝 + 저라인기울기; 1. Data1의 종가가 고라인끝 위에 위치하고 있을 때 2. Data2의 현재가가 고라인끝 위에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 위에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 위에 위치해 있을 때 * 매도 cnt = 0 일 때, 1. Data1의 종가가 저라인끝 아래에 위치하고 있을 때 2. Data2의 현재가가 저라인끝 아래에 위치하고 있을 때 3. Data2의 종가가 이동평균선보다 아래에 있을 때 4. Data3의 현재가가 직전봉의 종가보다 아래에 위치해 있을 때 * 익절 진입가 대비 20틱 (틱수는 변경 가능하도록 부탁드립니다) * 손절 진입가 대비 15틱 (틱수는 변경 가능하도록 부탁드립니다) 부탁드립니다. 감사합니다.