커뮤니티
손실제한
2012-04-24 23:15:17
344
글번호 50436
안녕하세요? 랭귀지 공부하는 초보입니다.
항상 성의있는 답변에 진심으로 감사드립니다.
하루손실을 제한하는 로직을 게시판에서 검색해서 해석을 하다보니 몇가지 궁금한게 있습니다.
질문편의를 위해 임의로 줄번호를 붙였습니다.
첫번째 7번째줄과 10번째 줄은 count의 용도는 무엇인지 궁금합니다.
두번째 아래의 수식을 자세한 주석좀 부탁드립니다. 전부가 힘드시면 20번째줄까지만이라도 자세한 주석부탁합니다.
번거롭게 해서 죄송합니다.
1 input:하루손실(2);
2 var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
3 #당일누적손익계산 시작
4 XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
5 XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
6 PLR = 0;
7 count = 0;
8 for var1 = 1 to 10{
9 if sdate == EntryDate(var1) Then{
10 count = count+1;
11 PLR = PLR+PositionProfit(var1);
12 }
13 }
14 if MarketPosition() == 0 Then{
15 OpenPL = 0;
16 dayPL = PLR;
17 }
18 Else{
19 OpenPL = (PositionProfit-(XCommission+XSlippage));
20 dayPL = PLR+OpenPL;
21 }
if dayPL > -하루손실 then{
if crossup(c,ma(c,20)) Then
buy();
if CrossDown(c,ma(c,20)) Then
Sell();
}
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,EntryPrice+(-(하루손실)-(PLR)));
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,EntryPrice+((하루손실)+(PLR)));
}
답변 1
예스스탁 예스스탁 답변
2012-04-25 10:50:32
안녕하세요
예스스탁입니다.
input:하루손실(2);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
#당일누적손익계산 시작
#시스템 트레이딩 설정창의 청산수수료로 지정한 값을 불러와
#수수료로 지정한 만큼의 금액을 구하고 수량을 합산에 최종 수수료를 계산
XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
#시스템 트레이딩 설정창의 청산슬리피지로 지정한 값을 불러와
#수량을 감안한 슬리피지를 계산
XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
#시스템에서 손익관련 함수는 진입이 발생하면 진입수수료와 진입슬리피지가 손익에서 차감되고
#청산이 발생하면 청산 수수료와 청산 슬리피지가 발생합니다.
#현재 진입중이 포지션의 손익을 계산할 때 미리 청산할때의 수수료와 슬리피지를 빼서 계산하기 위해
#위 내용을 계산해 놓는 것입니다.
#아래식은 당일 청산이 완료된 거래가 몇번인지와
#청산이 완료된 거래의 손익을 계산하는 내용입니다.
#최근 청산된 거래중 최근순으로 10개를 불러와 당일 거래가 된것이면
#그 횟수를 계산하고 손익의 합계를 구합니다.
#당일 거래가 10번이상 나는 시스템이면 for문의 10을 더 늘리셔야 합니다.
PLR = 0;
count = 0;
for var1 = 1 to 10{
if sdate == EntryDate(var1) Then{
count = count+1;
PLR = PLR+PositionProfit(var1);
}
}
#현재 진입중인 포지션이 있으면
if MarketPosition() == 0 Then{
OpenPL = 0;#진입중 포지션의 손익은 0
dayPL = PLR;#당일 손익은 PLR값을 사용
}
Else{#현재 진입중인 포지션이 있으면
#현재 손익(진입슬리피지와 진입수수료만 적용된 손익)에 청산수수료와 청산 슬리피리를 추가해서 현재손익을 계산해 사용
OpenPL = (PositionProfit-(XCommission+XSlippage));
#당일 손익으로 PLR에 OpenPL을 더하여 사용
dayPL = PLR+OpenPL;
}
즐거운 하루되세요
> 에리조나 님이 쓴 글입니다.
> 제목 : 손실제한
> 안녕하세요? 랭귀지 공부하는 초보입니다.
항상 성의있는 답변에 진심으로 감사드립니다.
하루손실을 제한하는 로직을 게시판에서 검색해서 해석을 하다보니 몇가지 궁금한게 있습니다.
질문편의를 위해 임의로 줄번호를 붙였습니다.
첫번째 7번째줄과 10번째 줄은 count의 용도는 무엇인지 궁금합니다.
두번째 아래의 수식을 자세한 주석좀 부탁드립니다. 전부가 힘드시면 20번째줄까지만이라도 자세한 주석부탁합니다.
번거롭게 해서 죄송합니다.
1 input:하루손실(2);
2 var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),count(0);
3 #당일누적손익계산 시작
4 XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
5 XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
6 PLR = 0;
7 count = 0;
8 for var1 = 1 to 10{
9 if sdate == EntryDate(var1) Then{
10 count = count+1;
11 PLR = PLR+PositionProfit(var1);
12 }
13 }
14 if MarketPosition() == 0 Then{
15 OpenPL = 0;
16 dayPL = PLR;
17 }
18 Else{
19 OpenPL = (PositionProfit-(XCommission+XSlippage));
20 dayPL = PLR+OpenPL;
21 }
if dayPL > -하루손실 then{
if crossup(c,ma(c,20)) Then
buy();
if CrossDown(c,ma(c,20)) Then
Sell();
}
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,EntryPrice+(-(하루손실)-(PLR)));
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,EntryPrice+((하루손실)+(PLR)));
}
이전글