커뮤니티
질문 있습니다.
질문 요점: 일일 손실 제한 로직 추가 후 시스템 매매 결과가 사라집니다
안녕하세요.
기존에 잘 작동하던 시스템 매매에 일일 손실 제한 기능을 추가했는데,
해당 기능을 켜면(UseDailyStop=1) 매매 신호와 평가표가 모두 사라지는 문제가 발생합니다.
===========================================
증상
===========================================
1. UseDailyStop(0) 설정 시: 정상 작동
2. UseDailyStop(1) 설정 시:
- 차트는 보임
- 매매 신호 없음
- 평가표 결과 없음
- 오류 메시지 없음
===========================================
구현하려는 기능
===========================================
매일 아침 로그인 시 Input으로 수익/손실을 입력하여
일일 손실 한도를 관리하는 시스템입니다.
예시:
- 첫째 주 결과: +310만원
- 둘째 주 월요일 Input:
├─ TodayStartProfit(310)
└─ MaxDailyLoss(-120)
→ 오늘 -120만원 추가 손실 시 강제 청산 + 그날 진입 중단
or
- 첫째 주 결과: -60만원
- 둘째 주 월요일 Input:
├─ TodayStartProfit(-60)
└─ MaxDailyLoss(-100)
→ 오늘 -100만원 추가 손실 시 강제 청산 + 그날 진입 중단
이렇게 구현을 하고 싶은데요.
===========================================
추가한 코드
===========================================
// === Input ===
Input : UseDailyStop(0); // 0=OFF, 1=ON
Input : TodayStartProfit(0); // 오늘 시작 수익
Input : MaxDailyLoss(-100); // 최대 허용 손실
// === 변수 ===
Var : TodayProfit(0);
Var : DailyTradingAllowed(1);
// === 손실 제한 체크 ===
if UseDailyStop == 0 or (TodayStartProfit == 0 and MaxDailyLoss == 0) Then
DailyTradingAllowed = 1;
Else {
TodayProfit = NetProfit - TodayStartProfit;
if TodayProfit <= MaxDailyLoss Then
DailyTradingAllowed = 0;
Else
DailyTradingAllowed = 1;
}
// === 강제 청산 ===
if DailyTradingAllowed == 0 and MarketPosition != 0 Then {
if MarketPosition == 1 Then {
ExitLong("DayL-");
LastExitDate = sDate;
LastExitTime = CurrentTime;
WaitMinutes = 300;
InWaitPeriod = 1;
}
if MarketPosition == -1 Then {
ExitShort("DayS-");
LastExitDate = sDate;
LastExitTime = CurrentTime;
WaitMinutes = 300;
InWaitPeriod = 1;
}
}
// === 진입 조건에 추가 ===
if MarketPosition == 0 and ... and DailyTradingAllowed == 1 Then {
Buy("L", ...);
}
===========================================
시도한 해결 방법
===========================================
1. 청산 로직을 조건문 밖으로 분리 → 실패
2. 변수명 중복 확인 → 없음
3. ExitLong/Short 이름 변경 (DayL-, DayS-) → 실패
4. Else 블록 추가하여 DailyTradingAllowed 재설정 → 실패
===========================================
질문
===========================================
1. NetProfit를 이런 식으로 사용하는 게 문제가 될까요?
2. Exit 명령 위치나 조건에 제약사항이 있을까요?
3. 이런 일일 손실 제한 기능을 구현할 다른 방법이 있을까요?
4. 혹시 변수 초기화나 스코프 문제일 가능성이 있을까요?
도움 부탁드립니다!
감사합니다! ㅠㅠ
답변 1
예스스탁 예스스탁 답변
2025-11-10 10:53:52