커뮤니티

원하는 지점에서 진입이 되지 않아서요 확인 부탁드려요~~

프로필 이미지
이형지
2020-01-24 11:09:56
403
글번호 135399
답변완료

첨부 이미지

나스닥 분봉 차트입니다. 왼쪽 진입은 제가 원하는 진입이아님니다. 오른쪽 진입이 제가 원하는 진입시점입니다. 가끔씩 왼쪽같이 일정부분 상승후 진입하는 결과가 있어 분석한결과는 다음과 같습니다. RSI(14) < 40 과 심리도 (35) < 38 이하일때 매수진입 버전인데요... 추가로 일봉의 RSI(8) > 45 이상일때만 진입 하는것을 목적인데요... 1. A: (일봉 RSI(8)>45) 와 B: (분봉 RSI(14)<40 & 심리도(35)<38) 의 교집합시 "하락틱수"(변수)_만큼 아래에서 매수 진입이 되어야 하는데 시뮬레이션 결과를 보면 그렇게 진행되는 것도 있으며 어떤것은 어느정도 상승한후에 진입되 는 결과가 있어서 나름대로 생각한 경과 두가지 오류 현상을 발견하였습니다. 1. B조건((분봉 RSI(14)<40 & 심리도(35)<38)) 을 만족하나 A조건((일봉 RSI(8)>45))을 만족하지 않을 때 B조건이 충족되지 않는 상태가 되더라도 A조건이 만족되는 시점에 매수 진입함. (A조건과 B조건의 교집합이 안되더라도 A조건이 나중에 충족되어 버리면 진입하게됨) 아마도 조건만족후 일정하락폭이하발생시 진입이라는 조건때문에 생기는 현상이라고 추정 ) --> 그게 어느 정도 상승하게되는후 매수진하게됨., 조건만족시 일정폭 하락 시점 진입할때는 B조건이 충족되지 않아도 됨다는 전제가 있음 이부분을 특히 신경 써주셨으면 합니다. ==> 2. 위에 해당 되는 것은 하락틱수의 변수의 값이 적용되지 않음 일단 A와 B조건을 만족할때 하락틱수 만큼 아래에서 진입하는 수식 수정 부탁드려요 그리고 기타 다른 기능은 유지하는 조건입니다. (1) A,B조건을 만족한후 하락틱수만큼 하락하지 않는 경우 초기화 (7) 일자만큼 경과된경우 초기화 되는 기능 (2) 나머지 기능도 다 동일하게 유지(즉시손절1.본전청산1등 발생시 당일 매매 중지 등등) 사용 수식 --- 진입수식까지만 기재하였습니다. Input : RSIPeriod(14),RSI매수값(40),SimPeriod(35),심리도값(38); Input : 초기화(7); Input : CCI기간(30),CCI값(350); Input : 하락틱수(50); Input : RSIPeriod1(8),A(45); var : cnt(0),SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIVv(0); Array : C1[100](0); var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0); CCIv = CCI(CCI기간); RSIV = RSI(RSIPeriod); Simri = Simrido(SimPeriod); if Bdate != Bdate[1] Then { for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; } C1[0] = C; If idx == RSIPeriod1+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod1 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod1; DownAvg = DownSum / RSIPeriod1; } If idx > RSIPeriod1+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1; DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1; } If UpAvg + DownAvg <> 0 Then RSIvv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIvv = 0; if bdate != bdate[1] Then { Entry = 0; Condition2 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then Condition2 = false; Condition1 = RSIv < RSI매수값 and Simri < 심리도값; if bdate != bdate[1] Then { DD = DD+1; if var2 > 0 and DD == var2+초기화 Then BuySetup = false; } if BuySetup == false and Condition1 == true and Condition1[1] == false Then { var1 = C; var2 = DD; BuySetup = true; } if Condition2 == true and MarketPosition == 0 and BuySetup == true and RSIVV > A Then buy("매수",AtLimit,var1-PriceScale*하락틱수);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-01-28 11:24:04

안녕하세요 예스스탁입니다. Input : RSIPeriod(14),RSI매수값(40),SimPeriod(35),심리도값(38); Input : 초기화(7); Input : CCI기간(30),CCI값(350); Input : 하락틱수(50); Input : RSIPeriod1(8),A(45); var : cnt(0),SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIVv(0); Array : C1[100](0); var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0); CCIv = CCI(CCI기간); RSIV = RSI(RSIPeriod); Simri = Simrido(SimPeriod); if Bdate != Bdate[1] Then { for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; } C1[0] = C; If idx == RSIPeriod1+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod1 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod1; DownAvg = DownSum / RSIPeriod1; } If idx > RSIPeriod1+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1; DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1; } If UpAvg + DownAvg <> 0 Then RSIvv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIvv = 0; if bdate != bdate[1] Then { Entry = 0; Condition2 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then Condition2 = false; Condition1 = RSIv < RSI매수값 and Simri < 심리도값 and RSIVV > A; if bdate != bdate[1] Then { DD = DD+1; if var2 > 0 and DD == var2+초기화 Then BuySetup = false; } if BuySetup == false and Condition1 == true and Condition1[1] == false Then { var1 = C; var2 = DD; BuySetup = true; } if Condition2 == true and MarketPosition == 0 and BuySetup == true Then buy("매수",AtLimit,var1-PriceScale*하락틱수); 즐거운 하루되세요 > 이형지 님이 쓴 글입니다. > 제목 : 원하는 지점에서 진입이 되지 않아서요 확인 부탁드려요~~ > 나스닥 분봉 차트입니다. 왼쪽 진입은 제가 원하는 진입이아님니다. 오른쪽 진입이 제가 원하는 진입시점입니다. 가끔씩 왼쪽같이 일정부분 상승후 진입하는 결과가 있어 분석한결과는 다음과 같습니다. RSI(14) < 40 과 심리도 (35) < 38 이하일때 매수진입 버전인데요... 추가로 일봉의 RSI(8) > 45 이상일때만 진입 하는것을 목적인데요... 1. A: (일봉 RSI(8)>45) 와 B: (분봉 RSI(14)<40 & 심리도(35)<38) 의 교집합시 "하락틱수"(변수)_만큼 아래에서 매수 진입이 되어야 하는데 시뮬레이션 결과를 보면 그렇게 진행되는 것도 있으며 어떤것은 어느정도 상승한후에 진입되 는 결과가 있어서 나름대로 생각한 경과 두가지 오류 현상을 발견하였습니다. 1. B조건((분봉 RSI(14)<40 & 심리도(35)<38)) 을 만족하나 A조건((일봉 RSI(8)>45))을 만족하지 않을 때 B조건이 충족되지 않는 상태가 되더라도 A조건이 만족되는 시점에 매수 진입함. (A조건과 B조건의 교집합이 안되더라도 A조건이 나중에 충족되어 버리면 진입하게됨) 아마도 조건만족후 일정하락폭이하발생시 진입이라는 조건때문에 생기는 현상이라고 추정 ) --> 그게 어느 정도 상승하게되는후 매수진하게됨., 조건만족시 일정폭 하락 시점 진입할때는 B조건이 충족되지 않아도 됨다는 전제가 있음 이부분을 특히 신경 써주셨으면 합니다. ==> 2. 위에 해당 되는 것은 하락틱수의 변수의 값이 적용되지 않음 일단 A와 B조건을 만족할때 하락틱수 만큼 아래에서 진입하는 수식 수정 부탁드려요 그리고 기타 다른 기능은 유지하는 조건입니다. (1) A,B조건을 만족한후 하락틱수만큼 하락하지 않는 경우 초기화 (7) 일자만큼 경과된경우 초기화 되는 기능 (2) 나머지 기능도 다 동일하게 유지(즉시손절1.본전청산1등 발생시 당일 매매 중지 등등) 사용 수식 --- 진입수식까지만 기재하였습니다. Input : RSIPeriod(14),RSI매수값(40),SimPeriod(35),심리도값(38); Input : 초기화(7); Input : CCI기간(30),CCI값(350); Input : 하락틱수(50); Input : RSIPeriod1(8),A(45); var : cnt(0),SigSum(0),count2(0),RSIsig(0); Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0); var : idx(0), PreUpAvg(0), preDownAvg(0),RSIVv(0); Array : C1[100](0); var : CCIv(0),RSIv(0),Simri(0),BuySetup(false),DD(0),entry(0); CCIv = CCI(CCI기간); RSIV = RSI(RSIPeriod); Simri = Simrido(SimPeriod); if Bdate != Bdate[1] Then { for cnt = 1 to 99 { C1[cnt] = C1[cnt-1][1]; } PreUpAvg = UpAvg[1]; preDownAvg = DownAvg[1]; idx = idx + 1; } C1[0] = C; If idx == RSIPeriod1+2 Then { UpSum = 0; DownSum = 0; For Counter = 0 To RSIPeriod1 - 1 { UpAmt = C1[Counter] - C1[Counter+1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpSum = UpSum + UpAmt; DownSum = DownSum + DownAmt; } UpAvg = UpSum / RSIPeriod1; DownAvg = DownSum / RSIPeriod1; } If idx > RSIPeriod1+2 Then { UpAmt = C1[0] - C1[1]; If UpAmt >= 0 Then DownAmt = 0; Else { DownAmt = -UpAmt; UpAmt = 0; } UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1; DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1; } If UpAvg + DownAvg <> 0 Then RSIvv = 100 * UpAvg / (UpAvg + DownAvg); Else RSIvv = 0; if bdate != bdate[1] Then { Entry = 0; Condition2 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if TotalTrades > TotalTrades[1] and (IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then Condition2 = false; Condition1 = RSIv < RSI매수값 and Simri < 심리도값; if bdate != bdate[1] Then { DD = DD+1; if var2 > 0 and DD == var2+초기화 Then BuySetup = false; } if BuySetup == false and Condition1 == true and Condition1[1] == false Then { var1 = C; var2 = DD; BuySetup = true; } if Condition2 == true and MarketPosition == 0 and BuySetup == true and RSIVV > A Then buy("매수",AtLimit,var1-PriceScale*하락틱수);