커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

블록코딩에서 리밸런싱날짜를 함수나 변수로 설정할수 있나요?

LimSung Hyun 2021.05.06 12:36 조회수  258 추천 0


리밸런싱날짜를 고정값이 아니라 함수, 변수로 설정해보고 싶어서 이것저것 시도해봤는데 잘 안되네요. 리밸런싱 주기탭은 날짜값이나 날짜값 리스트가 아니면 동작이 안되는 건가요?

댓글 7
블록 알고리즘은 사용편리성을 위해 기능적으로 제한을 많이 한 것이라서, 리밸런싱 날짜를 자유자재로 지정할 수 없고, 고정된 날짜 규칙을 사용하셔야 합니다.
보다 많은 자유도를 가지고 아이디어를 테스트해 보시려면 결국 스크립트로 알고리즘을 작성하셔야 할 것 같습니다.
감사합니다.
인텔리퀀트 2021.05.06 12:49
구체적으로 알려주실 수 있나요?
koa55 2021.05.06 21:53
스크립트로 예시를 들어달라는 말씀으로 이해하고 예시를 아래와 같이 만들어 보았습니다:
------------------------------------------------------------------------------------------------------------------------------------
function initialize() {
	IQDate.addRebalSchedule(IQDate.setMonthlyStart(1));  // 매월 1일 리밸런싱 - 디폴트 설정
}

......

function newRebalDate(today) {	// 조건에 따라 리밸런싱 날짜 또는 규칙을 바꾸는 사용자 정의 함수
	var new_daterule;

	if (today.getMonth()+1 >= 5 && today.getMonth()+1 <= 10) { // 5월 ~ 10월 사이
		new_daterule = IQDate.setMonthlyStart(15);  // 리밸런싱 주기를 매월 15일로 설정 
	} else {
		new_daterule = IQDate.setWeekly(1);  // 리밸런싱 주기를 매주 월요일로 설정합니다
	}
    
    return new_daterule;
}

function onDayClose(now) {
	IQDate.resetRebalSchedule();	// 리밸런싱 규칙 초기화
	IQDate.addRebalSchedule(newRebalDate(now));   // 오늘(now)에 해당하는 리밸런싱 날짜규칙을 호출

	if (IQDate.isRebalancingDay(now)) {
		// 리밸런싱 수행
	}
}

------------------------------------------------------------------------------------------------------------------------------------

블록 알고리즘에서는 리밸런싱 규칙이 무조건 initialize() 함수 내에만 코드가 생성되도록 하였기 때문에 동적으로 변화하는 규칙을 사용할 수 없습니다.
인텔리퀀트 2021.05.06 23:33
엌...게시글 작성자분께 어떤걸 원하는지 물어본 것이었는데 제가 좀 모호하게 썼나봅니다..
올려주신 스크립트는 감사합니다! 유용하게 쓰겠습니다 :)
koa55 2021.05.07 01:01
답변들 감사합니다. 투자공부랑 병행하기 힘들어서 한동안 자바스크립트쪽은 놓고 있었는데 다시 해봐야겠네요.
LimSung Hyun 2021.05.07 16:36
리밸런싱 주기를 매일로 놓고
함수를 만들어서 리밸런싱 시그널이 최초 발생할 때의 종목, 수량 매일 반영시켜주면 비슷하게 구현은 가능할 수도 있습니다. 비효율적이긴 하지만 ㅎㅎ;

아래 링크가 도움이 될지도 모르겠습니다
https://www.intelliquant.co.kr/article/865?forum=0
koa55 2021.05.07 16:59
좋은 정보네요~~ 감사합니다
자본주의 2021.05.31 10:26
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글