커뮤니티

시스템식 질문입니다.

프로필 이미지
띠가
2011-09-05 20:50:44
503
글번호 42501
답변완료
죄송합니다. 제가 전화드리기가 힘들어서.. 다시한번 설명드리오니 참고하셔서 도움 부탁드립니다. 제가 "두번연속 수익이 발생하면 다음 신호는 무시하는 수식을 좀 알려주세요." 라고 처음 질문을 드렸습니다. 그래서 예스스탁에서 주신 답변이 아래 수식입니다. ---------------------------------------------------------------------------------- Condition1 = ExitDate(1) == sdate and ExitDate(2) == sdate And PositionProfit(1) > 0 and PositionProfit(2) > 0; #2번연속 수익이 아닐때 if Condition1 == false And 진입조건 Then buy(); #2번연속 수익일 때 if Condition1 == true And 진입조건 and countif(진입조건,BarsSinceExit(1)) == 2 Then buy(); ---------------------------------------------------------------------------------- 이 수식이었습니다. 아래는 답변을 주신 위 수식을 진입 조건에 첨가하여 작성해본 시스템입니다. ---------------------------------------------------------------------------------- input : N(1),RangeMult(0.5), RangeMult2(0.5) ; var : count(0),va1(0),va2(0),va3(0),PreRange(0), PreRange2(0), ChUp(0), ChDn(0), ExitL(0), ExitS(0), cont(0); PreRange = (dayHigh(1)-dayLow(1))*RangeMult; PreRange2 = (dayHigh(1)-dayLow(1))*RangeMult2; ChUp = dayOpen + PreRange; ChDn = dayOpen - PreRange; ExitL = dayHigh - PreRange2; ExitS = dayLow + PreRange2; va1 = int(date/100)-int(date/10000)*100; va2 = date - int(date/100)*100; va3 = DayOfWeek(date); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } # 진입 Condition1 = ExitDate(1) == sdate and ExitDate(2) == sdate And PositionProfit(1) > 0 and PositionProfit(2) > 0; if Condition1 == false And CrossUp(c,chup) and count < N Then buy(); if Condition1 == true And CrossUp(c,chup) and count < N and countif(CrossUp(c,chup) and count < N,BarsSinceExit(1)) == 2 Then buy(); #청산 If CrossDown(c,ExitL) Then ExitLong(); if MarketPosition == 1 Then SetstopTrailing(5,PRICESCALE*20,pointstop,0); SetStopLoss(0.5,pointstop); #당일청산 if va1%3 == 0 and va2 >= 8 and va2 <= 14 and va3 == 4 then SetStopEndofday(144900); Else SetStopEndofday(150400); ---------------------------------------------------------------------------------- 근데 답변을 주신 수식을 첨부하기 전 수식이 아래 진입조건 인데.. 두개다 적용해보니 동일한 결과가 나오네요..ㅠ ---------------------------------------------------------------------------------- # 진입 if CrossUp(c,chup) and count < N Then buy(); ---------------------------------------------------------------------------------- 왜 이런걸까요? 제가 답변주신 수식을 잘못이용한 것인가요? 그리고 하루 1회만 진입하는 시스템인데.. ExitLong SetstopTrailing SetStopLoss 위 3가지의 청산식으로 수익이 발생하는 경우에만 2회연속 수익시 다음에 발생하는 신호를 무시하고 신호가 무시된 날은 거래를 하지 않는 방법을 알고 싶습니다. ( SetStopEndofday 청산은 수익이라도 2회연속 조건에는 포함하지 않고 싶습니다. )
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-09-06 13:34:58

안녕하세요 예스스탁입니다. Condition1 = ExitDate(1) == sdate and ExitDate(2) == sdate And PositionProfit(1) > 0 and PositionProfit(2) > 0; #2번연속 수익이 아닐때 if Condition1 == false And 진입조건 Then buy(); #2번연속 수익일 때 if Condition1 == true And 진입조건 and countif(진입조건,BarsSinceExit(1)) == 2 Then buy(); 위식은 하루에 2번 수익이 발생하면 그날 한번의 거래를 쉬는 식이고 기존의 식은 하루에 한번의 거래를 하는 식입니다. 그러므로 하루에 한번만 거래가 일어나는 식에 위식의 첨가는 의미가 없습니다. 당일날 거래가 아닌 연속된 거래에서 2번연속 수익이면 다음 거래를 쉬게 하려면 수식을 다르게 작성해야 합니다. input : N(1),RangeMult(0.5), RangeMult2(0.5) ; var : count(0),va1(0),va2(0),va3(0),PreRange(0), PreRange2(0), ChUp(0), ChDn(0), ExitL(0), ExitS(0), cont(0); PreRange = (dayHigh(1)-dayLow(1))*RangeMult; PreRange2 = (dayHigh(1)-dayLow(1))*RangeMult2; ChUp = dayOpen + PreRange; ChDn = dayOpen - PreRange; ExitL = dayHigh - PreRange2; ExitS = dayLow + PreRange2; va1 = int(date/100)-int(date/10000)*100; va2 = date - int(date/100)*100; va3 = DayOfWeek(date); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } Condition1 = PositionProfit(1) > 0 and PositionProfit(2) > 0 ; # 진입 if Condition1 == false and CrossUp(c,chup) and count < N Then{ buy("b1"); } # 진입 if Condition1 == True and CrossUp(c,chup) and count < N Then{ value88 = sdate; value99 = value88[1]; if value88 > value99 and value99 > ExitDate(1) Then buy("b2"); } #청산 If CrossDown(c,ExitL) Then ExitLong(); SetstopTrailing(5,PRICESCALE*20,pointstop,0); SetStopLoss(0.5,pointstop); #당일청산 if va1%3 == 0 and va2 >= 8 and va2 <= 14 and va3 == 4 then SetStopEndofday(144900); Else SetStopEndofday(150400); 즐거운 하루되세요 > 띠가 님이 쓴 글입니다. > 제목 : 시스템식 질문입니다. > 죄송합니다. 제가 전화드리기가 힘들어서.. 다시한번 설명드리오니 참고하셔서 도움 부탁드립니다. 제가 "두번연속 수익이 발생하면 다음 신호는 무시하는 수식을 좀 알려주세요." 라고 처음 질문을 드렸습니다. 그래서 예스스탁에서 주신 답변이 아래 수식입니다. ---------------------------------------------------------------------------------- Condition1 = ExitDate(1) == sdate and ExitDate(2) == sdate And PositionProfit(1) > 0 and PositionProfit(2) > 0; #2번연속 수익이 아닐때 if Condition1 == false And 진입조건 Then buy(); #2번연속 수익일 때 if Condition1 == true And 진입조건 and countif(진입조건,BarsSinceExit(1)) == 2 Then buy(); ---------------------------------------------------------------------------------- 이 수식이었습니다. 아래는 답변을 주신 위 수식을 진입 조건에 첨가하여 작성해본 시스템입니다. ---------------------------------------------------------------------------------- input : N(1),RangeMult(0.5), RangeMult2(0.5) ; var : count(0),va1(0),va2(0),va3(0),PreRange(0), PreRange2(0), ChUp(0), ChDn(0), ExitL(0), ExitS(0), cont(0); PreRange = (dayHigh(1)-dayLow(1))*RangeMult; PreRange2 = (dayHigh(1)-dayLow(1))*RangeMult2; ChUp = dayOpen + PreRange; ChDn = dayOpen - PreRange; ExitL = dayHigh - PreRange2; ExitS = dayLow + PreRange2; va1 = int(date/100)-int(date/10000)*100; va2 = date - int(date/100)*100; va3 = DayOfWeek(date); Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } # 진입 Condition1 = ExitDate(1) == sdate and ExitDate(2) == sdate And PositionProfit(1) > 0 and PositionProfit(2) > 0; if Condition1 == false And CrossUp(c,chup) and count < N Then buy(); if Condition1 == true And CrossUp(c,chup) and count < N and countif(CrossUp(c,chup) and count < N,BarsSinceExit(1)) == 2 Then buy(); #청산 If CrossDown(c,ExitL) Then ExitLong(); if MarketPosition == 1 Then SetstopTrailing(5,PRICESCALE*20,pointstop,0); SetStopLoss(0.5,pointstop); #당일청산 if va1%3 == 0 and va2 >= 8 and va2 <= 14 and va3 == 4 then SetStopEndofday(144900); Else SetStopEndofday(150400); ---------------------------------------------------------------------------------- 근데 답변을 주신 수식을 첨부하기 전 수식이 아래 진입조건 인데.. 두개다 적용해보니 동일한 결과가 나오네요..ㅠ ---------------------------------------------------------------------------------- # 진입 if CrossUp(c,chup) and count < N Then buy(); ---------------------------------------------------------------------------------- 왜 이런걸까요? 제가 답변주신 수식을 잘못이용한 것인가요? 그리고 하루 1회만 진입하는 시스템인데.. ExitLong SetstopTrailing SetStopLoss 위 3가지의 청산식으로 수익이 발생하는 경우에만 2회연속 수익시 다음에 발생하는 신호를 무시하고 신호가 무시된 날은 거래를 하지 않는 방법을 알고 싶습니다. ( SetStopEndofday 청산은 수익이라도 2회연속 조건에는 포함하지 않고 싶습니다. )