커뮤니티

수식 좀 봐 주십시요, 감사합니다.

프로필 이미지
쌀사비팔
2010-01-14 14:52:49
609
글번호 27449
답변완료
점선 아래는 답변 주신 내용입니다. 차트에 적용을 해 봤는데요. -매수 후 -20%주기로, 평균 5%수익이 날때까지 물타기이기 때문에, “성능 보고서”의 최종부분 외에는 손실이 없어야 하는데 손실이 나타납니다. 이를 확인해 보니, 1회이상 물타기가 진행된 후 청산이 된 곳이, 전체 매수가 평균이 5%수익이 미치지 않을 때 청산이 진행되어 나타난 현상입니다. -그리고, 물타기가 1회정도 되다가 안되는 것 같은데, 매수가 평균 5%이상 수익이 날때까지 -20% 단위로 계속 반복(10회정도...) 되게 해 주십시오... -피라미딩은 다른 진입신호 허용으로 했습니다. 모든신호로 바꿔도 변화가 없었고요... 감사합니다. ----------------------------------------------------------- Inputs: Length(20); Variables: Sum(0), Counter(0), MD(0), Avgvalue(0),cnt(0),sum1(0),CCIV(0); Variables: preSum(0), preCounter(0), preMD(0), preAvgvalue(0),precnt(0),presum1(0),preCCIV(0); if DayClose(Length) > 0 Then{ sum1 = 0; for cnt = 0 to Length-1{ sum1 = sum1 +(dayhigh(cnt)+daylow(cnt)+DayClose(cnt)); } Avgvalue = sum1/Length; MD = 0; For counter = 0 To Length - 1 Begin MD = MD + Abs(dayhigh(counter) + daylow(counter) + DayClose(counter) - Avgvalue); End; MD = MD / Length; If MD == 0 Then CCIv = 0; Else CCIv = (dayhigh + daylow + DayClose - Avgvalue) / (0.015 * MD); } Else CCIv = 0; if DayClose(Length+1) > 0 Then{ presum1 = 0; for precnt = 1 to Length{ presum1 = presum1 +(dayhigh(precnt)+daylow(precnt)+DayClose(precnt)); } preAvgvalue = presum1/Length; preMD = 0; For precounter = 1 To Length Begin preMD = preMD + Abs(dayhigh(precounter) + daylow(precounter) + DayClose(precounter) - preAvgvalue); End; preMD = preMD / Length; If preMD == 0 Then preCCIv = 0; Else preCCIv = (dayhigh(1) + daylow(1) + DayClose(1) - preAvgvalue) / (0.015 * PreMD); } Else preCCIv = 0; if CodeCategory == 1 Then{ var1 = int(int(200000/C)/10)*10; } if CodeCategory == 2 Then{ var1 = int(200000/C); } if stime == 150000 and CCIV > -100 and PreCCIV < -100 and MarketPosition == 0 Then buy("b1",AtMarket); if MarketPosition == 1 Then{ if CurrentEntries == 1 Then buy("b2",atlimit,EntryPrice*0.8,var1); if CurrentEntries == 1 Then buy("b3",atlimit,EntryPrice*0.6,var1); if CurrentEntries == 1 Then buy("b4",atlimit,EntryPrice*0.4,var1); if CurrentEntries == 1 Then buy("b5",atlimit,EntryPrice*0.2,var1); exitlong("bx",atlimit,AvgEntryPrice*1.05); } > <현물> *매수조건(분봉에서 운용 예정) -일봉상 CCI(20)이 -100을 상향 돌파하면, 다음날 시가에 최초 매수 (최초 매수가 된 이후 청산이 되지 않은 상태에서는, CCI -100을 상향 돌파해도 매수하지 않음) -최초 매수가 대비 20% 하락하면 추가매수 - “ 40% 하락하면 추가매수 - “ 60% 하락하면 추가매수... 계속 -매수 단위 금액은 20만원 *매도조건 -매수금액. 매수가를 총 평균하여 5%수익이 발생하면 전량 청산 (손실일 때는 청산하지 않음)
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2010-01-14 15:44:39

안녕하세요 예스스탁입니다. 죄송합니다. 진입이 최종 2번만 되게 작성했었습니다. 식을 수정했습니다. Inputs: Length(20); Variables: Sum(0), Counter(0), MD(0), Avgvalue(0),cnt(0),sum1(0),CCIV(0); Variables: preSum(0), preCounter(0), preMD(0), preAvgvalue(0),precnt(0),presum1(0),preCCIV(0); if DayClose(Length) > 0 Then{ sum1 = 0; for cnt = 0 to Length-1{ sum1 = sum1 +(dayhigh(cnt)+daylow(cnt)+DayClose(cnt)); } Avgvalue = sum1/Length; MD = 0; For counter = 0 To Length - 1 Begin MD = MD + Abs(dayhigh(counter) + daylow(counter) + DayClose(counter) - Avgvalue); End; MD = MD / Length; If MD == 0 Then CCIv = 0; Else CCIv = (dayhigh + daylow + DayClose - Avgvalue) / (0.015 * MD); } Else CCIv = 0; if DayClose(Length+1) > 0 Then{ presum1 = 0; for precnt = 1 to Length{ presum1 = presum1 +(dayhigh(precnt)+daylow(precnt)+DayClose(precnt)); } preAvgvalue = presum1/Length; preMD = 0; For precounter = 1 To Length Begin preMD = preMD + Abs(dayhigh(precounter) + daylow(precounter) + DayClose(precounter) - preAvgvalue); End; preMD = preMD / Length; If preMD == 0 Then preCCIv = 0; Else preCCIv = (dayhigh(1) + daylow(1) + DayClose(1) - preAvgvalue) / (0.015 * PreMD); } Else preCCIv = 0; if CodeCategory == 1 Then{ var1 = int(int(200000/C)/10)*10; } if CodeCategory == 2 Then{ var1 = int(200000/C); } if stime == 150000 and CCIV > -100 and PreCCIV < -100 and MarketPosition == 0 Then buy("b1",AtMarket); if MarketPosition == 1 Then{ if CurrentEntries == 1 Then buy("b2",atlimit,EntryPrice*0.8,var1); if CurrentEntries == 2 Then buy("b3",atlimit,EntryPrice*0.6,var1); if CurrentEntries == 3 Then buy("b4",atlimit,EntryPrice*0.4,var1); if CurrentEntries == 4 Then buy("b5",atlimit,EntryPrice*0.2,var1); exitlong("bx",atlimit,AvgEntryPrice*1.05); } 20% 단위이기 때문에 최종5회까지뿐이 누적이 되지 않는 구조입니다. 참고하시기 바랍니다. 즐거운 하루되세요 > 쌀사비팔 님이 쓴 글입니다. > 제목 : 수식 좀 봐 주십시요, 감사합니다. > 점선 아래는 답변 주신 내용입니다. 차트에 적용을 해 봤는데요. -매수 후 -20%주기로, 평균 5%수익이 날때까지 물타기이기 때문에, “성능 보고서”의 최종부분 외에는 손실이 없어야 하는데 손실이 나타납니다. 이를 확인해 보니, 1회이상 물타기가 진행된 후 청산이 된 곳이, 전체 매수가 평균이 5%수익이 미치지 않을 때 청산이 진행되어 나타난 현상입니다. -그리고, 물타기가 1회정도 되다가 안되는 것 같은데, 매수가 평균 5%이상 수익이 날때까지 -20% 단위로 계속 반복(10회정도...) 되게 해 주십시오... -피라미딩은 다른 진입신호 허용으로 했습니다. 모든신호로 바꿔도 변화가 없었고요... 감사합니다. ----------------------------------------------------------- Inputs: Length(20); Variables: Sum(0), Counter(0), MD(0), Avgvalue(0),cnt(0),sum1(0),CCIV(0); Variables: preSum(0), preCounter(0), preMD(0), preAvgvalue(0),precnt(0),presum1(0),preCCIV(0); if DayClose(Length) > 0 Then{ sum1 = 0; for cnt = 0 to Length-1{ sum1 = sum1 +(dayhigh(cnt)+daylow(cnt)+DayClose(cnt)); } Avgvalue = sum1/Length; MD = 0; For counter = 0 To Length - 1 Begin MD = MD + Abs(dayhigh(counter) + daylow(counter) + DayClose(counter) - Avgvalue); End; MD = MD / Length; If MD == 0 Then CCIv = 0; Else CCIv = (dayhigh + daylow + DayClose - Avgvalue) / (0.015 * MD); } Else CCIv = 0; if DayClose(Length+1) > 0 Then{ presum1 = 0; for precnt = 1 to Length{ presum1 = presum1 +(dayhigh(precnt)+daylow(precnt)+DayClose(precnt)); } preAvgvalue = presum1/Length; preMD = 0; For precounter = 1 To Length Begin preMD = preMD + Abs(dayhigh(precounter) + daylow(precounter) + DayClose(precounter) - preAvgvalue); End; preMD = preMD / Length; If preMD == 0 Then preCCIv = 0; Else preCCIv = (dayhigh(1) + daylow(1) + DayClose(1) - preAvgvalue) / (0.015 * PreMD); } Else preCCIv = 0; if CodeCategory == 1 Then{ var1 = int(int(200000/C)/10)*10; } if CodeCategory == 2 Then{ var1 = int(200000/C); } if stime == 150000 and CCIV > -100 and PreCCIV < -100 and MarketPosition == 0 Then buy("b1",AtMarket); if MarketPosition == 1 Then{ if CurrentEntries == 1 Then buy("b2",atlimit,EntryPrice*0.8,var1); if CurrentEntries == 1 Then buy("b3",atlimit,EntryPrice*0.6,var1); if CurrentEntries == 1 Then buy("b4",atlimit,EntryPrice*0.4,var1); if CurrentEntries == 1 Then buy("b5",atlimit,EntryPrice*0.2,var1); exitlong("bx",atlimit,AvgEntryPrice*1.05); } > <현물> *매수조건(분봉에서 운용 예정) -일봉상 CCI(20)이 -100을 상향 돌파하면, 다음날 시가에 최초 매수 (최초 매수가 된 이후 청산이 되지 않은 상태에서는, CCI -100을 상향 돌파해도 매수하지 않음) -최초 매수가 대비 20% 하락하면 추가매수 - “ 40% 하락하면 추가매수 - “ 60% 하락하면 추가매수... 계속 -매수 단위 금액은 20만원 *매도조건 -매수금액. 매수가를 총 평균하여 5%수익이 발생하면 전량 청산 (손실일 때는 청산하지 않음)