커뮤니티
성과보고서 수익 계산 오류
2016-12-06 02:25:28
122
글번호 104660
아래의 시스템코드는 국선에서
10분봉의 종가가 피봇 1차 저항선을 뚫고 올라가면 매수 신호를 발생시키고,
10분봉의 종가가 피봇 1차 지지선을 뚫고 내려가면 매도 신호를 발생시키고,
자동 손절은 0.6P 이고,
10분봉이 13분 이평선에서 매수일 경우 4틱아래까지 내려갈 때,
매도는 4틱 위까지 올라갈 때 청산하는 로직으로 되어있습니다.
그런데, 시스템 성과보고서(첨부 그림 파일)에서는
수익일 경우에는 진입가격과 청산가격으로 계산한 값의 1/2 정도 나오고,
손실인 경우는 진입가격과 청산가격으로 계산한 값의 2배가 나옵니다.
질문> 시스템 코드를 잘못 작성한 것인지,
아니면 성과보고서의 버그인 건가요?
//------------------------------------------------------------------
var : piv(0), piv1R(0), piv1S(0); // pivot 1차 저항선, 1차 지지선
var : ma13(0); // 13 min MA
var : onetick(0.05);
var : cnt(0); // 임시변수
var : CutCnt(0);
var : entry(0);
// CutCnt = 0;
// for Cnt = 0 to 10 {
// if (EntryDate(Cnt) == sdate) and (PositionProfit(Cnt) < 0) Then // Original : if (EntryDate(Cnt+1) == sdate) and (PositionProfit(Cnt+1) < 0) Then
// {
//
// CutCnt = CutCnt + 1;//당일 손실 횟수 카운트
// }
// }
if bdate <> bdate[1] Then
entry = 0;
if (MarketPosition <> 0) and (MarketPosition <> MarketPosition[1]) Then
entry = entry + 1;
piv = ( dayHigh(1) + dayLow(1) + dayClose(1) )/ 3; // pivot Line
piv1R = 2 * piv - dayLow(1); // pivot 1st resistance Line
piv1S = 2 * piv - dayHigh(1); // pivot 1st Suspending Line
ma13 = ma(C, 13); // 13min moving average
// LossCut : 0.6P
SetStopLoss(12 * onetick, Pointstop);
messageLog("Line 34> entry : %.f bdate : %.f bdate[1] : %.f MarketPosition : %.f MarketPosition[1] : %.f", entry, bdate, bdate[1], MarketPosition, MarketPosition[1]);
// entry Limits one time
if (entry < 1) then
{
// if buying
if (sTime == 90000) and ( O >= piv1R ) and ( C > piv1R ) then buy(); // "Buy1", AtStop, C);
if (sTime <> 90000) and ( O <= piv1R ) and ( C > piv1R ) then buy(); // "Buy2", AtStop, C);
// if sell
if (sTime == 90000) and ( O <= piv1S ) and ( C < piv1S ) then sell(); // "sell1", AtStop, C);
if (sTime <> 90000) and ( O >= piv1S ) and ( C < piv1S ) then sell(); // "sell2", AtStop, C);
// exit
if ( MarketPosition == 1 ) and ( L < (ma13 -4 * onetick)) then
{
exitLong( "exit_Buy", AtStop, L );
}
if ( MarketPosition == -1 ) and ( H > (ma13 + 4 * onetick)) then
{
exitShort( "exit_Sell", AtStop, H);
}
messageLog("Line 58> entry : %.f bdate : %.f bdate[1] : %.f MarketPosition : %.f MarketPosition[1] : %.f", entry, bdate, bdate[1], MarketPosition, MarketPosition[1]);
messageLog("sTime : %.f pivIR : %.2f piv1S : %.2f MA13 : %.2f ", sTime, piv1R, piv1S, ma13);
// 매수 청산
if (MarketPosition <> 0) then SetStopEndofday(1530);
}
- 1. performance_pivot_20161206-1.jpg (0.26 MB)
답변 1
예스스탁 예스스탁 답변
2016-12-06 13:48:58
안녕하세요
예스스탁입니다.
성과보고서의 손익에는
시스템 트레이딩 설정창의 비용/수량탭에서
지정한 수수료와 슬리피지가 반영됩니다.
해당 값들을 0으로 지정하시면 도비니다.
즐거운 하루되세요
> 해선쓰나미 님이 쓴 글입니다.
> 제목 : 성과보고서 수익 계산 오류
> 아래의 시스템코드는 국선에서
10분봉의 종가가 피봇 1차 저항선을 뚫고 올라가면 매수 신호를 발생시키고,
10분봉의 종가가 피봇 1차 지지선을 뚫고 내려가면 매도 신호를 발생시키고,
자동 손절은 0.6P 이고,
10분봉이 13분 이평선에서 매수일 경우 4틱아래까지 내려갈 때,
매도는 4틱 위까지 올라갈 때 청산하는 로직으로 되어있습니다.
그런데, 시스템 성과보고서(첨부 그림 파일)에서는
수익일 경우에는 진입가격과 청산가격으로 계산한 값의 1/2 정도 나오고,
손실인 경우는 진입가격과 청산가격으로 계산한 값의 2배가 나옵니다.
질문> 시스템 코드를 잘못 작성한 것인지,
아니면 성과보고서의 버그인 건가요?
//------------------------------------------------------------------
var : piv(0), piv1R(0), piv1S(0); // pivot 1차 저항선, 1차 지지선
var : ma13(0); // 13 min MA
var : onetick(0.05);
var : cnt(0); // 임시변수
var : CutCnt(0);
var : entry(0);
// CutCnt = 0;
// for Cnt = 0 to 10 {
// if (EntryDate(Cnt) == sdate) and (PositionProfit(Cnt) < 0) Then // Original : if (EntryDate(Cnt+1) == sdate) and (PositionProfit(Cnt+1) < 0) Then
// {
//
// CutCnt = CutCnt + 1;//당일 손실 횟수 카운트
// }
// }
if bdate <> bdate[1] Then
entry = 0;
if (MarketPosition <> 0) and (MarketPosition <> MarketPosition[1]) Then
entry = entry + 1;
piv = ( dayHigh(1) + dayLow(1) + dayClose(1) )/ 3; // pivot Line
piv1R = 2 * piv - dayLow(1); // pivot 1st resistance Line
piv1S = 2 * piv - dayHigh(1); // pivot 1st Suspending Line
ma13 = ma(C, 13); // 13min moving average
// LossCut : 0.6P
SetStopLoss(12 * onetick, Pointstop);
messageLog("Line 34> entry : %.f bdate : %.f bdate[1] : %.f MarketPosition : %.f MarketPosition[1] : %.f", entry, bdate, bdate[1], MarketPosition, MarketPosition[1]);
// entry Limits one time
if (entry < 1) then
{
// if buying
if (sTime == 90000) and ( O >= piv1R ) and ( C > piv1R ) then buy(); // "Buy1", AtStop, C);
if (sTime <> 90000) and ( O <= piv1R ) and ( C > piv1R ) then buy(); // "Buy2", AtStop, C);
// if sell
if (sTime == 90000) and ( O <= piv1S ) and ( C < piv1S ) then sell(); // "sell1", AtStop, C);
if (sTime <> 90000) and ( O >= piv1S ) and ( C < piv1S ) then sell(); // "sell2", AtStop, C);
// exit
if ( MarketPosition == 1 ) and ( L < (ma13 -4 * onetick)) then
{
exitLong( "exit_Buy", AtStop, L );
}
if ( MarketPosition == -1 ) and ( H > (ma13 + 4 * onetick)) then
{
exitShort( "exit_Sell", AtStop, H);
}
messageLog("Line 58> entry : %.f bdate : %.f bdate[1] : %.f MarketPosition : %.f MarketPosition[1] : %.f", entry, bdate, bdate[1], MarketPosition, MarketPosition[1]);
messageLog("sTime : %.f pivIR : %.2f piv1S : %.2f MA13 : %.2f ", sTime, piv1R, piv1S, ma13);
// 매수 청산
if (MarketPosition <> 0) then SetStopEndofday(1530);
}
다음글
이전글