커뮤니티

질문 있습니다.

프로필 이미지
스오어스
2025-10-26 19:26:42
71
글번호 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 즐거운 하루되세요