답변완료
참조차트(data2)의 데이터가 제대로 안 들어오네요
시뮬레이션차트를 열고요.
기본차트는 기아차 10분봉을 2002년1월2일~2012년12월31일까지 하고요.
첫 번째 참조차트는 현대차 10분봉을 2002년1월2일~2012년12월31일까지로 했을 경우에요.
data2의 가격이 2004년3월25일부터 제대로 안 들어오네요.
아래와 같은 지표식을 만들어 지표를 그려보면 2004년3월25일부터 Plot2가 수평선입니다.
Plot1(c);
Plot2(data2("c"));
기아차 현대차뿐 아니라 딴 종목도 마찬가지로 data2가 제대로 안 들어옵니다.
지표뿐만 아니라 시스템식에서 값을 확인해봐도 그렇고요.
==============================
그리고 시뮬레이션 차트, 시스템 설정도 이상한 게 있는데요.
기아차 10분봉을 2005년1월2일~2012년12월31일까지 로드하면 데이터는 제대로 들어오는거 같은데요.
시스템 설정에서요.
'동일수량 진입'이라고 하면 시뮬레이션 매매가 되는데,
'고정자산 기준 진입'으로하고 기준자산을 1,000,000,000원 단위수량을 10으로 하면 매매가 전혀 안 됩니다.
시스템은 다음과 같은 시스템이고요.
Input : shortPeriod(20), longPeriod(100);
value1 = ma(C, shortPeriod);
value2 = ma(C, longPeriod);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
exitLong();
}
2013-07-14
290
글번호 208050
예스트레이더 (iM증권)
답변완료
YesSpot질문
예스 스팟에 나와있는 시간정정 주문을 선물로 주문을 내는 샘플로 변경한 예제 입니다.
1. 아래의 코딩에서 ID를 부여한후 미체결을 인지하는 코딩은
if(OrderResponse.orderID == ID) 로 보여지는데, 레퍼런스에서 보면
해당코딩은 ID에서 부여한 스팟고유의 번호와 응답에서 받은 고유 번호가 같은 주문
인지를 판단하는 로직으로 보여집니다.
스팟 설명부분에
C.주문응답 이벤트가 발생하면 타이머가 설정이 되고 지정한 60초가 경과한 후 미체결 이면 정정주문을 해야 합니다. 정정주문에 대한 주문응답을 받으면 다시 타이머가 작동되고60초 후에 다시 정정주문을 발생합니다.
==> 주문이 발생한후 해당주문이 체결되었는지, 미체결되었는지 구분하는 코딩셈플을 알고 싶습니다. (제가 이해가 짧은것인지...ㅠ.ㅠ)
2. Unfill 객체를 가지고 특정종목을 매수/매도 주문을 냈을때 , 특정종목의 체결
미체결 여부를 알 수 있는 샘플 코딩 부탁드리겠습니다.
// < 시간 정정 주문>
// 종목객체: Futures(연결선물)
// 계좌객체: A1
var ID; // 전역변수의 선언
var Number;
var timerCnt=0;
// 전략이 예스스팟 전략에 실행될때 ==> 최초 실행시 넣어주어야할 값이나 계산이 있을 때 사용
function Main_OnStart()
{
// 시작과 동시에 선물매수5호가에 주문을 냄
ID=A1.OrderBuy(Futures.code, 1, Futures.Bid(5)-0.25, 0);
Main.MessageLog(" 주문ID " + ID);
Main.MessageLog(" 주무종목 " + Futures.code);
Main.MessageLog(" 1차주문가격 " + Futures.Bid(5)-0.25);
}
//주문에 관한 응답을 받으면
function Main_OnOrderResponse(OrderResponse)
{
if(OrderResponse.orderID == ID)
{
Number = OrderResponse.orderNum;
Main.SetTimer(1,10000); // 10초 동안 타이머를 작동시킴
//LOG
Main.MessageLog(" 주문ID " + ID
+ " 주문번호 " + OrderResponse.orderNum
+ " 주문가격 " + OrderResponse.orderPrice
);
}
}
function Main_OnTimer(nEventID)
{
if(nEventID == 1)
{
ID=A1.OrderReplace(Number,1, Futures.Bid(4)-0.25);
Main.KillTimer(1);
}
// 타이머가 작동한 횟수
timerCnt +=1;
Main.MessageLog(" Timer 작동회수 " + timerCnt );
}
// 주문이 체결되면 타이머 중지
function Main_OnNotifyFill(NotifyFill)
{
if(NotifyFill.orderNum == Number)
Main.KillTimer(1);
}
2013-07-10
228
글번호 208039
예스트레이더 (iM증권)