커뮤니티

문의

프로필 이미지
좌오비우오비
2023-05-08 11:54:11.0
1045
글번호 225798
답변완료
exit 수식 추가 건입니다. 차트1 exitlong("a"); 차트2 exitlong("b"); 1) a 또는 b 를 만족하면 청산 2) a and b 를 만족해야만 청산 3) 차트참조 없이 setstoploss(2, percentstop); setstoptrailing(5,0,percentstop,1); 위 3가지 경우로 나누어 청산수식 추가 부탁드립니다. ********************************************************************* var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-06-28 15:54:29.0

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; var X1,X2; var BID,BNUM,PLCheck; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 BID = Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); PLCheck = false; X1 = false; X2 = false; Main.SetTimer(1, 1000);//1초 타이머 } } if (Signal.signalKind == 2 && Signal.name == "a") { X1 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } //2) if (X1 == true && X2 == true) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } } } function Chart2_OnRiseSignal(Signal) { s2 = Signal.signalKind; if (Signal.signalKind == 2 && Signal.name == "b") { X2 = true; //1) if (X1 == true || X2 == true) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } //2) if (X1 == true && X2 == true) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { BNUM = OrderResponse.orderNum; } } function Main_OnNotifyFill(NotifyFill) { if (NotifyFill.orderNum == BNUM) { PLCheck = true; } } function Main_OnTimer(nEventID) { if (nEventID == 1 && PLCheck == true) { if (Option1.GetCurrent(CallOrderCode) > hh) hh = Option1.GetCurrent(CallOrderCode); Account1.SetBalanceItem(CallOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { if (Option1.GetCurrent(CallOrderCode) <= Account1.Balance.avgUnitCost*0.98) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } if (Option1.GetCurrent(CallOrderCode) <= hh*0.95) { Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 2), 0); PLCheck = false; } } } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 문의 > exit 수식 추가 건입니다. 차트1 exitlong("a"); 차트2 exitlong("b"); 1) a 또는 b 를 만족하면 청산 2) a and b 를 만족해야만 청산 3) 차트참조 없이 setstoploss(2, percentstop); setstoptrailing(5,0,percentstop,1); 위 3가지 경우로 나누어 청산수식 추가 부탁드립니다. ********************************************************************* var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } }