커뮤니티

수식요청드립니다.

프로필 이미지
뮬란
2026-01-20 14:08:57
60
글번호 229931
답변완료

안녕하세요.


1. 직전청산이 손실시 금번 진입 수량은 청산된 수량+1(최대 10개)

직전청산이 이익시 금번 진입 수량은 청산된 수량-1(최소1개)


2. 당일 첫번째 진입시에는 진입수량을 10개


진입 및 청산 주문은 atstop을 사용하고

위 처럼 수량이 조절되도록 수식 부탁드립니다.


감사합니다.

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

예스스탁 예스스탁 답변

2026-01-21 13:46:00

안녕하세요 예스스탁입니다. 주석 참고하시기 바랍니다. input : 첫진입수량(10), 최소수량(1),최대수량(10); var : mav1(0),mav2(0); var : TT(0),T1(0),Entry(0),EntryVol(0); var : BuyAtStopPrice(0),SellAtStopPrice(0); mav1 = ma(C,20); mav2 = ma(C,60); TT = TotalTrades; if Bdate != Bdate[1] Then { T1 = TT[1]; } entry = TT-T1+IFF(MarketPosition!=0,1,0); if MarketPosition <= 0 and CrossUp(mav1,mav2) Then { //매수감시가격 골드봉 고가+3틱 BuyAtStopPrice = H+PriceScale*3; //현재 무포지션 if MarketPosition == 0 Then { //첫진입이면 수량은 기본수량 if entry == 0 Then EntryVol = 첫진입수량; Else //첫진입이 아니면 { if PositionProfit(1) < 0 Then EntryVol = min(MaxContracts(1)+1,최대수량); //직전거래가 손실이면 직전거래수량 +1과 최대수량 중 작은 값 Else EntryVol = max(EntryVol-1,최소수량); //직전거래가 손실이 아니면 직전거래수량-1과 최소수량 중 큰값 } } Else //무포지션이 아니면(매도포지션) { if MarketPosition == -1 Then { //진입이 AtStop인데 PositionProfit이 종가로만 리턴되므로 //완성봉종가와 다음봉시가의 차이를 손익에 추가해야 함 //단 다음봉시가가 매수감시가격보다 크면 다음봉시가에 신호가 발생하므로 //매수감시가격과 다음봉시가 중 큰값과의 차이로 계산해야 함 if PositionProfit+(C-max(BuyAtStopPrice,NextBarOpen))*CurrentContracts < 0 Then EntryVol = min(MaxContracts(1)+1,최대수량); //현재 거래가 손실이면 직전거래수량 +1과 최대수량 중 작은 값 Else EntryVol = max(EntryVol-1,최소수량); //현재거래가 손실이 아니면 직전거래수량-1과 최소수량 중 큰값 } } //골드 발생하고 다음봉에서 골드봉 고가+3틱 이상의 시세가 발생하면 즉시 매수 Buy("b",AtStop,BuyAtStopPrice,EntryVol); } if MarketPosition >= 0 and CrossDown(ma(c,5),ma(c,20)) Then { //매도감시가격 데드봉 저가-3틱 SellAtStopPrice = L-PriceScale*3; //현재 무포지션 if MarketPosition == 0 Then { //첫진입이면 수량은 기본수량 if entry == 0 Then EntryVol = 첫진입수량; Else //첫진입이 아니면 { if PositionProfit(1) < 0 Then EntryVol = min(MaxContracts(1)+1,최대수량); //직전거래가 손실이면 직전거래수량 +1과 최대수량 중 작은 값 Else EntryVol = max(EntryVol-1,최소수량); //직전거래가 손실이 아니면 직전거래수량-1과 최소수량 중 큰값 } } Else //무포지션이 아니고(매수포지션) { //진입이 AtStop인데 PositionProfit이 종가로만 리턴되므로 //완성봉종가와 매도감시가격의 차이를 손익에 추가해야 함 //단 다음봉시가가 매도감시가격보다 작으면 다음봉시가에 신호가 발생하므로 //매도감시가격과 다음봉시가 중 작은값과의 차이로 계산해야 함 if PositionProfit+(min(SellAtStopPrice,NextBarOpen)-C)*CurrentContracts < 0 Then EntryVol = min(MaxContracts(1)+1,최대수량); //현재 거래가 손실이면 직전거래수량 +1과 최대수량 중 작은 값 Else EntryVol = max(EntryVol-1,최소수량); //현재거래가 손실이 아니면 직전거래수량-1과 최소수량 중 큰값 } EntryVol = min(EntryVol,최대수량); //데드 발생하고 다음봉에서 데드봉 저가-3틱 이하의 시세가 발생하면 즉시 매도 Sell("S",AtStop,SellAtStopPrice,EntryVol); } 즐거운 하루되세요