커뮤니티

수식 애러 수정부탁합니다

프로필 이미지
팡팡
2015-05-02 10:55:43
2019
글번호 223455
답변완료
첫번째, 질문 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원 손절 식을 부탁합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

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원 손절 식을 부탁합니다.