답변완료
아래와 비슷하지만 부탁드립니다.
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틱 (틱수는 변경 가능하도록 부탁드립니다)
부탁드립니다.
감사합니다.
2020-03-04
388
글번호 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 일 때,
1. Data1의 종가가 고라인끝과 저라인끝 사이에 위치하고 있을 때
2. Data2의 현재가가 고라인끝과 저라인끝 사이에 위치하고 있을 때
3. Data2의 종가가 이동평균선보다 위에 있을 때
4. Data3의 현재가가 직전봉의 종가보다 위에 위치해 있을 때
* 매도
cnt > 0 and cnt < (레벨 + 1) * 20 일 때,
고라인끝 = 고라인끝 + 고라인기울기;
저라인끝 = 저라인끝 + 저라인기울기;
1. Data1의 종가가 고라인끝과 저라인끝 사이에 위치하고 있을 때
2. Data2의 현재가가 고라인끝과 저라인끝 사이에 위치하고 있을 때
3. Data2의 종가가 이동평균선보다 아래에 있을 때
4. Data3의 현재가가 직전봉의 종가보다 아래에 위치해 있을 때
* 익절
진입가 대비 20틱 (틱수는 변경 가능하도록 부탁드립니다)
* 손절
진입가 대비 15틱 (틱수는 변경 가능하도록 부탁드립니다)
부탁드립니다.
감사합니다.
+ 위 지표를 실행하기 위하여 필요한 파일은 첨부하여 올려놨습니다.
2020-03-04
433
글번호 136577
시스템