커뮤니티

질문 있습니다.

프로필 이미지
스오어스
2025-10-26 19:26:42
117
글번호 227314
답변완료

질문의 요점: 1분봉 차트에서 시간대별(진입 기준) 순수익 계산이 정확하지 않습니다


안녕하세요


저번주에 답변 주신 글번호 227224 NetProfit 차이 방식으로 시간대별 손익을 계산하고 있는데, 1분봉 차트에서 결과가 정확하지 않아 다시 문의드립니다.


=== 현재 사용 중인 코드 ===

Input : StartHour(8), EndHour(18);

var : NP(0), NP1(0), dayPL(0);

NP = NetProfit;

// 8시 직전까지의 총손익 저장

if CurrentHour == StartHour and CurrentHour != CurrentHour[1] Then {

NP1 = NP[1];

}

// 8시~18시 사이 당일손익 계산

if CurrentHour >= StartHour and CurrentHour <= EndHour Then {

dayPL = (NP - NP1) / PriceScale;

}

Else {

dayPL = dayPL[1]; // 거래 시간 외 이전 값 유지

}

// 19시 출력

if CurrentHour == (EndHour + 1) and CurrentHour != CurrentHour[1] Then {

Text_New(sDate, sTime, H + 2.0, NumToStr(dayPL, 0) + "T");

}

```


>>문제 상황 1번


계산 오류 있습니다.

차트는 1분봉 입니다.

실제로 8-18시 진입 거래를 하면

- 6회 진입: -31, +58, -37, +245, -43, +22 = +214틱로 계산 됩니다.

(차트에 표시된 진입/청산 시 수익/손실 표시를 수동 계산했음)

그러나 시스템 표시 결과를 보면 혼란스럽니다.

- 19시 표시는 -299틱 으로 나왔고 순수익 +214 표시가 잘 되지 않습니다.

NetProfit 흐름은 아래와 같습니다.

- 8시 이전: -201틱

- 19시 전체: -500틱

- 계산: -500 - (-201) = -299틱로 이렇게 표시 된 것 같습니다.

문제는 실제 8-18시 진입 거래는 +214틱인데 -299틱으로 표시되어서 그렇습니다..

----------------------------------------------------------------------------


>>문제 상황 2번


18시 이전 진입 → 19시 이후 청산 케이스인데

더 복잡한 문제가 있습니다:

예를 들면

```

17:55 매수 진입 (8-18시 거래 시간 내)

18:00 거래 시간 종료 그러나 청산 조건 때문에 18:00 넘어 포지션 홀딩한 경우임

19:15 청산 +50틱 (19시 이후)

```

질문입니다.


- 진입은 8-18시 내, 청산은 19시 이후인 경우

- 이 +50틱을 8-18시 손익에 포함해야 할까요?

제 의도는 아래와 같습니다.

- "8-18시 사이에 진입한 모든 거래의 최종 손익"을 계산하고 싶습니다

- 청산 시간은 무관하게, 진입 시간 기준 으로 추적하고

- 해당 거래들이 모두 청산 완료된 후 에 최종 손익 표시하고 싶습니다.


=== 원하는 동작 ===

1. 8-18시 사이 진입한 거래만 추적

2. 해당 거래들이 모두 청산될 때까지 대기

3. 마지막 거래 청산 완료 시점에 → "8-18시(진입기준) 최종: +XXX틱" 표시


=== 핵심 질문 ===


1. 1분봉에서 "18시 마지막 봉" 구분 방법

```

18:00, 18:01, 18:02 ... 18:59 봉들이 모두 CurrentHour = 18인데,

18시 구간의 마지막 봉(18:59)을 어떻게 정확히 잡나요?

```


2. 18시 이후 거래 제외 방법

- 18시 이후(18-24시)에도 거래가 계속되는데, 18시까지의 NP만 저장하려면?

- `if CurrentHour == 19 and CurrentHour[1] == 18` 조건으로 18:59의 NP[1]을 읽어야 하나요?



3. 진입 시간 기준 손익 계산 방법

```

예시 코드:

var : InTime_Entry(0); // 시간대 내 진입 플래그

var : InTime_Count(0); // 시간대 내 진입한 미결제 건수

// 진입 시 기록

if Buy신호 and CurrentHour >= 8 and CurrentHour <= 18 Then {

InTime_Entry = 1;

InTime_Count = InTime_Count + 1;

}

// 청산 시 카운트 감소

if 청산 and InTime_Entry == 1 Then {

InTime_Count = InTime_Count - 1;

}

// 모든 포지션 청산 완료 후 표시

if CurrentHour > 18 and InTime_Count == 0 and 미표시 Then {

Text_New(..., "8-18시 최종: +XXX틱");

}

이런 방식이 가능한가요?



4. 1분봉 차트에서 시간대별 손익 계산 시 주의사항이 있을까요?

요약 하자면 아래와 같습니다.

문제 1: 기본 NetProfit 차이 계산이 부정확 (-299 vs +214)

문제 2: 18시 전 진입 → 19시 후 청산 케이스 처리 방법

원하는 결과: 진입 시간 기준으로 모든 거래 청산 후 최종 손익 표시 희망

구체적인 코드 예시와 함께 답변 부탁드립니다. ㅠㅠ


감사합니다!!!!

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-10-27 16:29:18

안녕하세요. 예스스탁입니다. 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요