커뮤니티
수식 좀 봐 주십시요, 감사합니다.
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%수익이 발생하면 전량 청산
(손실일 때는 청산하지 않음)
다음글