답변완료
수식 변경부탁드려요
종목 20개 설정해서 예수금/종목수로 매수 금액 설정하고 싶어요
그리고 주문이 들어가 있고 사지지 않으면 매수 금지 설정 부탁드려요( 예로 VI 걸렸을때 계속 주문이 들어가는 현상을 막고 싶어요)
//스팟 첫 실행시
function Main_OnStart()
{
//1번 타이머, 60초
Main.SetTimer(1, 10000);
}
function Main_OnTimer(nEventID)
{
//1번 타이머 동작
if (nEventID == 1)
{
//종목검색 수행
Main.ReqPowerSearch("1")
}
}
//종목검색 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//1종목 이상 검색되면
if (nCount >= 1)
{
//리스트 첫종목부터 마지막종목까지 순차적으로
for (var i = 0; i < nCount; i++)
{
//잔고를 셋팅
account1.SetBalance(aItemList[i],0);
//보유수량이 없으면
if (account1.Balance.count == 0)
{
//매수주문
account1.OrderBuy(aItemList[i], 1,0,1);
}
}
}
}
2022-08-12
1420
글번호 225685
답변완료
청산수식 부탁 드려요.
안녕하세요.
매뉴얼이나 게시판을 봐도 이해하기 어렵고, 답답해서 도움 부탁드립니다.
수동진입후 청산하는 수식인데
유로달러 선물 기준으로
1. 수동진입후 0.001 포인후 이익이면 매수, 매도 포지션 청산
2. 수동진입후 0.003 포인트 손해면 매수 매도 포지션 청산
3. 트레일링 스탑 - 0.001포인트 상승후 0.001포인트 하락하면 매수 매도 포인트 청산
이 세가지입니다.
도움주시면 감사하겠습니다.
아래 수식 게시판 보고 작성해봤습니다.
var Rcv = 0;
var Item = [];
var EP = [];
function Main_OnStart()
{
Rcv = 0;
}
//계좌에 변동이 생김
function Main_OnUp*dateAccount(sAccntNum, sItemCode, lUp*dateID)
{AccountAccount
//잔고에 새로운 종목편입
if (sAccntNum ==Account1.number && lUp*dateID == 30001)
{
//편입된 종목의 진입가와 최고가를 구할 기초값 저장 후 종목객체 요청
Account1.SetBalance(sItemCode, 0);
if (Account1.Balance.count)
{
EP[Rcv] = Account1.Balance.avgUnitCost;
HH[Rcv] = Account1.Balance.avgUnitCost;
Main.ReqMarketData(sItemCode, 0,0);
}
}
}
//종목객체 수신
function Main_OnRcvMarketData(MarketData)
{
Item[Rcv] = MarketData;
Rcv = Rcv+1;
}
//시세변
function Main_OnU*pdateMarket(sItemCode, lUp*dateID)
{
if (lUp*dateID == 20001)
{
for(var i = 0; i < Item.length ; i++)
{
if (Item[i].code == sItemCode)
{
if (Account1.Balance.position == 2)
{
//잔고편입 이후의 최고가 계산
if (Item[i].current > HH)
{
HH = Item[i].current;
}
//최고가가 진입단가 대비 0.001 이상이고
//현재가가 진입단대 대비 0.001 이하이면 매도
if (HH >= EP[i]+0.001 && Item[i].current <= HH[i]+0.001)
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
//현재가가 진입단대 대비 0.001 이상이면 매도 청산
if (Item[i].current >= HH[i]+0.001)
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
//현재가가 진입단대 대비 0.003 이하이면 매도
if (Item[i].current <= HH[i]+0.003)
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
}
if (Account1.Balance.position == 1)
{
//잔고편입 이후의 최고가 계산
if (Item[i].current < LL)
{
LL = Item[i].current;
}
//최고가가 진입단가 대비 + 0.001이하이고
//현재가가 진입단대 대비 + 0.001 이상이면 매도
if (LL <= EP[i]+0.001 && Item[i].current >= LL[i]+0.001)
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
//현재가가 진입단대 대비 + 0.001 이상이면 매도 청산
if (Item[i].current >= LL[i]+0.001)
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
//최고가가 진입단가 대비 + 0.003이하이면 매도 청산
if (LL <= EP[i]+0.003 )
{
Account1.SetBalance(Item[i].code, 0);
if (Account1.Balance.count > 0)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,Item[i].Ask(5),0);
Main.RemoveMarketData(Item[i]);
}
}
}
}
}
}
}
2022-07-20
1442
글번호 225684
답변완료
예스스팟 전략 실행시키면 버벅댑니다. 오늘부터 갑자기 그럽니다.
안녕하세요. 언제나 친절한 답변에 감사드립니다.
어제와 동일한 예스스팟 수식을 실행중입니다. 어제는 속도에 아무 문제 없이 잘 돌아갔는데
오늘부터 갑자기 연산량이 밀리는 듯한 모습(버벅대기)을 보이면 속도가 느려지고
그에 따라 hts가 잘 응답하지 못합니다.
한국투자증권이프렌드 예스트레이더 내의 예스스팟 사용중입니다.
다음은 제가 실행한 수식들 입니다.
수식1을 오일,골드,유로 종목 별로 변형해 3개 동시 실행중이고
수식2도 오일,골드,유로 종목 별로 변형해 3개 동시 실행하여 매매하는 방식입니다.
2022-07-26
1300
글번호 225682
답변완료
주문가격 수정 문의드립니다.
var BuyPositionCount;
var SellPositionCount;
var BID, SID;
var Buy_price,Sell_price,Center_price;
var C1_low,C1_high,C1_current;
function Main_OnStart()
{
Main.MessageLog("시작");
Main.MessageLog(M1.code);
Main.SetTimer(1, 5000);
Buy_price = 0; Sell_price = 0;
BID = 0; SID = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
BuyPositionCount = A1.GetTotalCount(0, 2); // 매수수량 체크
SellPositionCount = A1.GetTotalCount(0, 1); // 매도수량체크
C1_OnBarAppended();
if ( SellPositionCount == 0 && SID == 0 )
{
SID = A1.OrderSell(M1.code, Vol,Sell_price,1);
}
if ( SID > 0 && Sell_price != ) {
SID = A1.OrderReplacePrice(SID,Sell_price);
}
}
}
function C1_OnBarAppended(ndata)
{
var UP_exCenterZone = C1.GetIndicatorData("3L chart - 480", 6, 0);
var DN_exCenterZone = C1.GetIndicatorData("3L chart - 480", 7, 0);
var Center = C1.GetIndicatorData("3L chart - 480", 1, 0);
var bar_close = C1.GetClose(1,0);
var bar_high = C1.GetHigh(1, 0);
var bar_low = C1.GetLow(1, 0);
Buy_price = UP_exCenterZone;
Sell_price = DN_exCenterZone;
Center_price = Center;
C1_low = bar_low;
C1_high = bar_high;
C1_current = bar_close;
}
주문을 최초로 넣고 현재 진입조건가격이 최초 주문했던 가격과 비교해서 달라질 경우
어떻게 해야하는지 모르겠습니다.
도움좀 부탁드리겠습니다.
2022-06-20
1430
글번호 225680