답변완료
지표문의(현대선물, 한투)
차트에서
첨부파일의 사진의 동그라미 부분(2개)처럼 빨간색 계통, 파란색 계통의 선이 나오게 하는 지표는 무엇인지 궁금합니다.
대충이라도 알려주세요.
밑에 처럼 입력하고 검증했는데, 오류나네요.
input : N(120);
var1 = highest(H,N);
var2 = Lowest(L,N);
plot1(var1+PriceScale*2,"최고가+2틱");
plot2(var1-PriceScale*2,"최고가-2틱");
plot3(var2+PriceScale*2,"최저가+2틱");
plot4(var2-PriceScale*2,"최저가-2틱");
2017-03-16
2762
글번호 224143
답변완료
당일 개인,외국인 등의 수급 데이터 가져오는 방법이 있나요?
안녕하세요.
아래의 함수를 통해서 전일 개인 매수/매도 수량은 가져 왔는데요.
MarketData.GetInvestorInfoByCategory(1, 0, 2, 1)
당일 수급데이터는 가져올 수 없나요?
함수 인자의 마지막 1을 0으로 하면 범위를 벗어 났다고 오류 나오네요.
방법 좀 알려 주시면 감사하겠습니다.
2017-03-14
2656
글번호 224139
답변완료
옵션매매 문의드립니다.
항상 도움 주셔서 감사히 공부하고 있습니다.
선물신호로 옵션매수후 청산하고 있는데. 한계약일 경우에는 문제가 전혀 없는데 피라미딩으로 하나의 차트에서 2계약 이상 매수할 때, 행사가가 다른 옵션 매수후 청산할 경우에는 마지막 행사가로만 청산이 되어 계좌에 매도계약이 남게 되어 질문드립니다.
예를 들면 P 272.5 1계약 매수후 P270.0 1계약 추가 매수후 청산이 될 때 P270.0 2계약 매도 신호가 나옵니다. 결국 완전청산이 되지않고 P 272.5 1계약 매수 , P272.0 1계약 매도 상태가 됩니다. 완전한 청산을 위해서 스팟식을 어떻게 바꾸면 좋을 지 조언 부탁 드립니다.
var ChartName = "pyramiding";
var d = new Date();
var OpPrice = 1.00; //진입가격대, OpPrice에 가장 근접한 값 주문
var LowPrice = 0.40; //최소가격대 이상일때로 제한하는 변수
var HighPrice = 9.90; //최대가격대 이하일때로 제한하는 변수
var OrderGap = 0.30; //주문시 체결가격 설정(현재가 + OrderGap)
var ForPrice; // 옵션값후보
var Delta;
var MaxCall; // 콜을 여기에 저장
var MaxCallcode; // 콜의 코드를 여기에 저장
var MaxPut;
var MaxPutcode;
function Main_OnStart()
{
Delta = 100;
for(var i = -5; i <= 5; i++)
{
ForPrice = Option.GetCurrent(0,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxCallcode = Option.GetATMCallRecent(i);
MaxCall = Option.GetCurrentByCode(MaxCallcode);
}
}
Delta = 100;
for(var i = -10; i <= 10; i++)
{
ForPrice = Option.GetCurrent(1,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxPutcode = Option.GetATMPutRecent(i);
MaxPut = Option.GetCurrentByCode(MaxPutcode);
}
}
Main.MessageLog("<< "+ChartName+" >> 콜 : "+MaxCall+" ("+MaxCallcode+") , 풋 : "+MaxPut+" ("+MaxPutcode+") ----- 구동시각 "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" , 잔존일 "+Option.GetRemainDays(0,0)+"일");
}
//////////////////////////////////////////////////////// 신호 뜰때 매매 ///////////////////////////////////////////
function Chart1_OnRiseSignal(Signal)
{
var EntryVol = Signal.count; // 선물신호 수량
d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if ( HHMMSS >= 90001 )
{
//////////////////////////////////////////////
if (Signal.signalKind == 1) // Call 매수
{
Delta = 100;
for(var i = -5; i <= 5; i++)
{
ForPrice = Option.GetCurrent(0,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxCallcode = Option.GetATMCallRecent(i);
MaxCall = Option.GetCurrentByCode(MaxCallcode);
}
}
OrderPrice = parseInt((MaxCall+OrderGap)*100)/100; //부동소수점 오류방지
ACC.OrderBuy(MaxCallcode, EntryVol, OrderPrice, 0); //괄호 의미는 (코드, 수량, 가격, 지정가)
Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 콜 매수진입) 종목명:"+MaxCallcode+", 수량:"+EntryVol+", 현재가:"+MaxCall+", 주문가:"+OrderPrice +" CCC");
}
//////////////////////////////////////////////
if (Signal.signalKind == 2) // Call 청산
{
ExitPrice = Option.GetCurrentByCode(MaxCallcode);
OrderPrice = parseInt((ExitPrice - OrderGap)*100)/100; //부동소수점 오류방지
ACC.OrderSell(MaxCallcode, EntryVol, OrderPrice, 0);
Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 콜 청산주문) 종목명:"+MaxCallcode+", 수량:"+EntryVol+", 현재가:"+ExitPrice+", 주문가:"+OrderPrice+ " c");
}
/////////////////////////////////////////////
if (Signal.signalKind == 3) // Put 매수
{
Delta = 100;
for(var i = -10; i <= 10; i++)
{
ForPrice = Option.GetCurrent(1,i); // GetCurrent 0 은 콜 , 1은 풋
if ( Math.abs(ForPrice - OpPrice) <= Delta && LowPrice < ForPrice && ForPrice < HighPrice )
{
Delta = Math.abs(ForPrice - OpPrice);
MaxPutcode = Option.GetATMPutRecent(i);
MaxPut = Option.GetCurrentByCode(MaxPutcode);
}
}
OrderPrice = parseInt((MaxPut+OrderGap)*100)/100; //부동소수점 오류방지
ACC.OrderBuy(MaxPutcode, EntryVol, OrderPrice , 0);
Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 풋 매수진입) 종목명:"+MaxPutcode+", 수량:"+EntryVol+", 현재가:"+MaxPut+", 주문가:"+OrderPrice +" PPP");
}
/////////////////////////////////////////////
if (Signal.signalKind == 4) // Put 청산
{
ExitPrice = Option.GetCurrentByCode(MaxPutcode);
OrderPrice = parseInt((ExitPrice - OrderGap)*100)/100; //부동소수점 오류방지
ACC.OrderSell(MaxPutcode, EntryVol, OrderPrice, 0);
Main.MessageLog("("+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" ☞ "+ChartName+" 풋 청산주문) 종목명:"+MaxPutcode+", 수량:"+ EntryVol+", 현재가:"+ExitPrice+", 주문가:"+OrderPrice+" p" );
}
}
}
2017-03-03
2546
글번호 224136
답변완료
일일손실제한 다음 식을 사용해도 되나요?
항상 감사드립니다.
여러개의 스팟식을 사용해서 포트폴리오 매매를 하고 있습니다.
아래 조건으로 스팟식을 만들고자 합니다.
금일 매매중에 총 100만원 손실 보고 있을시 모든 포지션 청산하고 + 금일은 추가 매매금지
var i1;
var X;
var dayloss = 1000000;
//스팟 시작시
function Main_OnStart()
{
//i1에 예수금/예탁총액 저장
i1 = ACC.GetBalanceETCinfo(0);
X = 0;
Main.SetTimer(1, 5000);//5초 타이머 셋팅
}
function Main_OnTimer(nEventID)
{
// 현재 정산금이 스팟시작시값보다 ""dayloss"" 이상 감소했으면
if (nEventID == 1 && ACC.GetBalanceETCinfo(100) <= i1-dayloss)
{
//타이머 중지
Main.KillTimer(1);
var Bnum = ACC.GetTheNumberOfBalances();
for(var i = 0; i < Bnum; i++)
{
ACC.SetBalance(i);
//콜이나 풋이면
if (ACC.Balance.code.substring(0,1) == "2" || ACC.Balance.code.substring(0,1) == "3")
{
// 포지션 청산
if (ACC.Balance.position == 1)
ACC.OrderBuy(ACC.Balance.code,ACC.Balance.count,0,1);
if (ACC.Balance.position == 2)
ACC.OrderSell(ACC.Balance.code,ACC.Balance.count,0,1);
}
}
X = 1;
}
}
1. 위의 식에 오류는 없나요?
2. 812글 답변에 보면
//현재 예수금/예탁총액이 스팟시작시값보다 20% 이상 감소했으면
if (nEventID == 1 && Account1.GetBalanceETCinfo(0) <= i1*0.8)
{
이라는 부분이 나옵니다.GetBalanceETCinfo(0) 값은 "예수금"인데 , 0 대신 100 "정산금" 값이 실시간 값 아닌지요?
3. 다른 스팟 주문식에 && X ==0 을 넣으라고 하셨는데 , 이 때 그 주문식에도 var X; 라고 정의를 해야 하나요?
4. 만일 3개의 스팟식을 운영한다고 할 때 저 조건식을 3개의 스팟식에 모두 넣어야 하는지요?
5. 아니면 하나의 스팟식에서 변수를 정의하면 동시에 실행하는 다른 스팟식에도 두루 사용할 수 있는지도 궁금합니다.
=======
전화통화로 해결되었습니다. 감사드립니다^^
2017-03-03
2505
글번호 224131