Search
📝

당일 포지션별 진입횟수 계산

var : TotalCount(0),PreDay(0),DayEntry(0); var : i(0),BuyEntry(0),SellEntry(0); TotalCount = TotalTrades; if Bdate != Bdate[1] Then PreDay = TotalCount[1]; BuyEntry = 0; SellEntry = 0; //현재 진행중인 포지션이 있으면 카운트에 포함되도록 //0부터 당일청산완료된 거래횟수 만큼 루프 For i = 0 to TotalCount-PreDay { if MarketPosition(i) == 1 Then BuyEntry = BuyEntry+1; if MarketPosition(i) == -1 Then SellEntry = SellEntry+1; }
JavaScript
복사
[설명] MarketPosition, CurrentContracts를 사용해 전봉과의 단순비교로만 계산하게 되면 한봉에 매수진입과 매도진입이 모두 발생했을 경우 봉의 최종값만 해당 함수들이 리턴하므로 놓치는 거래가 발생할 수 있습니다. 포지션별 진입횟수는 MarketPosition함수를 이용해 카운트되게 작성하면 됩니다. [예제]
//당일 최대진입횟수는 5번이고 //한방향 진입도 최대 3번까지만 가능 input : 당일최대진입횟수(5),매수최대진입횟수(3),매도최대진입횟수(3); var : TotalCount(0),PreDay(0); var : i(0),BuyEntry(0),SellEntry(0); TotalCount = TotalTrades; if Bdate != Bdate[1] Then PreDay = TotalCount[1]; BuyEntry = 0; SellEntry = 0; //현재 진행중인 포지션이 있으면 카운트에 포함되도록 //0부터 당일청산완료된 거래횟수 만큼 루프 For i = 0 to TotalCount-PreDay { if MarketPosition(i) == 1 Then BuyEntry = BuyEntry+1; if MarketPosition(i) == -1 Then SellEntry = SellEntry+1; } value1 = ma(c,20); if crossup(c,value1) Then { if BuyEntry+SellEntry < 당일최대진입횟수 and BuyEntry < 매수최대진입횟수 Then Buy("매수진입"); Else ExitShort("sx"); } if CrossDown(c,value1) Then { if BuyEntry+SellEntry< 당일최대진입횟수 and SellEntry < 매도최대진입횟수 Then Sell("매도진입"); Else ExitLong("bx"); } if MarketPosition == 1 and CrossDown(c,value1) Then ExitLong("매수청산"); if MarketPosition == -1 and CrossUp(c,value1) Then ExitShort("매도청산"); #손절 1포인트 SetStoploss(1,PointStop); #목표수익 1포인트 SetStopProfittarget(1,PointStop); #당일15시 청산 SetStopEndofday(150000);
JavaScript
복사
#국내선물#국내옵션 #해외선물 #해외옵션