아래수식을 모의거래에 적용을 해보았는데,
"시작" 메세지 이후 아무런 시스템 작동이 안되네요!!
어디에 문제점이 있나요?
참조 1. 차트객체명 : C1
2. 종목객체명 : SP -------> E-mini S&P 500 ( 2016.3)
3. 계좌객체명 : A1
/* 스크립트시작------------------------------ */
var Position;
var OrderCode;
var BID;
var SID;
var SNum;
var BNum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrderCode = Main.GetOrderCode(SP.Code);
}
function C1_OnRiseSingal(Singal)
{
Main.MessageLog("신호완성/"+Singal.SinalKind);
if (Sinal.SinalKind == 1)
{
Position = 1;
BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0);
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Sinal.SingKind == 2)
{
if (BuyFill == 1)
{
A1.OrderSell(SP.Code, 1, SP.Bid(2),0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(Bnum);
Main.MessageLog("매수청산취소");
}
}
if (Sinal.sinalKind == 3)
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Singal.singalKind == 4)
{
if (SellFill == 1)
{
A1.OrderBuy(SP.Code, 1, Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.ordNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
/* 스크립트 끝-----------------------------*/
답변 1
예스스탁
예스스탁 답변
2016-01-19 19:56:01
안녕하세요
예스스탁입니다.
작성하신 수식에
이벤트나 객체의 철자가 잘못된 곳이 있고
또한 대소문자도 구별도 잘못되어 있는 곳이 있습니다.
var Position;
var OrderCode;
var BID;
var SID;
var SNum;
var BNum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrderCode = Main.GetOrderCode(SP.Code);
}
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
if (Signal.signalKind == 1)
{
Position = 1;
BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0);
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Signal.signalKind == 2)
{
if (BuyFill == 1)
{
A1.OrderSell(SP.Code, 1, SP.Bid(2),0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(BNum);
Main.MessageLog("매수청산취소");
}
}
if (Signal.signalKind == 3)
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Signal.signalKind == 4)
{
if (SellFill == 1)
{
A1.OrderBuy(SP.Code, 1, Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.orderNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
즐거운 하루되세요
> 너무조아 님이 쓴 글입니다.
> 제목 : 무슨 문제인가요?
> 아래수식을 모의거래에 적용을 해보았는데,
"시작" 메세지 이후 아무런 시스템 작동이 안되네요!!
어디에 문제점이 있나요?
참조 1. 차트객체명 : C1
2. 종목객체명 : SP -------> E-mini S&P 500 ( 2016.3)
3. 계좌객체명 : A1
/* 스크립트시작------------------------------ */
var Position;
var OrderCode;
var BID;
var SID;
var SNum;
var BNum;
var BuyFill;
var SellFill;
function Main_OnStart()
{
Main.MessageLog("시작");
Position = 0;
OrderCode = Main.GetOrderCode(SP.Code);
}
function C1_OnRiseSingal(Singal)
{
Main.MessageLog("신호완성/"+Singal.SinalKind);
if (Sinal.SinalKind == 1)
{
Position = 1;
BID = A1.OrderBuy(SP.Code, 1, SP.Ask(2),0);
Main.MessageLog("매수진입");
BuyFill = 0;
}
if (Position == 1 && Sinal.SingKind == 2)
{
if (BuyFill == 1)
{
A1.OrderSell(SP.Code, 1, SP.Bid(2),0);
Main.MessageLog("매수청산실행");
}
if (BuyFill == 0)
{
A1.OrderCancel(Bnum);
Main.MessageLog("매수청산취소");
}
}
if (Sinal.sinalKind == 3)
{
Position = -1;
SellFill = 0;
SID = A1.OrderSell(SP.Code, 1, SP.Bid(2), 0);
Main.MessageLog("매도진입");
}
if (Position == -1 && Singal.singalKind == 4)
{
if (SellFill == 1)
{
A1.OrderBuy(SP.Code, 1, Ask(2), 0);
Main.MessageLog("매도청산");
}
if (SellFill == 0)
{
A1.OrderCancel(SNum);
Main.MessageLog("매도청산취소");
}
}
}
function Main_OnOrderResponse(OrderResponse)
{
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.ordNum;
}
}
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
BuyFill = 1;
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
SellFill = 1;
}
}
/* 스크립트 끝-----------------------------*/