예스스탁
예스스탁 답변
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);
}
}
}