예스스탁
예스스탁 답변
2015-05-07 19:56:24
안녕하세요
예스스탁입니다.
답변이 길어 1157번의 추가질문은 해당 번호에 답변드렸습니다.
1.
예 Callcode2가 되어야 합니다.
2.
예 가능합니다.
스크립트 객체화면에서 외부변수를 Vol1,Vol2로 추가하신 후에
각 주문함수에 해당변수명을 수량자리에 지정해 주시면 됩니다.
3
덮어쓰게 됩니다.
스팟수식별로 다른이름을 지정해 주셔야 합니다.
4.
var Start;
var CallCode1,CallCode2;
var PutCode1,PutCode2;
function Main_OnStart()
{
Main.MessageList("시작");
//내부파일에 Start로 저장된 값 호출해 V에 저장
var V = Main.GetUserValue("Start");
//0이면 Start는 0
if (V == 0)
Start = 0;
//1이면
if (V == 1)
{
//Start는 1
Start = 1;
//CallCode1에 내부파일 Code1에 저장된 값 호출해 저장
CallCode1 = Main.GetUserValue("Code1");
//CallCode2에 내부파일 Code2에 저장된 값 호출해 저장
CallCode2 = Main.GetUserValue("Code2");
}
if (V == -1)
{ Start = 0;
//Start는 -1
Start = 1;
//PutCode1에 내부파일 Code1에 저장된 값 호출해 저장
PutCode1 = Main.GetUserValue("Code1");
//PutCode2에 내부파일 Code2에 저장된 값 호출해 저장
PutCode2 = Main.GetUserValue("Code2");
}
Main.SetTimer(1, 5000);//5초간격 타이머 셋팅
}
function C1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1 )
{
Main.MessageList("매수신호발생");
Start = 1;
CallCode1 = Option.GetATMCallRecent(0);
CallCode2 = Option.GetATMCallRecent(-1);
var CallPrice1 = Option.GetBidByCode(CallCode1,2);
var CallPrice2 = Option.GetAskByCode(CallCode2,2);
A1.OrderSell(CallCode1, Vol1, CallPrice1, 0);
A1.OrderBuy(CallCode2, Vol2, CallPrice2, 0);
//Start와 종목코드 저장
Main.SetUserValue("Start", Start);
Main.SetUserValue("Code1", CallCode1);
Main.SetUserValue("Code2", CallCode2);
}
if (Start == 1 && Signal.signalKind == 2 )
{
Start = 0;
Main.MessageList("매수청산발생");
var BxPrice1 = Option.GetAskByCode(CallCode1, 2);
var BxPrice2 = Option.GetBidByCode(CallCode2, 2);
A1.OrderBuy(CallCode1, Vol1, BxPrice1, 0);
A1.OrderSell(CallCode2, Vol2, BxPrice2, 0);
//저장값 초기화
Main.SetUserValue("Start", 0);
Main.SetUserValue("Code1", " ");
Main.SetUserValue("Code2", " ");
}
if (Signal.signalKind == 3 )
{
Main.MessageList("매도신호발생");
Start = -1;
PutCode1 = Option.GetATMPutRecent(0);
PutCode2 = Option.GetATMPutRecent(1);
var PutPrice1 = Option.GetBidByCode(PutCode1,2);
var PutPrice2 = Option.GetAskByCode(PutCode2,2);
A1.OrderSell(PutCode1, Vol1, PutPrice1 , 0);
A1.OrderBuy(PutCode2, Vol2, PutPrice2, 0);
//Start와 종목코드 저장
Main.SetUserValue("Start", Start);
Main.SetUserValue("Code1", PutCode1);
Main.SetUserValue("Code2", PutCode2);
}
if (Start == -1 && Signal.signalKind == 4 )
{
Start = 0;
Main.MessageList("매도청산발생");
var SxPrice1 = Option.GetAskByCode(PutCode1, 2);
var SxPrice2 = Option.GetBidByCode(PutCode2, 2);
A1.OrderBuy(PutCode1, Vol1, SxPrice1, 0);
A1.OrderSell(PutCode2, Vol2, SxPrice2, 0);
//저장값 초기화
Main.SetUserValue("Start", 0);
Main.SetUserValue("Code1", " ");
Main.SetUserValue("Code2", " ");
}
}
즐거운 하루되세요
> 팡팡 님이 쓴 글입니다.
> 제목 : 수식 애러 수정부탁합니다
> 첫번째,
질문 1143번의 추가질문입니다.
선물 매수 신호시 콜만 포지션, 매도 신호시 풋만 포지션 되야 하나
매도신호는 정상 작동하나 매수신호시 풋이 청산이 되지않습니다.
1. 아래 수식중 오타인지?
Main.MessageList("매수신호발생");
Start = 1;
CallCode1 = Option.GetATMCallRecent(0);
CallCode2 = Option.GetATMCallRecent(-1);
var CallPrice1 = Option.GetBidByCode(CallCode1,2);
var CallPrice2 = Option.GetAskByCode(CallCode2,2);
A1.OrderSell(CallCode1, Vol, CallPrice1, 0);
A1.OrderBuy(CallCode2, Vol, CallPrice2, 0);
//Start와 종목코드 저장
Main.SetUserValue("Start", Start);
Main.SetUserValue("CallCode1", CallCode1);
Main.SetUserValue("CallCode2", CallCode1); <-----이 부분
2. 변수 Vol을 code1은 Vol1, code2는 Vol2 로 두개로 변경 가능한지요?
3. 시스템을 두개 사용시 내부파일에 저장한 var V = Main.GetUserValue("Start"); 와 같이 같은 변수를 쓰게되면 덮어쓰게 되는지? 아니면 각각 시스템과 관련되어 저장되는지요?
var Start;
var CallCode1,CallCode2;
var PutCode1,PutCode2;
function Main_OnStart()
{
Main.MessageList("시작");
//내부파일에 Start로 저장된 값 호출해 V에 저장
var V = Main.GetUserValue("Start");
//0이면 Start는 0
if (V == 0)
Start = 0;
//1이면
if (V == 1)
{
//Start는 1
Start = 1;
//CallCode1에 내부파일 Code1에 저장된 값 호출해 저장
CallCode1 = Main.GetUserValue("Code1");
//CallCode2에 내부파일 Code2에 저장된 값 호출해 저장
CallCode2 = Main.GetUserValue("Code2");
}
if (V == -1)
{ Start = 0;
//Start는 -1
Start = 1;
//PutCode1에 내부파일 Code1에 저장된 값 호출해 저장
PutCode1 = Main.GetUserValue("Code1");
//PutCode2에 내부파일 Code2에 저장된 값 호출해 저장
PutCode2 = Main.GetUserValue("Code2");
}
Main.SetTimer(1, 5000);//5초간격 타이머 셋팅
}
function C1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1 )
{
Main.MessageList("매수신호발생");
Start = 1;
CallCode1 = Option.GetATMCallRecent(0);
CallCode2 = Option.GetATMCallRecent(-1);
var CallPrice1 = Option.GetBidByCode(CallCode1,2);
var CallPrice2 = Option.GetAskByCode(CallCode2,2);
A1.OrderSell(CallCode1, Vol, CallPrice1, 0);
A1.OrderBuy(CallCode2, Vol, CallPrice2, 0);
//Start와 종목코드 저장
Main.SetUserValue("Start", Start);
Main.SetUserValue("CallCode1", CallCode1);
Main.SetUserValue("CallCode2", CallCode1);
}
if (Start == 1 && Signal.signalKind == 2 )
{
Start = 0;
Main.MessageList("매수청산발생");
var BxPrice1 = Option.GetAskByCode(CallCode1, 2);
var BxPrice2 = Option.GetBidByCode(CallCode2, 2);
A1.OrderBuy(CallCode1, Vol, BxPrice1, 0);
A1.OrderSell(CallCode2, Vol, BxPrice2, 0);
//저장값 초기화
Main.SetUserValue("Start", 0);
Main.SetUserValue("Code1", " ");
Main.SetUserValue("Code2", " ");
}
if (Signal.signalKind == 3 )
{
Main.MessageList("매도신호발생");
Start = -1;
PutCode1 = Option.GetATMPutRecent(0);
PutCode2 = Option.GetATMPutRecent(1);
var PutPrice1 = Option.GetBidByCode(PutCode1,2);
var PutPrice2 = Option.GetAskByCode(PutCode2,2);
A1.OrderSell(PutCode1, Vol, PutPrice1 , 0);
A1.OrderBuy(PutCode2, Vol, PutPrice2, 0);
//Start와 종목코드 저장
Main.SetUserValue("Start", Start);
Main.SetUserValue("Code1", PutCode1);
Main.SetUserValue("Code2", PutCode2);
}
if (Start == 1 && Signal.signalKind == 4 )
{
Start = 0;
Main.MessageList("매도청산발생");
var SxPrice1 = Option.GetAskByCode(PutCode1, 2);
var SxPrice2 = Option.GetBidByCode(PutCode2, 2);
A1.OrderBuy(PutCode1, Vol, SxPrice1, 0);
A1.OrderSell(PutCode2, Vol, SxPrice2, 0);
//저장값 초기화
Main.SetUserValue("Start", 0);
Main.SetUserValue("Code1", " ");
Main.SetUserValue("Code2", " ");
}
}
----------------------------------------------------------------------------------------
두번째,
질문 1157번의 추가질문입니다.
콜매도, 풋매도 금액의 합으로 +500000원 익절, -500000원 손절 식을 부탁합니다.