예스스탁
예스스탁 답변
2021-03-24 13:40:23
안녕하세요
예스스탁입니다.
분봉차트에서는 최대의 최대봉조회갯수문제로 해당내용을 구현할 수 없습니다.
현재 봉완성시 진입으로 되어 있는 부분을
봉미완성시에 터치하면 진입하고 청산하게 변경해 드립니다.
파리미딩은 다른진입신호만 허용으로 설정하고 적용하시면 됩니다.
주석 내용 참고하셔서 수정보완해 사용하시기 바랍니다.
Var : Price_high_100(0), Price_low_100(0), Volume_high_100(0), Cond_index(0);
var : diff(0),E1(0),E2(0),E3(0),E4(0),E5(0),LS(0);
var : Entry1(false),Entry2(false),Entry3(false),Entry4(false),Entry5(false);
Price_high_100 = highest(h,100); //고가
Price_low_100 = lowest(L,100); //저가
Volume_high_100 = Highest(V, 100);
#조건충족봉
if M >= 10000000000 and Price_high_100 == h and H > Price_low_100 * 2 and Volume_high_100 == v then
{
#봉번호 저장
Cond_index = Index;
#폭저장
diff = Price_high_100-Price_low_100;
#1~5차 진입가 및 손절가
E1 = (Price_high_100+Price_low_100)/2;
E2 = E1-diff*0.1;
E3 = E1-diff*0.2;
E4 = E1-diff*0.3;
E5 = E1-diff*0.4;
LS = E1-diff*0.5;
LS = E1-diff*0.5;
#각 진입 초기값
Entry1 = False;
Entry2 = False;
Entry3 = False;
Entry4 = False;
Entry5 = False;
Condition1 = False;
}
Else #조건충족하지 않은 봉
{
# Cond_index에 봉번호가 저장되어 있고
# 현재봉이 조건충족봉대비 100봉 이내일때
if Cond_index > 0 and Index < Cond_index+100 Then
{
#저가가 중간값이하인 봉이 발생하면 Cond_index은 0으로 초기화
if Condition1 == False and L <= E1 Then
Condition1 = true;
#3봉연속 저가가 전봉저가를 깨지 않으면 entry true
if Index >= Cond_index+3 and Cond_index > 0 and Condition1 == False and CountIf(L > L[1],3) == 3 Then
{
Entry1 = true;
Entry2 = true;
Entry3 = true;
Entry4 = true;
Entry5 = true;
}
}
TL_SetEnd(var1,sDate,sTime,E1);
}
#조건만족후 100봉이내에
if Cond_index > 0 and Index >= Cond_index and Index < Cond_index+500 Then
{
#하락해 지정한 가격들 터치하면 매수
if entry1 == true and E1 > 0 and L > E1 Then
Buy("b1",AtLimit,E1);
if entry2 == true and E2 > 0 and L > E2 Then
Buy("b2",AtLimit,E2);
if entry3 == true and E3 > 0 and L > E3 Then
Buy("b3",AtLimit,E3);
if entry4 == true and E4 > 0 and L > E4 Then
Buy("b4",AtLimit,E4);
if entry5 == true and E5 > 0 and L > E5 Then
Buy("b5",AtLimit,E5);
}
#매수진입 후
#최근진입에 때라 청산설정
#각 진입은 조건만족후 한번 발생하면 다음조건만족까지 진입불가
if MarketPosition == 1 Then
{
if LatestEntryName(0) == "b1" Then
{
ExitLong("bx1",AtLimit,E1*1.10);
entry1 = False;
}
if LatestEntryName(0) == "b2" Then
{
ExitLong("bx2",AtLimit,E1);
entry2 = False;
}
if LatestEntryName(0) == "b3" Then
{
ExitLong("bx3",AtLimit,(E1+E2)/2);
entry3 = False;
}
if LatestEntryName(0) == "b4" Then
{
ExitLong("bx4",AtLimit,E2);
entry4 = False;
}
if LatestEntryName(0) == "b5" Then
{
ExitLong("bx5",AtLimit,(E2+E3)/2);
entry5 = False;
ExitLong("bl",AtStop,LS);
}
}
즐거운 하루되세요
> 깜피 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다.
> 안녕하세요, 시스템 및 검색 관련해서 몇 가지 문의드립니다.
// 종목 선정 후 100봉 이내이고, 직전봉까지 중간값[(고+저)/2] 밑으로 내려온 적이 없고, 저점을 3일간 지켜준 종목이 중간값 하향이탈시 매수
시스템은 일봉 기준으로 종목을 선정해서 테스트하고 있었는데 당일 매수/매도가 동시에 발생하는 경우 및 봉 완성 시 매수/매도되는 경우에는 시스템 로직과 가격 괴리가 발생하는 문제가 있어서 1분으로 운용하고 싶은데 다음 수식을 분봉 형태로 수정하는게 가능할지 문의드립니다(분할 매수 및 기간 등 추가)
저점 3일간 지켜준 경우 : 종목 선정 후 발생하는 봉(미지정)의 저가를 익일 및 익익일의 저가가 깨지 않는 경우(종목 선정 후 1회만 발생하면 됨)
두서없이 질문해서 죄송하고, 항상 감사드립니다.
--------------------------------------------------------------------------------
Var : Price_high_100(0), Price_low_100(0), Volume_high_100(0), Count_Pick(0), Con_Pick(false);
Price_high_100 = highest(h,100); //고가
Price_low_100 = lowest(L,100); //저가
Volume_high_100 = Highest(V, 100);
if M>=10000000000 and Price_high_100 == h and H>Price_low_100 * 2 and Volume_high_100 == v then
{
Con_Pick = true;
Count_Pick = 1;
}
//종목 선정 후 100봉 이내에서 기준을 다시 충족하면 종목 재선정
if Con_Pick == true and Count_Pick <=100 and M>=10000000000 and Price_high_100 == h and H>Price_low_100 * 2 and Volume_high_100 == v then
{
Count_Pick= 1;
}
// 종목 선정 후 100봉 이내이고, 직전봉까지 중간값[(고+저)/2] 밑으로 내려온 적이 없고, 저점을 3일간 지켜준 종목이 중간값 하향이탈시 매수
if Con_Pick== true and (Count_Pick>= 1 and Count_Pick<= 100) and AccumN(iff( L > (Price_high_100 + Price_low_100)/2,1,0), Count_Pick) >= Count_Pick- 1 and 저점을 3일간 지켜주는 경우 and crossdown(L,(Price_high_100 + Price_low_100)/2) then{
// 1차 매수
}
// (Price_high_100-Price_low_100)/10 만큼 추가 하락할 때마다 추가로 매수(총 5회차 까지 매수)
// 1차 매수만 된 경우에는 10% 상승 시 청산
// 2차 매수까지 된 경우에는 1차 매수가격에 청산
// 3차 매수까지 된 경우에는 (1차 + 2차)/2 가격에 청산
// 4차 매수까지 된 경우에는 2차 매수가격에 청산
// 5차 매수까지 된 경우에는 (2차 + 3차)/2 가격에 청산
// 5차 매수 이후 (Price_high_100-Price_low_100)/10 만큼 더 하락하면 손절
Count_Pick= Count_Pick+ 1;
// 봉 선정 후 거래없이 100일 지나면 초기화
if Count_Pick> 100 and then {
Con_Pick= false;
Count_Pick= 0;
}
// 수익으로 청산된 후에라도 100일 이내에 다시 다음 차수의 매수가격이 오면 재진입
// 1차 매수 후 수익 청산된 후 2차 매수가격이 오면 2차~5차(총4회차)까지 매수 진입 가능