답변완료
1020 질문에 사용된 수식
안녕하세요?
아래 1020 질문 관련하여 사용한 수식입니다.
수식은 지극히 초보적인 것으로 예스스탁에서 초기에 올려주신 수식입니다.
1020질문 답변 바랍니다.
문제는 장 초반에 매수가 4주 정도는 되야 하는데 주문 수량이 0으로 찍히면서 주문이 안되었다는 겁니다. 거기다가 장 중반에는 프로그램이 잘 작동하는 것을 확인했습니다.
감사합니다.
//스크립트 객체 화면에서 아래와 같이 지정하고 식적용하시면 됩니다.
//계좌객체 추가 --> 속성에서 객체명은 Account1, 주문할 계좌번호 지정
//차트객체 추가 --> 속성에서 객체명은 Chart1, 차트아이디를 부여후 차트에 동일아이디 지정
//종목객체 추가 --> 속성에서 객체명은 MarketData1, 종목은 코덱스 레버리지로 지정
//종목객체 추가 --> 속성에서 객체명은 MarketData2, 종목은 코덱스 레버리지로 지정
//각 객체에 대한 설명은 예스스팟 도움말 참고하시기 바랍니다.
var Money = 50000;//금액
var Start;
var Bcode,Bprice,Bvol;
var Scode,Sprice,Svol;
function Main_OnStart()
{
Start = 0;
}
//신호발생
function Chart2_OnRiseSignal(Signal)
{
//차트 Buy 신호 발생
if (Signal.signalKind == 1)
{
Start = 1;
//매수종목코드
Bcode = MarketData1.code;
//매수종목 매도5호가
Bprice = MarketData1.Ask(5);
//지정한 금액으로 수량계산
Bvol = Math.floor(Money/Bprice);
//매도 5호가에 지정한 수량 매수
Account1.OrderBuy(Bcode, Bvol,Bprice, 0);
}
//차트 Exitlong 신호 발생
if (Signal.signalKind == 2 && Start == 1)
{
//매수5호가 매도
Account1.OrderSell(Bcode,Bvol,MarketData1.Bid(5), 0)
}
//차트 Sell 신호 발생
if (Signal.signalKind == 3)
{
Start = 1;
//매수주문종목
Scode = MarketData2.code;
//매수종목 매도 5호가
Sprice = MarketData2.Ask(5);
//지정한 금액으로 수량계산
Svol = Math.floor(Money/Sprice);
//매도5호가에 매수주문
Account1.OrderBuy(Scode, Svol,Sprice, 0);
}
//차트 Exitshort 신호 발생
if (Signal.signalKind == 4 && Start == 1)
{
//매수5호가에 매도
Account1.OrderSell(Scode, Svol, MarketData2.Bid(5), 0);
}
2015-06-19
937
글번호 223534
답변완료
수식문의
예제 합성선물 에서
미완성신호에 주문 나가게 하려면
어떻게 수정해야하나요?
또 동시호가 청산 수식은 아래와 같이 연결해서
붙여쓰면 되나요?
** 미완성신호에 합성선물(call은 ATM+1 , put은 ATM-1) 주문내고 14시50분에 청산하는식 부탁합니다
=====================================
/*스크립트시작-----------------------------------------------------*/
var Start;
var BuyCallCode;
var BuyPutCode;
var SellCallCode;
var SellPutCode;
function Main_OnStart()
{
Main.MessageLog("시작");
Start = 0;
}
function C1_OnRiseSignal(Signal)
{
Main.MessageLog("신호완성/"+Signal.signalKind);
if (Signal.signalKind == 1 )
{
Start = 1;
BuyCallCode = Option.GetATMCallRecent(0);
BuyPutCode = Option.GetATMPutRecent(0);
var BuyCallPrice = Option.GetAskByCode(BuyCallCode,2);
var BuyPutPrice = Option.GetBidByCode(BuyPutCode,2);
A1.OrderBuy(BuyCallCode, Vol, BuyCallPrice, 0);
A1.OrderSell(BuyPutCode, Vol, BuyPutPrice, 0);
Main.MessageLog("합성선물매수");
}
if (Start == 1 && Signal.signalKind == 2 )
{
var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2);
var BxPutPrice = Option.GetAskByCode(BuyPutCode, 2);
A1.OrderSell(BuyCallCode, Vol, BxCallPrice, 0);
A1.OrderBuy(BuyPutCode, Vol, BxPutPrice, 0);
Main.MessageLog("합성선물매수청산");
}
if (Signal.signalKind == 3 )
{
Start = 1;
SellCallCode = Option.GetATMCallRecent(0);
SellPutCode = Option.GetATMPutRecent(0);
var SellCallPrice = Option.GetBidByCode(SellCallCode,2);
var SellPutPrice = Option.GetAskByCode(SellPutCode,2);
A1.OrderSell(SellCallCode, Vol, SellCallPrice , 0);
A1.OrderBuy(SellPutCode, Vol, SellPutPrice, 0);
Main.MessageLog("합성선물매도");
}
if (Start == 1 && Signal.signalKind == 4 )
{
var SxCallPrice = Option.GetAskByCode(SellCallCode, 2);
var SxPutPrice = Option.GetBidByCode(SellPutCode, 2);
A1.OrderBuy(SellCallCode, Vol, SxCallPrice, 0);
A1.OrderSell(SellPutCode, Vol, SxPutPrice, 0);
Main.MessageLog("합성선물매도청산");
}
}
/*스크립트끝-------------------------------------------------------*/
// 동시호가청산
function Main_OnStart()
{
Main.MessageLog("시작")
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMDD >= 150600)
{
Main.KillTimer(1);
num = A1.GetTheNumberOfBalances();
for(var i = 0; i < num; i++)
{
A1.SetBalanceIndex(i);
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code,A1.Balance.count,0,1);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1);
}
}
}
/*스크립트끝-------------------------------------------------------*/
2015-06-15
1437
글번호 223519