커뮤니티
문의드립니다.
2012-11-28 22:26:47
343
글번호 56913
[ 27294 ] 에 대한 답변 잘 보았습니다.
예를 들어 "써니트" 종목 15분봉 에 2007년 01월 02일부터 적용해 보았습니다.
아래 식은 최초원금 10,000,000원을 무두 손실 보고도
계속 해서 매매를 일으켜 손실을 수억으로 키우기도 합니다.
어떻게 총자산이 마이너스 상태에서 매매가 일어나는지
식을 살펴보아도 이해가 되질 않습니다.
총자산(주식+현금)이 1,000,000원 미만이면
거래를 영원히 멈추도록
다시 한번 부탁 드립니다.
항상 감사드립니다.
input : 시작일(20121116),시간(143000);
input : 투입금액(10000000);
var : Cash(0),diff(0);
if sdate == 시작일 and stime == 시간 Then{
buy("b1",OnClose,def,int((투입금액*0.5)/C));
Cash = 투입금액-(c*int((투입금액*0.5)/C));
Condition1 = true;
}
#첫진입 후
if Condition1 == true Then{
value1 = C*CurrentContracts;
diff = abs(value1-Cash);
if sdate > 시작일 and stime == 시간 Then{
if value1 < Cash Then{
buy("bb",OnClose,def,int((diff*0.5)/c));
Cash = Cash-c*int((diff*0.5)/c);
}
if value1 > Cash Then{
ExitLong("bx",OnClose,def,"",int((diff*0.5)/c),1);
Cash = Cash+c*int((diff*0.5)/c);
}
}
}
답변 1
예스스탁 예스스탁 답변
2012-11-29 17:50:21
안녕하세요
예스스탁입니다.
문의하신 식 작성에 조금 문제가 있습니다.
식상에 현금과 보유잔고가 백만원 미만이면
신호가 발생하지 않게 추가는 했습니다.
다만 청산함수가 진입신호 하나당 한번씩만 발생할수 있게 되어 있어
첨부된 수식과 같이 청산을 발생횟수 별로 지정해 작성해 주어야 합니다.
50개까지는 추가해 드렸지만 시간상 많이는 추가해 드리지 못하므로
작성된 식 참고하셔서 더많이 나열해서 작성하셔야 합니다.
input : 시작일(20070102),시간(143000);
input : 투입금액(10000000);
var : Cash(0),Hold(0),Vol(0),Xcnt(0),Break(false),Start(0);
if sdate == 시작일 and stime == 시간 Then{
Vol = int((투입금액*0.5)/C);
Cash = 투입금액-(c*int((투입금액*0.5)/C));
Xcnt = 0;
Break = false;
buy("b1",OnClose,def,Vol);
Start = 1;
}
if Start == 1 and MarketPosition == 1 Then
{
#보유잔고 = 보유수량*종가
Hold = C*CurrentContracts;
if sdate > 시작일 and stime == 시간 Then
{
if Hold+Cash < 1000000 Then
Break = true;
if Cash > Hold and Break == false Then
{
#현금잔고-보유잔고의 절반으로 수량 산정
Vol = int(((Cash-Hold)/2)/C);
#산정된 수량을 금액으로 환산해 현금잔고에서 뺌
Cash = Cash-C*Vol;
#산정된 수량으로 매수주문
buy("bb",OnClose,def,Vol);
}
if Hold > Cash and Break == false Then
{
#청산횟수
Xcnt = Xcnt+1;
#보유잔고-현금잔고의 절반으로 수량 산정
Vol = int(((Hold-Cash)/2)/C);
#산된된 수량을 금액으로 환산해 현금잔고에 더함
Cash = Cash+C*Vol;
#청산
if Xcnt == 1 Then
ExitLong("bx1",OnClose,def,"",Vol,1);
if Xcnt == 2 Then
ExitLong("bx2",OnClose,def,"",Vol,1);
if Xcnt == 3 Then
ExitLong("bx3",OnClose,def,"",Vol,1);
if Xcnt == 4 Then
ExitLong("bx4",OnClose,def,"",Vol,1);
if Xcnt == 5 Then
ExitLong("bx5",OnClose,def,"",Vol,1);
if Xcnt == 6 Then
ExitLong("bx6",OnClose,def,"",Vol,1);
if Xcnt == 7 Then
ExitLong("bx7",OnClose,def,"",Vol,1);
if Xcnt == 8 Then
ExitLong("bx8",OnClose,def,"",Vol,1);
if Xcnt == 9 Then
ExitLong("bx9",OnClose,def,"",Vol,1);
if Xcnt == 10 Then
ExitLong("bx10",OnClose,def,"",Vol,1);
if Xcnt == 11 Then
ExitLong("bx11",OnClose,def,"",Vol,1);
if Xcnt == 12 Then
ExitLong("bx12",OnClose,def,"",Vol,1);
if Xcnt == 13 Then
ExitLong("bx13",OnClose,def,"",Vol,1);
if Xcnt == 14 Then
ExitLong("bx14",OnClose,def,"",Vol,1);
if Xcnt == 15 Then
ExitLong("bx15",OnClose,def,"",Vol,1);
if Xcnt == 16 Then
ExitLong("bx16",OnClose,def,"",Vol,1);
if Xcnt == 17 Then
ExitLong("bx17",OnClose,def,"",Vol,1);
if Xcnt == 18 Then
ExitLong("bx18",OnClose,def,"",Vol,1);
if Xcnt == 19 Then
ExitLong("bx19",OnClose,def,"",Vol,1);
if Xcnt == 20 Then
ExitLong("bx20",OnClose,def,"",Vol,1);
if Xcnt == 21 Then
ExitLong("bx21",OnClose,def,"",Vol,1);
if Xcnt == 22 Then
ExitLong("bx22",OnClose,def,"",Vol,1);
if Xcnt == 23 Then
ExitLong("bx23",OnClose,def,"",Vol,1);
if Xcnt == 24 Then
ExitLong("bx24",OnClose,def,"",Vol,1);
if Xcnt == 25 Then
ExitLong("bx25",OnClose,def,"",Vol,1);
if Xcnt == 26 Then
ExitLong("bx26",OnClose,def,"",Vol,1);
if Xcnt == 27 Then
ExitLong("bx27",OnClose,def,"",Vol,1);
if Xcnt == 28 Then
ExitLong("bx28",OnClose,def,"",Vol,1);
if Xcnt == 29 Then
ExitLong("bx29",OnClose,def,"",Vol,1);
if Xcnt == 30 Then
ExitLong("bx31",OnClose,def,"",Vol,1);
if Xcnt == 32 Then
ExitLong("bx32",OnClose,def,"",Vol,1);
if Xcnt == 33 Then
ExitLong("bx33",OnClose,def,"",Vol,1);
if Xcnt == 34 Then
ExitLong("bx34",OnClose,def,"",Vol,1);
if Xcnt == 35 Then
ExitLong("bx36",OnClose,def,"",Vol,1);
if Xcnt == 37 Then
ExitLong("bx38",OnClose,def,"",Vol,1);
if Xcnt == 39 Then
ExitLong("bx39",OnClose,def,"",Vol,1);
if Xcnt == 40 Then
ExitLong("bx40",OnClose,def,"",Vol,1);
if Xcnt == 41 Then
ExitLong("bx42",OnClose,def,"",Vol,1);
if Xcnt == 43 Then
ExitLong("bx43",OnClose,def,"",Vol,1);
if Xcnt == 44 Then
ExitLong("bx44",OnClose,def,"",Vol,1);
if Xcnt == 45 Then
ExitLong("bx45",OnClose,def,"",Vol,1);
if Xcnt == 46 Then
ExitLong("bx46",OnClose,def,"",Vol,1);
if Xcnt == 47 Then
ExitLong("bx47",OnClose,def,"",Vol,1);
if Xcnt == 48 Then
ExitLong("bx48",OnClose,def,"",Vol,1);
if Xcnt == 49 Then
ExitLong("bx49",OnClose,def,"",Vol,1);
if Xcnt == 50 Then
ExitLong("bx50",OnClose,def,"",Vol,1);
}
}
}
MessageLog("%.2f",Cash+Hold);
즐거운 하루되세요
> 사우로스 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> [ 27294 ] 에 대한 답변 잘 보았습니다.
예를 들어 "써니트" 종목 15분봉 에 2007년 01월 02일부터 적용해 보았습니다.
아래 식은 최초원금 10,000,000원을 무두 손실 보고도
계속 해서 매매를 일으켜 손실을 수억으로 키우기도 합니다.
어떻게 총자산이 마이너스 상태에서 매매가 일어나는지
식을 살펴보아도 이해가 되질 않습니다.
총자산(주식+현금)이 1,000,000원 미만이면
거래를 영원히 멈추도록
다시 한번 부탁 드립니다.
항상 감사드립니다.
input : 시작일(20121116),시간(143000);
input : 투입금액(10000000);
var : Cash(0),diff(0);
if sdate == 시작일 and stime == 시간 Then{
buy("b1",OnClose,def,int((투입금액*0.5)/C));
Cash = 투입금액-(c*int((투입금액*0.5)/C));
Condition1 = true;
}
#첫진입 후
if Condition1 == true Then{
value1 = C*CurrentContracts;
diff = abs(value1-Cash);
if sdate > 시작일 and stime == 시간 Then{
if value1 < Cash Then{
buy("bb",OnClose,def,int((diff*0.5)/c));
Cash = Cash-c*int((diff*0.5)/c);
}
if value1 > Cash Then{
ExitLong("bx",OnClose,def,"",int((diff*0.5)/c),1);
Cash = Cash+c*int((diff*0.5)/c);
}
}
}
다음글
이전글