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
복사
#국내선물#국내옵션 #해외선물 #해외옵션