예스스탁
예스스탁 답변
2021-03-30 14:13:07
안녕하세요
예스스탁입니다.
input : 금액1(1000000),금액2(1000000),금액3(1000000),금액4(1000000),금액5(1000000);
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),LL(0),LH(0),HH(0),L3(False);
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
{
HH = H;
#봉번호 저장
Cond_index = Index;
#폭저장
diff = HH-Price_low_100;
#1~5차 진입가 및 손절가
E1 = (HH+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;
#각 진입 초기값
Entry1 = False;
Entry2 = False;
Entry3 = False;
Entry4 = False;
Entry5 = False;
LL = L;
LH = H;
L3 = False;
}
Else #조건충족하지 않은 봉
{
# Cond_index에 봉번호가 저장되어 있고
# 현재봉이 조건충족봉대비 100봉 이내일때
if Cond_index > 0 and Index < Cond_index+100 Then
{
#3일지지가 발생하지 않은상태에서 고가가 갱신되면
if L3 == False and H > HH Then
{
HH = H;
#폭저장
diff = HH-Price_low_100;
#1~5차 진입가 및 손절가
E1 = (HH+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;
#각 진입 초기값
Entry1 = False;
Entry2 = False;
Entry3 = False;
Entry4 = False;
Entry5 = False;
LL = L;
LH = H;
}
#조건만족봉 이후 최저가
if L < LL Then
{
LL = L;
LH = H;
}
#최저가 이후 최고가
if H > LH Then
LH = L;
#3일지지가 발생하지 않은 상태에서
#조건만족봉 이후 최저가가 E1과 E1+diff*0.1사이이고
#최저가 이후 최고가가 최저가 대비 diff*0.1이상이면
#각 진입가를 폭의 5%만큼식 낮춤
if L3 == False and LL > E1 and LL < E1+diff*0.1 and LH >= LL+diff*0.1 Then
{
E1 = E1-diff*0.05;
E2 = E2-diff*0.05;
E3 = E3-diff*0.05;
E4 = E4-diff*0.05;
E5 = E5-diff*0.05;
}
#3일저가 지지가 발생
if L3 == False and Index >= Cond_index+3 and CountIf(L > L[1],3) == 3 Then
{
L3 = true;
Entry1 = true;
Entry2 = true;
Entry3 = true;
Entry4 = true;
Entry5 = true;
#3일지지가 E1 이하이면
#첫진입값이 3일지지저가
#이후 진입값은 diff*0.1씩 하향가격
if L < E1 Then
{
E1 = Lowest(L,3);
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;
}
Else #3일지지가 E1위이면 E1값 기준진입
{
E1 = E1-diff*0.05;
E2 = E2-diff*0.05;
E3 = E3-diff*0.05;
E4 = E4-diff*0.05;
E5 = E5-diff*0.05;
}
}
}
}
#조건만족후 100봉이내에
if Cond_index > 0 and Index >= Cond_index and Index < Cond_index+100 Then
{
#하락해 지정한 가격들 터치하면 매수
if entry1 == true and E1 > 0 and L > E1 Then
Buy("b1",AtLimit,E1,Floor(금액1/C));
if entry2 == true and E2 > 0 and L > E2 Then
Buy("b2",AtLimit,E2,Floor(금액2/C));
if entry3 == true and E3 > 0 and L > E3 Then
Buy("b3",AtLimit,E3,Floor(금액3/C));
if entry4 == true and E4 > 0 and L > E4 Then
Buy("b4",AtLimit,E4,Floor(금액4/C));
if entry5 == true and E5 > 0 and L > E5 Then
Buy("b5",AtLimit,E5,Floor(금액5/C));
}
#매수진입 후
#최근진입에 때라 청산설정
#각 진입은 조건만족후 한번 발생하면 다음조건만족까지 진입불가
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);
}
}
즐거운 하루되세요
> 깜피 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요. 71655번 관련해서 수식 변경 문의드립니다.
최초에 중간값 이상에서 3일 저가 지지해야한 매수 가능했던 부분 및 매수가 변경 로직 등을 수정하고 싶습니다.
붙임 그림 파일이 가격이 맞는 건 아닌데 패턴을 봐주시면 될 것 같습니다.
많은 도움 주셔서 항상 감사드립니다.
좋은 하루 보내세요.
1. 조건 만족봉 이후 고가봉 갱신 시 각종 값을 세팅하는 고가 변경
(기준봉 조건을 만족하면 기준봉을 다시 세팅하고, 단순히 고가만 갱신할 경우에는 고가값만 변경)
매수 변경
2. 중간 값(최초 E1) 이상에서 3일 저가 지지하면 최초 E1에서 매수
2-1. 최초 3일저가 지지가 중간 값(최초 E1) 이하에서 나오면, 3일지지 저가에 오면 매수
매수 변경2(1~2일 내에 반등 기준 충족하면 3일기준 만족한 것으로 봄. 반등 기준을 충족하여 매수가격을 내려도 최초 E1보다 높으면 E1에서 매수)
3. Diff*0.1 반등이 나오면 (반등저가 - Diff*0.1) 매수가격 하향(Diff*0.1씩 E2~E5도 하향)
3-1. 가격하락하여 다음 매수가격이 오기 전에 다시 Diff*0.1이상 반등하면 (반등저가 - Diff*0.1) 매수가격 하향(Diff*0.1씩 E2~E5도 하향)
4.매수 회차별 비중을 변경할 수 있게 변경.
(1차에 백만원 매수 시, 2차 1백만원, 3차 2백만원 등 1차 매수 금액 대비 배수 적용)