커뮤니티

혼합 시스템 문의드립니다

프로필 이미지
곽민수
2016-07-21 00:13:24
293
글번호 100250
답변완료

첨부 이미지

1. input : 전환선기간(9),기준선기간(26),선행스팬2기간(20); Var : 전환선(0), 기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0); 전환선 = (highest(H,전환선기간)+lowest(L,전환선기간))/2; 기준선 = (highest(H,기준선기간)+lowest(L,기준선기간))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,선행스팬2기간)+lowest(L,선행스팬2기간))/2; Plot1(전환선, "전환선"); if 기준선 > C Then Plot2(기준선, "기준선",BLUE); Else Plot2(기준선, "기준선",RED); Plot3(후행스팬, "후행스팬"); Plot4(선행스팬1, "선행스팬1"); Plot5(선행스팬2, "선행스팬2"); 2. Input : Af(0.03), MaxAf(0.02); Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0); if count == 0 then //변수들의 초기화 { highval = High; lowval = Low; direction = 0; sar1 = 0; afval = 0; ep = 0; count = 1; } if(ep != 0 ) then // 추세가 진행중 { if(direction == 1) then // 상승추세이면 { ep = highval; sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산 if(high > highval) then // 신고가 발생 { highval = high; afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if( low < sar1) then // 추세변경(상승->하락) { // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의 direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; lowval = low; } } else // 하락 추세 { ep = lowval; // 하락추세에서는 EP로 저가 사용 sar1 = sar1 + afval*(ep-sar1); if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if(high > sar1) then // 추세 변경(하락->상승) { // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의 direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; highval = high; } } } else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산 { if(direction == 1) then // 상승 추세 { ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로 afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1); if ( high > highval) then // 신고가가 발생 { Highval = high; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } else // 하락추세 { ep = lowval; afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산 if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } } else // SAR 첨 시작 { if direction == 0 then // 추세가 없으므로 { if(c > c[1]) then // 상승추세로 시작 direction = 1; else if( c < c[1]) then // 하락추세로 시작 direction = -1; } else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작 { direction = -1; sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로 } } else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작 { direction = 1; sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로 } } lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로 highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장 } //처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid #if(sar1 != 0) then # User_Func_Sar = sar1; if sar1 > sar1[1] Then plot1(sar1,"파리볼릭",RED); else plot1(sar1,"파리볼릭",blue); 위 2가지 수식을 이용하여 만들어보고싶습니다 1. 1번 일목균형표에 선행스팬2 을 기준으로합니다 2번 파라볼릭 에서 이제 기준을 잡은뒤 파라볼릭or선행스팬2 가 동시에 충족될때 신호발생 사진상 1번이 진입포지션 사진상 2번이 청산포지션 사진상 3번이 스위칭 포지션 기준: 선행스팬2 위에 캔들봉이 완성될때 or 파라볼릭은 빨강색 일때 매수신호발생 사진상 1번 매도는 그반대 청산: 신호발생후 선행스팬2 선을 관통한 봉에 청산신호 발생 (파라볼릭은 유지중일때) 매도는 그반대 스위칭: 사진상 3번처럼 2개가 일치하는부분에서 스위칭발생 사진으로 첨부합니다 위내용
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-07-21 10:36:42

안녕하세요 예스스탁입니다. Input : Af(0.03), MaxAf(0.02); Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0); input : 전환선기간(9),기준선기간(26),선행스팬2기간(20); Var : 전환선(0), 기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0); if count == 0 then //변수들의 초기화 { highval = High; lowval = Low; direction = 0; sar1 = 0; afval = 0; ep = 0; count = 1; } if(ep != 0 ) then // 추세가 진행중 { if(direction == 1) then // 상승추세이면 { ep = highval; sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산 if(high > highval) then // 신고가 발생 { highval = high; afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if( low < sar1) then // 추세변경(상승->하락) { // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의 direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; lowval = low; } } else // 하락 추세 { ep = lowval; // 하락추세에서는 EP로 저가 사용 sar1 = sar1 + afval*(ep-sar1); if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if(high > sar1) then // 추세 변경(하락->상승) { // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의 direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; highval = high; } } } else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산 { if(direction == 1) then // 상승 추세 { ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로 afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1); if ( high > highval) then // 신고가가 발생 { Highval = high; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } else // 하락추세 { ep = lowval; afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산 if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } } else // SAR 첨 시작 { if direction == 0 then // 추세가 없으므로 { if(c > c[1]) then // 상승추세로 시작 direction = 1; else if( c < c[1]) then // 하락추세로 시작 direction = -1; } else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작 { direction = -1; sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로 } } else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작 { direction = 1; sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로 } } lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로 highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장 } //처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid #if(sar1 != 0) then # User_Func_Sar = sar1; 전환선 = (highest(H,전환선기간)+lowest(L,전환선기간))/2; 기준선 = (highest(H,기준선기간)+lowest(L,기준선기간))/2; 후행스팬 = C; 선행스팬1 = (전환선[25]+기준선[25])/2; 선행스팬2 = (highest(H,선행스팬2기간)[25]+lowest(L,선행스팬2기간)[25])/2; #매수진입(무포지션상태에서 2개조건 중 1개 이상 만족) if MarketPosition == 0 and (C > 선행스팬2 or sar1 > sar1[1]) Then buy(); #매도진입(무포지션상태에서 2개조건 중 1개 이상 만족) if MarketPosition == 0 and (C < 선행스팬2 or sar1 <= sar1[1]) Then sell(); #매도진입 후 매수로 스위칭(2개조건 모두만족) if MarketPosition == -1 and (C > 선행스팬2 and sar1 > sar1[1]) Then buy(); #매수진입후 매도로 스위칭(2개조건 모두만족) if MarketPosition == 1 and (C < 선행스팬2 and sar1 <= sar1[1]) Then sell(); if MarketPosition == 1 and CrossDown(c,선행스팬2) Then ExitLong(); if MarketPosition == -1 and CrossUp(c,선행스팬2) Then ExitShort(); 즐거운 하루되세요 > 곽민수 님이 쓴 글입니다. > 제목 : 혼합 시스템 문의드립니다 > 1. input : 전환선기간(9),기준선기간(26),선행스팬2기간(20); Var : 전환선(0), 기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0); 전환선 = (highest(H,전환선기간)+lowest(L,전환선기간))/2; 기준선 = (highest(H,기준선기간)+lowest(L,기준선기간))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,선행스팬2기간)+lowest(L,선행스팬2기간))/2; Plot1(전환선, "전환선"); if 기준선 > C Then Plot2(기준선, "기준선",BLUE); Else Plot2(기준선, "기준선",RED); Plot3(후행스팬, "후행스팬"); Plot4(선행스팬1, "선행스팬1"); Plot5(선행스팬2, "선행스팬2"); 2. Input : Af(0.03), MaxAf(0.02); Var : direction(0), sar1(0), afval(0), ep(0),lowval(0),highval(0),count(0); if count == 0 then //변수들의 초기화 { highval = High; lowval = Low; direction = 0; sar1 = 0; afval = 0; ep = 0; count = 1; } if(ep != 0 ) then // 추세가 진행중 { if(direction == 1) then // 상승추세이면 { ep = highval; sar1 = sar1 + afval*(ep-sar1); // 상승추세에서 SAR값 계산 if(high > highval) then // 신고가 발생 { highval = high; afval = afval+Af; // 상승추세에서 신고가가 발생했으므로 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if( low < sar1) then // 추세변경(상승->하락) { // 다음 SAR값을 계산할 때 필요한 전SAR값은 하락추세로 전환되기 직전의 direction = -1; // 최고가를 사용하므로 sar1 = ep (ep에는 highval 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; lowval = low; } } else // 하락 추세 { ep = lowval; // 하락추세에서는 EP로 저가 사용 sar1 = sar1 + afval*(ep-sar1); if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; if( afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } if(high > sar1) then // 추세 변경(하락->상승) { // 다음 SAR 값을 계산할 때 필요한 전SAR값은 상승추세로 전환되기 직전의 direction = 1; // 최저가를 사용하므로 sar1 = ep (ep에는 lowval값이 들어있다) sar1 = ep; // 추세가 변경되었으므로 가속변수 및 EP, highval 초기화 afval = 0; ep = 0; highval = high; } } } else if(sar1 != 0 && ep == 0) then //추세가 변경된후 첫번째 SAR계산 { if(direction == 1) then // 상승 추세 { ep = highval; // 상승추세에서는 신고가를 EP로 사용하므로 afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1); if ( high > highval) then // 신고가가 발생 { Highval = high; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } else // 하락추세 { ep = lowval; afval = Af; // 가속변수의 초기값인 AF(0.02) 적용 sar1 = sar1 + afval*(ep-sar1);// 하락추세에서 SAR 계산 if(low < lowval) then // 신저가 발생 { lowval = low; afval = afval + Af; // 가속변수 증가 if(afval >= MaxAf) then // 가속변수가 최대값과의 비교 (가속변수는 최대 가속값 보다 클 수 없다) afval = MaxAf; } } } else // SAR 첨 시작 { if direction == 0 then // 추세가 없으므로 { if(c > c[1]) then // 상승추세로 시작 direction = 1; else if( c < c[1]) then // 하락추세로 시작 direction = -1; } else if direction == 1 then // 상승추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if(c < c[1]) then // 추세 변경 (상승->하락) SAR 계산하기 시작 { direction = -1; sar1 = highval; // 하락추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최고가를 사용하므로 } } else if direction == -1 then // 하락추세(추세변경이 일어날 경우 SAR 계산하기 시작) { if( c > c[1]) then // 추세 변경 (하락->상승) SAR 계산하기 시작 { direction = 1; sar1 = lowval; // 상승추세로 전환시 다음 SAR값을 계산할 때 필요한 전 SAR값은 추세직전의 최저가를 사용하므로 } } lowval = min(low, lowval); // 추세 변경시 전 SAR값으로 최고가나 최저가가 필요하므로 highval = max(high,highval); // low, high를 전의 최고가, 최저가와 비교하여 최고가, 최저가를 저장 } //처음 시작할 때 다음 추세 변경이 일어날 때까지 SAR는 invalid #if(sar1 != 0) then # User_Func_Sar = sar1; if sar1 > sar1[1] Then plot1(sar1,"파리볼릭",RED); else plot1(sar1,"파리볼릭",blue); 위 2가지 수식을 이용하여 만들어보고싶습니다 1. 1번 일목균형표에 선행스팬2 을 기준으로합니다 2번 파라볼릭 에서 이제 기준을 잡은뒤 파라볼릭or선행스팬2 가 동시에 충족될때 신호발생 사진상 1번이 진입포지션 사진상 2번이 청산포지션 사진상 3번이 스위칭 포지션 기준: 선행스팬2 위에 캔들봉이 완성될때 or 파라볼릭은 빨강색 일때 매수신호발생 사진상 1번 매도는 그반대 청산: 신호발생후 선행스팬2 선을 관통한 봉에 청산신호 발생 (파라볼릭은 유지중일때) 매도는 그반대 스위칭: 사진상 3번처럼 2개가 일치하는부분에서 스위칭발생 사진으로 첨부합니다 위내용