예스스탁
예스스탁 답변
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);
}
즐거운 하루되세요