커뮤니티
질문 있습니다.
안녕하세요,
질문이 있는데요
포지션별 손절 기능이 작동하지 않습니다 (NetProfit 기반)
60분봉 차트로 추세 추종 시스템에서 포지션별 손절 기능을 구현 중인데, 손절이 전혀 작동하지 않아 도움을 요청드립니다.
구현 목표는 아래와 같습니다.
각 포지션 진입 시 NetProfit 값을 저장
해당 포지션의 손익이 -N pt 도달 시 손절
손절 후에도 시스템은 계속 작동
현재 상황은
Input으로 PositionStopLoss를 20.0으로 설정하고 백테스트 → 결과 A
Input으로 PositionStopLoss를 10.0으로 변경하고 백테스트 → 결과 A (완전 동일!)
시스템 성능에서 일간수익을 보니 -40pt, -147pt 등 설정값을 훨씬 초과하는 손실 발생
그 말은 Input에 수치 입력한 그대로 손절을 하지 않는다는 겁니다. ㅜㅜ
의심되는 부분: 진입 시점의 NetProfit이 제대로 기록되지 않는 것 같습니다. 코드 구조는 아래와 같습니다.
Input : PositionStopLoss(20.0);
var : EntryNetProfit(0);
var : CurrentPL(0);
var : PrevMarketPosition(0);
// 포지션 진입 감지 및 NetProfit 기록
if PrevMarketPosition == 0 and MarketPosition != 0 Then {
EntryNetProfit = NetProfit; // 이 부분이 실행이 안 되는 걸까요?
}
PrevMarketPosition = MarketPosition;
// 손절 체크
if MarketPosition != 0 Then {
CurrentPL = NetProfit - EntryNetProfit;
if PriceScale > 0 Then
CurrentPL = (NetProfit - EntryNetProfit) / PriceScale;
if PositionStopLoss > 0 and CurrentPL <= -PositionStopLoss Then {
if MarketPosition == 1 Then
ExitLong("Stop_L");
if MarketPosition == -1 Then
ExitShort("Stop_S");
}
}**추가 정보:**
- 60분봉 차트 사용 중
- Buy/Sell은 OnClose로 진입
- ShowDebug로 확인해보니 EntryNetProfit 값이 0으로 나옴 (또는 확인 못함)
**전체 코드 흐름:**
1. 신호 발생 → Buy/Sell 명령
2. 포지션 진입 감지 → EntryNetProfit 기록
3. 매 봉마다 손절 체크
질문인데요.
MarketPosition이 0에서 1(또는 -1)로 변경되는 시점은 정확히 언제인가요?
포지션 진입 시점의 NetProfit을 기록하려면 어떻게 해야 하나요?
혹시 EntryPrice를 사용해서 손익을 계산해야 하나요?
위 코드에서 어떤 부분이 잘못되었는지 알려주시면 감사하겠습니다!
추운데 몸 조심하고 건강하세요! 감사합니다!
답변 1
예스스탁 예스스탁 답변
2025-11-19 10:49:41