예스스탁
예스스탁 답변
2024-02-14 16:56:37
안녕하세요
예스스탁입니다.
죄송합니다.당일누적거래대금이 거래량으로 잘못지정되어 있었습니다.
수정한 식입니다.
input : 금액(2000000);
var : HisH(0,Data2),cnt(0),YH6(0,Data2),trade(False),dm(0,Data1),entry(0);
var : Rebuy(False,Data1),NegCnt(0,Data1);
Array : YH[20](0,Data2);
#역사적 신고가(참조데이터의 전체봉 중 최고가)
if HisH == 0 or (HisH > 0 and Data2(H) > HisH) Then
HisH = data2(H);
#연간 최고가 계산
if data2(Bdate > Bdate[1]+1000) Then
{
For cnt = 19 DownTo 1
{
YH[cnt] = YH[cnt-1];
}
YH[0] = Data2(H);
}
if YH[0] > 0 and Data2(H) > YH[0] Then
YH[0] = Data2(H);
if Bdate != Bdate[1] Then
{
trade = true;
entry = 0;
dm = 0;
}
dm = dm + m;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if TotalTrades > TotalTrades[1] Then
{
if IsExitName("bl1",1) == true or IsExitName("bl2",1) == true Then
trade = False;
ReBuy = False;
NegCnt = 0;
}
if Bdate == Bdate[1] Then
{
if h > DayHigh(0)[1] Then
{
rebuy = true;
NegCnt = 0;
}
if rebuy == true and C < O Then
NegCnt = NegCnt+1;
}
if MarketPosition == 0 and trade == true and sTime >= 91000 and sTime < 150000 and dm >= 80000000000 Then
{
#역사적 신고가+1틱이상이면 매수
if entry == 0 Then
Buy("b1",AtStop,HisH+PriceScale*1,Floor(금액/max(NextBarOpen,HisH+PriceScale*1)));
if YH[5] > 0 and entry == 0 Then
{
#6년 최고가 계산
YH6 = 0;
For cnt = 0 to 5
{
if YH6 == 0 or (YH6 > 0 and YH[cnt] > YH6) Then
YH6 = YH[cnt];
}
#6년 최고가 +1틱이면 매수
if YH6 > 0 Then
Buy("b2",AtStop,YH6+PriceScale*1,Floor(금액/max(NextBarOpen,YH6+PriceScale*1)));
}
if entry >= 1 and reBuy == true and NegCnt >= 3 Then
{
Buy("b3",AtStop,DayHigh+PriceScale*1,Floor(금액/max(NextBarOpen,DayHigh+PriceScale*1)));
}
}
if MarketPosition == 1 Then
{
if IsEntryName("b1") == true Then
var1 = HisH[BarsSinceEntry];
if IsEntryName("b2") == true Then
var1 = YH6[BarsSinceEntry];
if IsEntryName("b3") == true Then
var1 = dayhigh[BarsSinceEntry];
if CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,var1*1.02,"",Floor(MaxContracts*0.5),1);
Else
ExitLong("bx2",AtLimit,var1*1.04);
ExitLong("bl1",AtStop,var1*0.985);
ExitLong("bl2",AtStop,EntryPrice*0.96);
}
즐거운 하루되세요
> 노아 님이 쓴 글입니다.
> 제목 : 고생 많으십니다.
> 안녕하세요:)
답변해주신 매매전략을 입력해봤는데
계획했던 진입 시점에 진입을 하지 않아서 문의드립니다:)
답변해주신 글 참고하실 수 있게 아래에 붙여 넣었습니다.
사진을 첨부하여 말씀드리겠습니다:)
예를 하나 들자면 2월13일 신성델타테크의 경우
당일 누적 거래대금 800억 이상, 역사적 신고가 119,500원을 돌파하였는데 진입 신호가 생기지 않아서요:)
왜 진입이 되지 않는지 혹시 알려주실 수 있으신가요?
가능하다면 문제가 해결될 수 있게 수식 개선을 도와주시면 정말 감사드리겠습니다.
------------------------------------------------------------------------------------
안녕하세요
예스스탁입니다.
input : 금액(2000000);
var : HisH(0,Data2),cnt(0),YH6(0,Data2),trade(False),dm(0,Data1),entry(0);
var : Rebuy(False,Data1),NegCnt(0,Data1);
Array : YH[20](0,Data2);
#역사적 신고가(참조데이터의 전체봉 중 최고가)
if HisH == 0 or (HisH > 0 and Data2(H) > HisH) Then
HisH = data2(H);
#연간 최고가 계산
if data2(Bdate > Bdate[1]+1000) Then
{
For cnt = 19 DownTo 1
{
YH[cnt] = YH[cnt-1];
}
YH[0] = Data2(H);
}
if YH[0] > 0 and Data2(H) > YH[0] Then
YH[0] = Data2(H);
if Bdate != Bdate[1] Then
{
trade = true;
entry = 0;
dm = 0;
}
dm = dm + v;
if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or
(MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then
entry = entry+1;
if TotalTrades > TotalTrades[1] Then
{
if IsExitName("bl1",1) == true or IsExitName("bl2",1) == true Then
trade = False;
ReBuy = False;
NegCnt = 0;
}
if Bdate == Bdate[1] Then
{
if h > DayHigh(0)[1] Then
{
rebuy = true;
NegCnt = 0;
}
if rebuy == true and C < O Then
NegCnt = NegCnt+1;
}
if MarketPosition == 0 and trade == true and sTime >= 91000 and sTime < 150000 and dm >= 80000000000 Then
{
#역사적 신고가+1틱이상이면 매수
Buy("b1",AtStop,HisH+PriceScale*1,Floor(금액/max(NextBarOpen,HisH+PriceScale*1)));
if YH[5] > 0 and entry == 0 Then
{
#6년 최고가 계산
YH6 = 0;
For cnt = 0 to 5
{
if YH6 == 0 or (YH6 > 0 and YH[cnt] > YH6) Then
YH6 = YH[cnt];
}
#6년 최고가 +1틱이면 매수
if YH6 > 0 Then
Buy("b2",AtStop,YH6+PriceScale*1,Floor(금액/max(NextBarOpen,YH6+PriceScale*1)));
}
if entry >= 1 and reBuy == true and NegCnt >= 3 Then
{
Buy("b3",AtStop,DayHigh+PriceScale*1,Floor(금액/max(NextBarOpen,DayHigh+PriceScale*1)));
}
}
if MarketPosition == 1 Then
{
if IsEntryName("b1") == true Then
var1 = HisH[BarsSinceEntry];
if IsEntryName("b2") == true Then
var1 = YH6[BarsSinceEntry];
if IsEntryName("b3") == true Then
var1 = dayhigh[BarsSinceEntry];
if CurrentContracts == MaxContracts Then
ExitLong("bx1",AtLimit,var1*1.02,"",Floor(MaxContracts*0.5),1);
Else
ExitLong("bx2",AtLimit,var1*1.04);
ExitLong("bl1",AtStop,var1*0.985);
ExitLong("bl2",AtStop,EntryPrice*0.96);
}
즐거운 하루되세요
> 노아 님이 쓴 글입니다.
> 제목 : 시스템 개선 문의
> 안녕하세요. 최근에 시스템 작성 문의에 대해 답변을 받았었는데, 해당 매매전략을 개선하고 싶어 문의드리게 되었습니다^^
기존 전략에서 2가지 개선하고 싶은 부분이 있습니다.
1) 참고로 해당 전략은 상승돌파매매 시스템이고, 진입조건을 개선하고 싶습니다.
종목의 역사적 신고가 및 6년 신고가 가격의 한틱 위를 돌파할 때 시장가로 진입하고 싶습니다.
또한 당일 재진입의 경우, 보유 비중이 전량 매도된 이후에만 재진입할 것 입니다.
재진입은 1분봉 기준, 당일 신고가 이후 음봉 3개 출현 이후에 신고가 재돌파시 신고가 가격의 한틱 위를 돌파할 때 시장가로 진입하고 싶습니다.
그리고 진입 후 손절을 하게 되면, 당일 진입 조건을 달성해도 재진입을 하지 않게 하고 싶습니다.
2) 그리고 당일 누적 거래대금이 800억 이상일 경우에만 매매를 하고 싶습니다.