답변완료
수식 문의 드립니다.
안녕하세요
아래 수식에서 매수와 매도 조건에 따라 "b" "b2" "b3" 와 "s" "s2" "s3"가 있는데
"b"의 조건으로 매수한 후 "s2"나 "s3"의 조건이 와서 진입하더라도 b의 조건과 겹쳐서
다음 3분봉에서 바로 "b"로 진입하게 돼서 원래의 의도와는 다르게 진입하게 됩니다.
만약 "s2" "s3" 되어서 진입하게 되면 진입한 봉 이후 3번째 봉까지는 "b"의 진입 조건을 무시하고 싶습니다.
반대로 "b2"나 "b3" 되어서 진입하게 되면 진입한 봉 이후 3번째 봉까지는 "s"의 진입 조건을 무시하고 싶습니다.
이 경우 수식을 어떻게 작성해야 하는지 문의 드립니다.
항상 도와주셔서 감사합니다.
if MarketPosition >= 0 and mav1 < mav2 and c>=avgv Then
Sell("s",AtMarket,Def,1);
if MarketPosition <= 0 and mav1 > mav2 and c<=avgv Then
Buy("b",AtMarket,Def,1);
if Condition3 == False Then
{
# 매수 2번 연속 손절이면 매도로 진입
if MarketPosition == 0 and
entry > 1 and
(MarketPosition(1) == 1 and ExitName(1) == "StopLoss") and
(MarketPosition(2) == 1 and ExitName(2) == "StopLoss") Then
{
Sell("s2",AtMarket);
}
# 매도 2번 연속 손절이면 매수로 진입
if MarketPosition == 0 and
entry > 1 and
(MarketPosition(1) == -1 and ExitName(1) == "StopLoss") and
(MarketPosition(2) == -1 and ExitName(2) == "StopLoss") Then
{
Buy("b2",AtMarket);
}
# 매수 후 20 포인트 이상 상승 후 하락하여 진입가에 오면 스위칭
if MarketPosition == 1 and highest(H,BarsSinceEntry) >= EntryPrice+20 Then
{
Sell("s3",AtStop,EntryPrice(0)+10);
}
# 매도 후 20 포인트 이상 하락 후 상승하여 진입가에 오면 스위칭
if MarketPosition == -1 and Lowest(L,BarsSinceEntry) <= EntryPrice-20 Then
{
Buy("b3",AtStop,EntryPrice(0)-10);
}
2023-04-14
1061
글번호 168176
시스템
답변완료
수식 부탁드립니다
해외선물 수식 부탁드립니다
분봉조건 AND 틱봉조건 만족 수식요청입니다
진입 : 진입조건1(1분봉) AND 진입조건2(10틱봉) 만족 시 진입
청산 : 청산조건1 만족 시 청산
손절 : 진입가 대비 10틱 하락 시 강제청산
진입조건1 (1분봉)
1분 봉 단순이평(5,20,60)
역배열 상태
AND
Stochastics Fast (100,100)
StochasticsK가 20이하
AND
Stochastics Fast (10,10)
Stoch-Fast가 10이하
진입조건2 (10틱봉)
10틱봉 단순이평(5,20,60)
역배열 상태
AND
Stochastics Fast (100,100)
StochasticsK가 20이하
Stoch-Fast > StochasticsK (정배열)
AND
Stochastics Fast (10,10)
Stoch-Fast가 10이하
---------------------------------------------
청산조건1
10틱봉 단순이평(5,20,60)
정배열 상태
AND
Stochastics Fast (100,100)
StochasticsK가 80이상
Stoch-Fast < StochasticsK (역배열)
2023-04-14
805
글번호 168175
시스템
답변완료
시스템식 부탁드립니다.
항상 도움 주셔서 감사합니다.
아래와 같이 코딩했는데 제가 생각했던 의도대로 되지 않아서요
보완좀 부탁드립니다.
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계약 이상으로 매수진입이 되어서요.
미청산 상태에서는 추가 진입이 되지 않도록
수정 좀 부탁드립니다.
2023-04-14
1015
글번호 168174
시스템