커뮤니티
신호가 발생하지 않는 시스템식 오류수정 부탁드립니다.
2014-11-01 14:17:18
197
글번호 79988
안녕하세요 다음과 같은 매매식을 만들었는데 오류수정 부탁드립니다.
Input: EntryStart(93000), EntryClose(143000), MaxTradeN(1), ExpiryDay(0);
Var: Counter(0);
// General Variables
// 전역 변수를 선언한다
// 현재의 매매횟수, 장종료시간, 진입필터와 트리거, 청산트리거 등
Var: NthTrade(0), EndOfDay(150400);
Var: LongFilter(False), ShortFilter(False), GeneralFilter(False);
Var: LongTrigger(False), ShortTrigger(False), xLongTrigger(False), xShortTrigger(False);
//Initialization
//초기화
// 새로운 하루가 시작된다
If DayIndex == 0 || BarIndex == 0 Then {
If ExpiryDay == 1 Then {
EndOfDay = 144900;
}
NthTrade = 0;
}
// What to Do before TradingBarIndex
If sTime < EntryStart Then {
GeneralFilter = False;
}
// What to Do while Trading
Else If sTime>=EntryStart && sTime<=EntryClose Then {
GeneralFilter = True;
}
// What to Do after Last Entry
// 신규진입이 거절된 이후 시간에 해야 할 일들을 정리한다
// 잔여 포지션의 청산 관련
Else {
GeneralFilter = False;
}
// 기본 진입조건의 검증
// 분봉 상태에서 거래횟수 제한을 검증한다
GeneralFilter = GeneralFilter && DataCompress == 2 && NthTrade < MaxTradeN;
// ENTRY
// 기본적인 진입환경이 만족되면 진입을 위한 작업을 개시한다
// 선물 1계약 기준
If MarketPosition == 0 && GeneralFilter Then {
// Filter Verification
// 진입필터의 적용
LongFilter = data2(c)<0 and data3(c)<0 and data4(c)>0 ;
ShortFilter = data2(c)>0 and data3(c) >0 and data4(c)<0;
// 진입과 동시에 매매횟수 증가
If LongFilter && LongTrigger Then {
Buy("B",AtMarket); NthTrade = NthTrade+1;
}
If ShortFilter && ShortTrigger Then {
Sell("S",AtMarket); NthTrade = NthTrade+1;
}
}
// EXIT
//Else If MarketPosition != 0 Then
//(
// Long Exit
// 매수 포지션의 청산 규칙 적용
If MarketPosition == 1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitLong();
}
// Short Exit
// 매도 포지션의 청산 규칙 적용
If MarketPosition == -1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitShort();
}
//}
// End of Day
// 어쨌든 당일 청산
SetStopEndofday(EndOfDay);
답변 1
예스스탁 예스스탁 답변
2014-11-03 11:01:31
안녕하세요
예스스탁입니다.
LongTrigger와 ShortTrigger가 변수만 선언이 되어 있고
조건값이 없습니다. 계속 false이므로 신호가 발생하지 않습니다.
해당 내용 if문에서 삭제하면 신호가 발생합니다.
즐거운 하루되세요
> 봉자 님이 쓴 글입니다.
> 제목 : 신호가 발생하지 않는 시스템식 오류수정 부탁드립니다.
> 안녕하세요 다음과 같은 매매식을 만들었는데 오류수정 부탁드립니다.
Input: EntryStart(93000), EntryClose(143000), MaxTradeN(1), ExpiryDay(0);
Var: Counter(0);
// General Variables
// 전역 변수를 선언한다
// 현재의 매매횟수, 장종료시간, 진입필터와 트리거, 청산트리거 등
Var: NthTrade(0), EndOfDay(150400);
Var: LongFilter(False), ShortFilter(False), GeneralFilter(False);
Var: LongTrigger(False), ShortTrigger(False), xLongTrigger(False), xShortTrigger(False);
//Initialization
//초기화
// 새로운 하루가 시작된다
If DayIndex == 0 || BarIndex == 0 Then {
If ExpiryDay == 1 Then {
EndOfDay = 144900;
}
NthTrade = 0;
}
// What to Do before TradingBarIndex
If sTime < EntryStart Then {
GeneralFilter = False;
}
// What to Do while Trading
Else If sTime>=EntryStart && sTime<=EntryClose Then {
GeneralFilter = True;
}
// What to Do after Last Entry
// 신규진입이 거절된 이후 시간에 해야 할 일들을 정리한다
// 잔여 포지션의 청산 관련
Else {
GeneralFilter = False;
}
// 기본 진입조건의 검증
// 분봉 상태에서 거래횟수 제한을 검증한다
GeneralFilter = GeneralFilter && DataCompress == 2 && NthTrade < MaxTradeN;
// ENTRY
// 기본적인 진입환경이 만족되면 진입을 위한 작업을 개시한다
// 선물 1계약 기준
If MarketPosition == 0 && GeneralFilter Then {
// Filter Verification
// 진입필터의 적용
LongFilter = data2(c)<0 and data3(c)<0 and data4(c)>0 ;
ShortFilter = data2(c)>0 and data3(c) >0 and data4(c)<0;
// 진입과 동시에 매매횟수 증가
If LongFilter && LongTrigger Then {
Buy("B",AtMarket); NthTrade = NthTrade+1;
}
If ShortFilter && ShortTrigger Then {
Sell("S",AtMarket); NthTrade = NthTrade+1;
}
}
// EXIT
//Else If MarketPosition != 0 Then
//(
// Long Exit
// 매수 포지션의 청산 규칙 적용
If MarketPosition == 1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitLong();
}
// Short Exit
// 매도 포지션의 청산 규칙 적용
If MarketPosition == -1 and (data2(c)>0 or data3(c)>0 or data4(c)<0) Then {
ExitShort();
}
//}
// End of Day
// 어쨌든 당일 청산
SetStopEndofday(EndOfDay);
다음글
이전글