예스스탁
예스스탁 답변
2023-04-14 14:51:43
안녕하세요
예스스탁입니다.
올려주신 내용은 수식으로 별도로 처리할 내용이 없습니다.
피라미딩 설정이나 직접 의도에 맞게 수정하셔야 합니다.
1
올려주신 내용은 파리미딩설정으로 처리하셔야 합니다.
청산되지 않으면 진입별로 1회 진입하셔야 하므로
피라미딩을 다른진입신호만 허용으로 설정하고 적용하시면 됩니다.
2
현재 진입수량이 1번진입부터 6번까지 총 28개 입니다.
글에는 26으로 되어 있는데
해당 부분 의도하시는 내용에 맞게 수량 조정하시기 바랍니다.
3
atlimit타입은
매수에서는 지정한 가격 이하
매도에서는 지정한 가격 이상입니다.
현재 매도가격이 여러가격 중 최저가 입니다.
해당 최저가보다 현재가격이 높으면 청산발생후 바로 동일진입이 발생할 수 있습니다.
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
아래와 같이 코딩했는데 제가 생각했던 의도대로 되지 않아서요
보완좀 부탁드립니다.
Inputs : PT(50),SL(300);
Inputs : TS(10),TP(30);
Inputs : 매수물타기(30),매도물타기(30) ;
Inputs : 익절폭(10) ;
Inputs : 틱사이즈(0.00005) ;
Inputs : 이평기간1(20);
Inputs : SP(24), LP(52), SigP(18);
Var : 이평20(0) ;
Var : MACDV(0), MACDsig(0) ; //MACD
var : 매수가격(0), 매도가격(0);
Var : 주가추세(0);
이평20 = ema(C,이평기간1) ;
MACDV = MACD(sP, lP);
MACDsig = ema(MACDV,SIGP);
if countif(C>이평20,5)>=3 and countif(이평20>이평20[1],5)>=3 and countif(Macdv>macdv[1],5)>=3 and countif(MACDV>MAcdsig,5)>=3 then
주가추세 = 1 ;
else if countif(C<이평20,5)>=3 and countif(이평20<이평20[1],5)>=3 and countif(Macdv<macdv[1],5)>=3 and countif(MACDV<MAcdsig,5)>=3 then
주가추세 = -1 ;
else
주가추세 = 0 ;
var1 = 매수물타기*PriceScale;
If marketposition == 0 and 주가추세 == 1 then
{
Buy("B1",OnClose,DEf,1);
매수가격 = Max(C,EntryPrice(0),LatestEntryPrice(0)) ;
}
if MarketPosition == 1 Then
{
매수가격 = Max(C,EntryPrice(0),AvgEntryPrice,LatestEntryPrice(0)) ;
if MaxEntries(0) == 1 then
Buy("B2",AtLimit,매수가격-var1*MaxEntries,1);
if MaxEntries(0) == 2 Then
Buy("B3",AtLimit,매수가격-var1*MaxEntries,2);
if MaxEntries(0) == 3 Then
Buy("B4",AtLimit,매수가격-var1*MaxEntries,4);
if MaxEntries(0) == 4 Then
Buy("B5",AtLimit,매수가격-var1*MaxEntries,8);
if MaxEntries(0) == 5 Then
Buy("B6",AtLimit,매수가격-var1*MaxEntries,12);
if OpenPositionProfit/틱사이즈 > 익절폭*PriceScale Then
ExitLong("BX",AtLimit,C+익절폭*PriceScale);
}
var2 = 매도물타기*PriceScale;
If marketposition == 0 and 주가추세 == -1 then
{
Sell("S1",OnClose,DEf,1);
매도가격 = Min(C,EntryPrice(0),LatestEntryPrice(0)) ;
}
if MarketPosition == -1 and CurrentContracts <= 총계약수 Then
{
매도가격 = Min(C,EntryPrice(0),AvgEntryPrice,LatestEntryPrice(0)) ;
if MaxEntries(0) == 1 then
Sell("S2",AtLimit,매도가격+var2*MaxEntries,1);
if MaxEntries(0) == 2 Then
Sell("S3",AtLimit,매도가격+var2*MaxEntries,2);
if MaxEntries(0) == 3 Then
Sell("S4",AtLimit,매도가격+var2*MaxEntries,4);
if MaxEntries(0) == 4 Then
Sell("S5",AtLimit,매도가격+var2*MaxEntries,8);
if MaxEntries(0) == 5 Then
Sell("S6",AtLimit,매도가격+var2*MaxEntries,12);
if OpenPositionProfit/틱사이즈 > 익절폭*PriceScale Then
ExitShort("SX",AtLimit,C-익절폭*PriceScale);
}
SetStopLoss(SL*PriceScale,PointStop);
SetStopProfittarget(PT*PriceScale,PointStop);
SetStopTrailing(TS*PriceScale,TP*PriceScale,PointStop);
위 같이 코딩했는데요.
물타기 할때최대 5번까지 진입하고 싶은데
매매 내역을 보니까 여러번 진입 했습니다.
5번째 진입 후 청산 후 다시 진입은 가능하지만
청산되지 않은 시점에서 다시 추가로 진입이 되었습니다.
그리고 가격도 동일한 가격으로 진입이 됩니다.
총 누적 계약수가 최대 26계약까지 가능한데
26계약 이상으로 매수진입이 되어서요.
미청산 상태에서는 추가 진입이 되지 않도록
수정 좀 부탁드립니다.