커뮤니티
PositionProfit에 대해 질문이 있습니다.
2015-06-25 12:31:59
128
글번호 87662
항상 감사드립니다.
지금 PositionProfit을 이용한 시스템식을 작성중에 있습니다.
첨부의 소스코드를 동작시켰을때 첨부의 PositionProfit.jpg처럼 값이 이랬다
저랬다하는 부분이 존재합니다.
질문의 요점은 PositionProfit이 매매가 수행되지 않았을 경우에도 값이 계속변하는
함수인지요? 맞다면 어떤기준에서 값이 움직이는지 그것을 알고 싶습니다.
첨부의 소스코드는 목표수익률을 집계해서 목표수익률을 달성하면 더 이상 매수를
진행하지 않도록 하는 코드입니다. 제가 의도한 대로 적절히 작성되었는지
체크하여 주시길 부탁 드립니다.
감사합니다. 오늘도 좋은 하루되십시오~!!!
- 1. PositionProfit.jpg (0.18 MB)
- 2. 목표수익률전략.xlsx (0.01 MB)
답변 1
예스스탁 예스스탁 답변
2015-06-25 14:32:31
안녕하세요
예스스탁입니다.
1.
PositionProfit은 신호상 손익입니다.
첨부된 그림과 같이 매수진입후 청상전까지, 매도진입후 청산전까지 리턴됩니다.
차트상 무포지션구간은 0입니다.
수식에서 모든 포지션 관련 함수는 차트상 신호에 따른 결과입니다.
실제 주문과 체결과는 관계가 없습니다.
2.
수익률이나 진입횟수등은 아래와 수정한 수식과 같이 리하시면 됩니다.
작성하신 형태는 실제 진입이 아닌
if문 조건에 따라 누적되므로 오류의 여지가 있습니다.
Input : 일과시작(095000), 일과종료(143000), 목표수익률(20), 최대변동폭사용(0);
Var : Cnt(0), 일일수익률(0), 매수잠금(0);
var : count(0);
cnt = 0;
일일수익률 = 0;
for count = 0 to 30{
if EntryDate(count) == sdate Then{
일일수익률 = 일일수익률 + ((PositionProfit / EntryPrice) * 100);
cnt = cnt+1;
}
}
// 플래그 사용시 매수금지
If (최대변동폭사용 != 1) Then
{
// 09:50분에서 14:30분까지만 거래함
If (sTime > 일과시작 and sTime < 일과종료) Then
{
// 매수조건은 아래 블럭에서 기재요망
// 첫진입에서 플래그를 조작해주어야 함
// ex. 본 코드에서는 매수, 매도의 20일선 CrossUp/CrossDown의 경우로 단순화 함
If
(
CrossUp(C[0], Ma(C[0], 20)) and
Cnt < 1
)
Then
{
Buy("20일선돌파 - 첫매수");
// 손절식을 바로 매수조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition <= 0) Then { //진입신호 다음봉에서만 적용
ExitLong("bx1", AtStop, C[0] * 0.95); // 5% 손해시
}
}
// 첫 진입이 발생한 이후
If
(
Cnt == 1
)
Then
{
// 매수는 목표수익률 조건을 추가로 확인한다.수
If (CrossUp(C[0], Ma(C[0], 20)) and 일일수익률 < 목표수익률 and 매수잠금 != 1) Then
{
Buy("20일선돌파 - 매수");
// 손절식을 바로 매수조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition <= 0) Then { //진입신호 다음봉에서만 적용
ExitLong("bx2", AtStop, C[0] * 0.95); // 5% 손해시
}
}
// 매수직 손절로직
If (MarketPosition == 1) Then { //진입신호 다다음봉부터 적용
ExitLong("bx3", AtStop, EntryPrice * 0.95, "20일선돌파 - 첫매수"); // 5% 손해시
ExitLong("bx4", AtStop, EntryPrice * 0.95, "20일선돌파 - 매수"); // 5% 손해시
}
// 매도는 수익률만 집계한다.
If (CrossDown(C[0], Ma(C[0], 20))) Then
{
Sell("20일선붕괴 - 매도");
// 손절식을 바로 매도조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition >= 0) Then {
ExitShort("sx1", AtStop, C[0] * 1.20); // 20% 손해시
}
}
// 매도 손절로직
If (MarketPosition == -1) Then { // 진입신호 다다음봉부터 적용
ExitShort("sx2", AtStop, EntryPrice * 1.20, "20일선붕괴 - 매도"); // 20% 손해시
}
}
}
Else If (sTime >= 143000) Then // 14:30 이후 무조건 청산
{
ExitLong("일일마감 - 매도청산");
ExitShort("일일마감 - 매수청산");
}
}
Else
{
If (Data2(V[0]) > 3000 or C[0] >= DayHigh()) Then
{
매수잠금 = 0;
}
Else
{
If (H == DayHigh()) Then {
Var1 = DayLow();
Var2 = DayIndex();
Var3 = DayHigh();
}
If
(
C[0] > (DayClose(1) * 1.3) or
(DayIndex > Var2 and Var3 > (Var1 * 1.5))
)
Then
{
매수잠금 = 1;
}
}
// 09:50분에서 14:30분까지만 거래함
If (sTime > 일과시작 and sTime < 일과종료) Then
{
// 매수조건은 아래 블럭에서 기재요망
// 첫진입에서 플래그를 조작해주어야 함
// ex. 본 코드에서는 매수, 매도의 20일선 CrossUp/CrossDown의 경우로 단순화 함
If
(
CrossUp(C[0], Ma(C[0], 20)) and
Cnt < 1
)
Then
{
Buy("최대변동사용20일선돌파 - 첫매수");
// 손절식을 바로 매수조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition <= 0) Then { //진입신호 다음봉에서만 적용
ExitLong("bx5", AtStop, C[0] * 0.95); // 5% 손해시
}
}
// 첫 진입이 발생한 이후
If
(
Cnt == 1
)
Then
{
// 매수는 목표수익률 조건을 추가로 확인한다.
If (CrossUp(C[0], Ma(C[0], 20)) and 일일수익률 < 목표수익률 and 매수잠금 != 1) Then
{
Buy("최대변동사용20일선돌파 - 매수");
// 손절식을 바로 매수조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition <= 0) Then { //진입신호 다음봉에서만 적용
ExitLong("bx6", AtStop, C[0] * 0.95); // 5% 손해시
}
}
// 매수직 손절로직
If (MarketPosition == 1) Then { //진입신호 다다음봉부터 적용
ExitLong("bx7", AtStop, EntryPrice * 0.95, "최대변동사용20일선돌파 - 첫매수"); // 5% 손해시
ExitLong("bx8", AtStop, EntryPrice * 0.95, "최대변동사용20일선돌파 - 매수"); // 5% 손해시
}
// 매도는 수익률만 집계한다.
If (CrossDown(C[0], Ma(C[0], 20))) Then
{
Sell("최대변동사용20일선붕괴 - 매도");
// 손절식을 바로 매도조건하단에 반영(진입신호 다음봉에서 청산이 걸릴 수 있게하기 위함)
If (MarketPosition >= 0) Then {
ExitShort("sx3", AtStop, C[0] * 1.20); // 20% 손해시
}
}
// 매도 손절로직
If (MarketPosition == -1) Then { // 진입신호 다다음봉부터 적용
ExitShort("sx4", AtStop, EntryPrice * 1.20, "최대변동사용20일선붕괴 - 매도"); // 20% 손해시
}
}
}
Else If (sTime >= 143000) Then // 14:30 이후 무조건 청산
{
ExitLong("최대변동사용일일마감 - 매도청산");
ExitShort("최대변동사용일일마감 - 매수청산");
}
}
즐거운 하루되세요
> 가락국수 님이 쓴 글입니다.
> 제목 : PositionProfit에 대해 질문이 있습니다.
> 항상 감사드립니다.
지금 PositionProfit을 이용한 시스템식을 작성중에 있습니다.
첨부의 소스코드를 동작시켰을때 첨부의 PositionProfit.jpg처럼 값이 이랬다
저랬다하는 부분이 존재합니다.
질문의 요점은 PositionProfit이 매매가 수행되지 않았을 경우에도 값이 계속변하는
함수인지요? 맞다면 어떤기준에서 값이 움직이는지 그것을 알고 싶습니다.
첨부의 소스코드는 목표수익률을 집계해서 목표수익률을 달성하면 더 이상 매수를
진행하지 않도록 하는 코드입니다. 제가 의도한 대로 적절히 작성되었는지
체크하여 주시길 부탁 드립니다.
감사합니다. 오늘도 좋은 하루되십시오~!!!