커뮤니티
섀넌의 도깨비전략
2011-12-10 06:47:46
875
글번호 45673
섀넌이란 사람이 개발한 전략인데 일정주기마다 현금비율과 주식비율을 1:1만큼 재조정하는 전략이 있습니다. 이걸 시스템화 시키려고 하는데 자꾸 문제가 생기네요.
처음엔 전체 자금의 반만큼 일단 매수를 하고 볼린저밴드의 상단에 닿으면 수익금의 반만큼 매도, 볼린저밴드의 하단에 닿으면 손실금의 반만큼 매수로 전략을 짤려고 합니다. 그러니까 포지션의 증감만 있을뿐 시장에서 벗어나는 일은 없는거죠.
아래의 수식이 제가만든건데 어디서 문제가 생긴건지 잘 모르겠습니다. 도와주세요
진입명 "첫매수"은 딱 한번만 나와야 하는데 주식을 일부 청산하자마자 나오네요. 진입명 "매수"도 작동이 안되고요.
그리고 시뮬레이션 차트에서 실현수익 말고도 미실현수익과 현재보유현금의 합계가 나타나게 할 방법은 없나요? 섀넌의 도깨비전략이 현금비중을 50%유지하는거라서....
---------------------------------------------------------------------------------
input : Period(20), Dv(2);
var : 초기자금(10000000), 현재자금(0),볼밴Up(0), 볼밴Down(0), 계약수(0), 매수계약수(0), 매도계약수(0) ;
볼밴Up = BollBandUp(Period,DV) ;
볼밴Down = BollBandDown(Period,DV) ;
현재자금 = 초기자금 + NetProfit;
매수계약수 = OpenPositionProfit*-1/2/C;
매도계약수 = OpenPositionProfit/2/C;
#매수첫진입
if MarketPosition == 0 then
{buy("첫매수",AtMarket,DEF,현재자금/2/c);}
#매수
if C <= 볼밴down and MarketPosition == 1 then
{buy("매수",AtMarket,DEF,매수계약수);
}
#매수청산
if C >= 볼밴up and MarketPosition == 1 then
{exitlong("매수청산",AtMarket,def,"",매도계약수);
}
답변 1
예스스탁 예스스탁 답변
2011-12-12 10:04:31
안녕하세요
예스스탁입니다.
진입을 누적하는 경우에는 시스템 트레이딩 설정창에서
피라미딩을 설정하셔야 됩니다.
해당 식의 경우라면 모든진입신호 허용으로 설정하시면 됩니다.
수량 및 일부내용 수정한 식입니다.
input : Period(20), Dv(2);
var : 초기자금(10000000), 현재자금(0),볼밴Up(0), 볼밴Down(0),추가매수수량(0), 매도수량(0),첫매수수량(0);
볼밴Up = BollBandUp(Period,DV) ;
볼밴Down = BollBandDown(Period,DV) ;
현재자금 = 초기자금 + NetProfit;
if CodeCategory == 1 Then{#코스피종목
if BasePrice < 50000 Then
첫매수수량 = int(int((현재자금*0.5)/C)/10)*10;
Else
첫매수수량 = int((현재자금*0.5)/C);
}
if CodeCategory == 2 Then#코스닥종목
첫매수수량 = int((현재자금*0.5)/C);
if MarketPosition == 1 Then
if CodeCategory == 1 Then{#코스피종목
if BasePrice < 50000 Then{
추가매수수량 = abs(int(int((OpenPositionProfit/2)/C)/10)*10);
매도수량 = abs(int(int((OpenPositionProfit/2)/C)/10)*10);
}
Else{
추가매수수량 = abs(int((OpenPositionProfit/2)/C));
매도수량 = abs(int((OpenPositionProfit/2)/C));
}
if CodeCategory == 2 Then#코스닥종목
추가매수수량 = abs(int((OpenPositionProfit/2)/C));
매도수량 = abs(int((OpenPositionProfit/2)/C));
}
#매수첫진입
if MarketPosition == 0 then{
buy("첫매수",AtMarket,DEF,첫매수수량);
}
#매수
if crossdown(C,볼밴down) and MarketPosition == 1 then {
buy("매수",AtMarket,DEF,추가매수수량);
}
#매수청산
if crossup(C,볼밴up) and MarketPosition == 1 then {
exitlong("매수청산",AtMarket,def,"",매도수량,1);
}
즐거운 하루되세요
> 나도모르오 님이 쓴 글입니다.
> 제목 : 섀넌의 도깨비전략
> 섀넌이란 사람이 개발한 전략인데 일정주기마다 현금비율과 주식비율을 1:1만큼 재조정하는 전략이 있습니다. 이걸 시스템화 시키려고 하는데 자꾸 문제가 생기네요.
처음엔 전체 자금의 반만큼 일단 매수를 하고 볼린저밴드의 상단에 닿으면 수익금의 반만큼 매도, 볼린저밴드의 하단에 닿으면 손실금의 반만큼 매수로 전략을 짤려고 합니다. 그러니까 포지션의 증감만 있을뿐 시장에서 벗어나는 일은 없는거죠.
아래의 수식이 제가만든건데 어디서 문제가 생긴건지 잘 모르겠습니다. 도와주세요
진입명 "첫매수"은 딱 한번만 나와야 하는데 주식을 일부 청산하자마자 나오네요. 진입명 "매수"도 작동이 안되고요.
그리고 시뮬레이션 차트에서 실현수익 말고도 미실현수익과 현재보유현금의 합계가 나타나게 할 방법은 없나요? 섀넌의 도깨비전략이 현금비중을 50%유지하는거라서....
---------------------------------------------------------------------------------
input : Period(20), Dv(2);
var : 초기자금(10000000), 현재자금(0),볼밴Up(0), 볼밴Down(0), 계약수(0), 매수계약수(0), 매도계약수(0) ;
볼밴Up = BollBandUp(Period,DV) ;
볼밴Down = BollBandDown(Period,DV) ;
현재자금 = 초기자금 + NetProfit;
매수계약수 = OpenPositionProfit*-1/2/C;
매도계약수 = OpenPositionProfit/2/C;
#매수첫진입
if MarketPosition == 0 then
{buy("첫매수",AtMarket,DEF,현재자금/2/c);}
#매수
if C <= 볼밴down and MarketPosition == 1 then
{buy("매수",AtMarket,DEF,매수계약수);
}
#매수청산
if C >= 볼밴up and MarketPosition == 1 then
{exitlong("매수청산",AtMarket,def,"",매도계약수);
}
다음글