답변완료
안녕하세요 질문 있습니다.
SetStopLoss 손절 정확도 관련 문의 (PriceScale 사용법 포함)
안녕하세요.
해외선물 시스템매매에서 SetStopLoss를 사용한 손절이 설정값보다 큰 손실로 청산되는 문제로 문의드립니다.
현재 상황:
SetStopLoss(1.5, PointStop)로 1.5포인트 손절 설정했는데
실제 청산은 1.8~2.5포인트에서 발생, 이유를 알고보니 1.5 손절 도달 했지만 종가 끝나고 다음 캔들에서 바로 청산함
OnClose 방식으로 진입 후 손절 설정
현재 사용 중인 코드:
Buy("BreakUp", OnClose, Def, 1);
SetStopLoss(StopTicks, PointStop); // StopTicks = 1.5
Sell("BreakDown", OnClose, Def, 1);
SetStopLoss(StopTicks, PointStop);
문제점:
1.5포인트 손절 설정했으나 실제로는 1.5 넘었다는 캔들 종가 확인 후 1.8~2.5포인트에서 청산(캔들 높낮이 상황에 다름)
종가 진입 후 다음 봉에서 손절 체결되면서 변동성 큰 구간에서 손절가를 크게 뚫고 청산하니 손해가 막심합니다.
추가 발견사항:
다른 질문 답변에서 예스스탁이 제공한 코드를 보니:
SetStopLoss(PriceScale*손절틱수,PointStop);
SetStopProfittarget(PriceScale*익절틱수,PointStop);
이렇게 PriceScale을 곱해서 사용하고 있더라고요.
질문사항:
OnClose 진입 시 SetStopLoss의 정확한 실행 타이밍은 언제인가요?
SetStopLoss 설정 시 PriceScale을 곱해야 하는지, 아니면 포인트값을 직접 입력해야 하는지 궁금합니다.
제가 현재 SetStopLoss(1.5, PointStop)로 설정한 것이 맞는 방법인가요? 아니면 SetStopLoss(1.5*PriceScale, PointStop)로 해야 하나요?
설정한 손절가에 최대한 가깝게 청산하는 권장 방법이 있나요?
실시간 손절 방식과 SetStopLoss 방식 중 어떤 것이 더 정확한가요?
진입과 동시에 손절 주문을 OCO 방식으로 설정하는 방법이 있나요?
실시간 손절 대안 코드:
if MarketPosition == 1 and L <= AvgEntryPrice - StopTicks then
ExitLong("Stop_L", AtMarket);
if MarketPosition == -1 and H >= AvgEntryPrice + StopTicks then
ExitShort("Stop_S", AtMarket);
해외선물에서 정확한 손절을 위한 최적의 방법과 PriceScale 사용법에 대한 조언 부탁드립니다.
추가할 질문:
OCO 주문 관련:
진입과 동시에 손절/익절 주문을 미리 걸어두는 OCO(One Cancels Other) 주문이나 브래킷 주문이 지원되나요?
예) 3700.0 매도 진입 시 동시에 3701.5 손절 매수주문, 3697.0 익절 매수주문을 대기시키는 방법
현재 SetStopLoss 대신 자동으로 지정가 손절 주문을 거는 방법이 있나요?
Buy("entry") 후 즉시 Sell("stop", AtStop, EntryPrice + StopTicks) 이런 방식으로요
실무적 질문:
1분봉 기준 매매에서 틱 단위 실시간 손절 체크가 시스템 성능에 부담을 주나요?
SetStopLoss의 정확한 작동 로그나 디버깅 정보를 확인할 수 있는 방법이 있나요?
감사합니다.
답변완료
지표관련 문의 드립니다.
안녕하세요 운영자님
1. 다름이 아니오라 볼린저밴드의 상한선과 하한선의 현재가격에 첨부된 그림과 같이 가로선이 그려지게 가능한지 문의 드립니다.
2. 다음의 수식에도 린저밴드의 상한선과 하한선의 현재가격에 첨부된 그림과 같이 가로선이 그려지게 부탁드립니다.
선의 색이나 굵기는 속성창에서 선택가능하도록 부탁드립니다.
input : Period(20),dv(2);
var : bbmd(0),SumSqrt(0),cnt(0),stdv(0);
var : bbup(0),bbdn(0);
bbmd = (C+AccumN(C,Period-1))/Period;
SumSqrt = (C-bbmd)^2;
For cnt = 0 To Period - 2
{
SumSqrt = SumSqrt + (C[cnt] - bbmd)^2;
}
Stdv = SquareRoot(SumSqrt / Period);
bbup = BBmd + stdv*dv;
bbdn = BBmd - stdv*dv;
Plot1(bbup,"상단");
Plot2(bbmd,"중단");
Plot3(bbdn,"하단");
//오른쪽으로 1봉 이동
FixPlotShift(1,1);
FixPlotShift(2,1);
FixPlotShift(3,1);
답변완료
궁금합니다.
예스님이 올려주신 매수,매도 잔량 지표인데요.
사진처럼 나오는건 매도잔량이 많다는 표시인거 맞나요?
if Bids > Asks Then
{
Plot1(Bids,"잔량1",Red);
Plot2(Asks,"잔량2",Blue);
}
Else
{
Plot1(Asks,"잔량1",Blue);
Plot2(Bids,"잔량2",Red);
}