커뮤니티
매수가 안되고 매도도 원하는 위치에 안됩니다.
2017-04-23 21:23:05
206
글번호 109078
시스템은 아래와 같습니다.
Var : standardday(0),k(0),daycnt(0),buycnt(0),lastbuyprice(0),avgbuyprice(0),validbuyflag(0);
k = 10;
if( DayClose(0) >= DayClose(1)*(1+k/100) && Time >= 153000 ) then
{
daycnt = 0;
buycnt = 0;
lastbuyprice = 0;
avgbuyprice = 0;
validbuyflag = 1;
standardday = DateToJulian(Sdate);
MessageLog("기준봉 %.f %.f",sDate,standardday);
}
if(dayindex == 0 && standardday!=0 && DateToJulian(Sdate) != standardday)Then
{
daycnt=daycnt+1;
MessageLog("daycnt %.f",daycnt);
}
if(standardday!=0 && daycnt==1) Then
{
MessageLog("buycnt %.f",buycnt);
//첫 진입 시점
if(buycnt == 0 && validbuyflag == 1) Then
{
if(DayOpen(0) >= DayClose(1)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.75);
Buy("b1_1_2",AtLimit,d4(10,0.75),1);
MessageLog("1 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then
{
MessageLog("2");
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.5);
Buy("b1_1_3",AtLimit,d4(10,0.5),1);
}
Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.25);
Buy("b1_1_4",AtLimit,d4(10,0.25),1);
MessageLog("3 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0);
Buy("b1_1_5",AtLimit,d4(10,0),1);
MessageLog("4 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
}
}
if(MarketPosition==1) Then
{
if(buycnt==1) Then
{
buycnt = 0;
Sell("s_1",AtStop,lastbuyprice*1.02);
MessageLog("buycnt111 %.f lastbuyprice %.f",buycnt,lastbuyprice*1.02);
}
else if(buycnt==2) Then
{
buycnt = 0;
MessageLog("buycnt222 %.f",buycnt);
Sell("s_2",AtStop,lastbuyprice*1.018);
}
else if(buycnt==3) Then
{
buycnt = 0;
Sell("s_3",AtStop,lastbuyprice*1.012);
}
}
사용자 지표 d4는 아래와 같습니다
inputs : k(Numeric), x1(Numeric);
if(DayClose(1) >= DayClose(2)*(1+k/100) ) then
{
if(DayClose(1)/DayLow(1) >= (1+k/100)) then
{
d4=((DayClose(1)-DayLow(1))*x1+DayLow(1));
}
Else
{
d4=((DayClose(1)-DayClose(2))*x1+DayClose(2));
}
}
간단히 말하자면 전략은 장대양봉 10%를 기준으로 다음날 4등분선에서 매매하는 것입니다
시초가의 위치에 따라 4등분의 위치에 맞춰서 한타점 아래씩 진입하는 전략입니다
또한 매수후 1번진입하면 2%먹고 매도하고 2번 진입하면 1.8% 3번진입하면 1.2% 먹고 매도 하도록작성해보았습니다
그런뒤 전략 실행 차트로 확인해보면
썬텍이라는 종목으로 2분봉으로 2000봉 갯수로 확인해보면 4월 10일에만 매수 매도 주문이 들어가고 나머지 장대양봉 다음날에는 매수 주문을 넣지만
실제 차트에선 표시가되지않습니다
4월 13일과 21일에 매수가 일어나고 매도가 정상적으로 일어나야는데 차트상 표시가 되지않습니다
또한 4월10일 매매에도 문제가 있는데요 매수는 정상 가격에 일어났지만 매도는 정상 가격에 일어나지 않는것처럼 보입니다
성능보고서를 보면 오히려 손해를 본것으로 나오는데요 왜그런지 궁금합니다
실제 제가 주식에서 손매매하는 것을 전략으로 짜서 시스템을 운영하고싶은데 도움 부탁드립니다
전 초보입니다 ㅠㅠ
답변 1
예스스탁 예스스탁 답변
2017-04-24 17:57:24
안녕하세요
예스스탁입니다.
포지션 함수에 최근 진입가, 평균단가를 계산해 리턴하는 함수가 있습니다.
또한 현재 진입누적횟수도 리턴해 주는 함수가 있습니다.
따로 저장하실 필요가 없습니다.
식을 수정했습니다.
전일 k%상승이면 오늘 한번만 지정한 d4값에 도달할때 진입합니다.
내용상 진입을 누적하므로 피라미딩은 모든진입신호허용으로 설정하고
적용하시면 됩니다.
Var : k(0),buycnt(0);
k = 10;
#날짜 변경
if Bdate != Bdate[1] Then{
#당일진입횟수 초기화 0
buycnt = 0;
#전일이 k%상승일이면 true 아니면 false
if DayClose(1) >= DayClose(2)*(1+k/100) Then
Condition1 = true;
Else
Condition1 = false;
}
#진입이 발생하면 1씩 증가
if CurrentContracts > CurrentContracts[1] Then
BuyCnt = BuyCnt+1;
#Condition1은 true이고 buyCnt는 0일때만 진입
if Condition1 == true and BuyCnt == 0 then{
if(DayOpen(0) >= DayClose(1)) then
{
Buy("b1_1_2",AtLimit,d4(10,0.75),1);
}
Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then
{
Buy("b1_1_3",AtLimit,d4(10,0.5),1);
}
Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then
{
Buy("b1_1_4",AtLimit,d4(10,0.25),1);
}
Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then
{
Buy("b1_1_5",AtLimit,d4(10,0),1);
}
}
#매수후
if MarketPosition==1 Then
{
#매수가 1번 진입된 상태이면
#최근 진입가에서 2% 상승하면 청산
if MaxEntries == 1 Then
{
ExitLong("s_1",atlimit,LatestEntryPrice(0)*1.02);
}
#매수가 2번 진입된 상태이면
#최근 진입가에서 1.8% 상승하면 청산
if MaxEntries == 2 Then
{
ExitLong("s_2",atlimit,LatestEntryPrice(0)*1.018);
}
#매수가 3번 진입된 상태이면
#최근 진입가에서 1.2% 상승하면 청산
if( MaxEntries == 3 ) Then
{
ExitLong("s_3",atlimit,LatestEntryPrice(0)*1.012);
}
}
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : 매수가 안되고 매도도 원하는 위치에 안됩니다.
> 시스템은 아래와 같습니다.
Var : standardday(0),k(0),daycnt(0),buycnt(0),lastbuyprice(0),avgbuyprice(0),validbuyflag(0);
k = 10;
if( DayClose(0) >= DayClose(1)*(1+k/100) && Time >= 153000 ) then
{
daycnt = 0;
buycnt = 0;
lastbuyprice = 0;
avgbuyprice = 0;
validbuyflag = 1;
standardday = DateToJulian(Sdate);
MessageLog("기준봉 %.f %.f",sDate,standardday);
}
if(dayindex == 0 && standardday!=0 && DateToJulian(Sdate) != standardday)Then
{
daycnt=daycnt+1;
MessageLog("daycnt %.f",daycnt);
}
if(standardday!=0 && daycnt==1) Then
{
MessageLog("buycnt %.f",buycnt);
//첫 진입 시점
if(buycnt == 0 && validbuyflag == 1) Then
{
if(DayOpen(0) >= DayClose(1)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.75);
Buy("b1_1_2",AtLimit,d4(10,0.75),1);
MessageLog("1 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
Else if(d4(10,0.75)<=dayopen(0)&&dayopen(0)<DayClose(1)) then
{
MessageLog("2");
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.5);
Buy("b1_1_3",AtLimit,d4(10,0.5),1);
}
Else if(d4(10,0.5)<=dayopen(0)&&dayopen(0)<d4(10,0.75)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0.25);
Buy("b1_1_4",AtLimit,d4(10,0.25),1);
MessageLog("3 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
Else if(d4(10,0)<=dayopen(0)&&dayopen(0)<d4(10,0.5)) then
{
buycnt=buycnt+1;
validbuyflag = 0;
lastbuyprice = d4(10,0);
Buy("b1_1_5",AtLimit,d4(10,0),1);
MessageLog("4 %.f lastbuyprice %.f",MarketPosition,lastbuyprice);
}
}
}
if(MarketPosition==1) Then
{
if(buycnt==1) Then
{
buycnt = 0;
Sell("s_1",AtStop,lastbuyprice*1.02);
MessageLog("buycnt111 %.f lastbuyprice %.f",buycnt,lastbuyprice*1.02);
}
else if(buycnt==2) Then
{
buycnt = 0;
MessageLog("buycnt222 %.f",buycnt);
Sell("s_2",AtStop,lastbuyprice*1.018);
}
else if(buycnt==3) Then
{
buycnt = 0;
Sell("s_3",AtStop,lastbuyprice*1.012);
}
}
사용자 지표 d4는 아래와 같습니다
inputs : k(Numeric), x1(Numeric);
if(DayClose(1) >= DayClose(2)*(1+k/100) ) then
{
if(DayClose(1)/DayLow(1) >= (1+k/100)) then
{
d4=((DayClose(1)-DayLow(1))*x1+DayLow(1));
}
Else
{
d4=((DayClose(1)-DayClose(2))*x1+DayClose(2));
}
}
간단히 말하자면 전략은 장대양봉 10%를 기준으로 다음날 4등분선에서 매매하는 것입니다
시초가의 위치에 따라 4등분의 위치에 맞춰서 한타점 아래씩 진입하는 전략입니다
또한 매수후 1번진입하면 2%먹고 매도하고 2번 진입하면 1.8% 3번진입하면 1.2% 먹고 매도 하도록작성해보았습니다
그런뒤 전략 실행 차트로 확인해보면
썬텍이라는 종목으로 2분봉으로 2000봉 갯수로 확인해보면 4월 10일에만 매수 매도 주문이 들어가고 나머지 장대양봉 다음날에는 매수 주문을 넣지만
실제 차트에선 표시가되지않습니다
4월 13일과 21일에 매수가 일어나고 매도가 정상적으로 일어나야는데 차트상 표시가 되지않습니다
또한 4월10일 매매에도 문제가 있는데요 매수는 정상 가격에 일어났지만 매도는 정상 가격에 일어나지 않는것처럼 보입니다
성능보고서를 보면 오히려 손해를 본것으로 나오는데요 왜그런지 궁금합니다
실제 제가 주식에서 손매매하는 것을 전략으로 짜서 시스템을 운영하고싶은데 도움 부탁드립니다
전 초보입니다 ㅠㅠ
다음글
이전글