커뮤니티
시스템식 수정 문의드립니다
2016-06-14 22:28:26
106
글번호 99078
안녕하세요.
신고가 조건을 수정하고 그에 따른 조건을 추가해보고 싶어 글 올립니다
항상 신경써주셔서 감사합니다!!
1 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 클때
폭계산 : 1 조건의 신고가 봉만 저가를 봉의 고가로 처리해서 폭계산(DIFF = HV-LV=0),
다음 신고가 돌파까지 1조건의 신고가봉만 저가를 H로 고정
다음봉 부터는 폭계산식 그대로 계산
진입 : 현재식 그대로 진입
2. 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 작을때
폭 계산: 폭계산식 그대로 계산
진입 : 현재식 그대로 진입
3. 신고가 음봉돌파(O *1.03 > C) 했을때
폭 계산 : 폭계산식 그대로 계산
진입 : 신고가 재돌파 시까지 진입금지
--------------------------------------------------------------------------------
input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000);
var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false);
var : dayhh(0),EnvelUp(0),Percent(20);
sum = 0;
dayhh = dayhigh(0);
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
if dayhigh(cnt) > dayhh Then
dayhh = dayhigh(cnt);
}
mav = sum/P;
EnvelUp = maV + maV * (Percent / 100);
######## 매수전 조건 ##############
if sdate >= 시작날짜 then{
if crossup(L,mav) Then{
T = 1;
diff = 0;
maxdiff = 0;
Condition1 = false;
entry = false;
}
if CrossDown(H,mav) Then{
T = -1;
Condition1 = false;
entry = false;
}
##### 신고가 조건 ############
if dayhh > dayhh[1] Then{
Condition1 = true;
entry = true;
Hv = H;
Lv = L;
}
######### 폭계산식 ###############
if T == 1 and Condition1 == true Then{
if H > Hv Then
Hv = H;
if L < Lv Then
Lv = L;
diff = Hv-Lv;
if diff > maxdiff Then
maxdiff = diff;
Price1 = Hv-maxdiff*1;
Price2 = Hv-maxdiff*2;
Price3 = Hv-maxdiff*3;
}
if MarketPosition == 1 Then
entry = false;
#가격이 하락해 1차매수가격 이하이면 매수
if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then
buy("b1",atlimit,Price1,Floor(매수1차/C));
#가격이 하락해 2차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then
buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C));
#가격이 하락해 3차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then
buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C));
if MarketPosition == 1 Then{
#진입이후로 한번도 선 아래로 내려가지 않은경우
#진입이후 최저가에서 폭만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) == 0 Then
ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]);
#진입이후로 20선 아래로 한번이상 내려간 경우
#진입이후 최저가에서 폭의 절반만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) >= 1 Then
ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5);
#일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%)
ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75);
if MaxEntries == 2 Then
exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2);
if MaxEntries == 3 Then
exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]);
}
}
답변 1
예스스탁 예스스탁 답변
2016-06-15 17:11:12
안녕하세요
예스스탁입니다.
input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000);
var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false);
var : dayhh(0),EnvelUp(0),Percent(20);
sum = 0;
dayhh = dayhigh(0);
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
if dayhigh(cnt) > dayhh Then
dayhh = dayhigh(cnt);
}
mav = sum/P;
EnvelUp = maV + maV * (Percent / 100);
######## 매수전 조건 ##############
if sdate >= 시작날짜 then{
if crossup(L,mav) Then{
T = 1;
diff = 0;
maxdiff = 0;
Condition1 = false;
entry = false;
}
if CrossDown(H,mav) Then{
T = -1;
Condition1 = false;
entry = false;
}
##### 신고가 조건 ############
if dayhh > dayhh[1] Then{
Condition1 = true;
if O*1.03 < C then{
entry = true;
if H-L > maxdiff Then{
Hv = H;
Lv = H;
}
Else{
Hv = H;
Lv = L;
}
}
else{
entry = true;
Hv = H;
Lv = L;
}
}
######### 폭계산식 ###############
if T == 1 and Condition1 == true Then{
if H > Hv Then
Hv = H;
if L < Lv Then
Lv = L;
diff = Hv-Lv;
if diff > maxdiff Then
maxdiff = diff;
Price1 = Hv-maxdiff*1;
Price2 = Hv-maxdiff*2;
Price3 = Hv-maxdiff*3;
}
if MarketPosition == 1 Then
entry = false;
#가격이 하락해 1차매수가격 이하이면 매수
if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then
buy("b1",atlimit,Price1,Floor(매수1차/C));
#가격이 하락해 2차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then
buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C));
#가격이 하락해 3차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then
buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C));
if MarketPosition == 1 Then{
#진입이후로 한번도 선 아래로 내려가지 않은경우
#진입이후 최저가에서 폭만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) == 0 Then
ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]);
#진입이후로 20선 아래로 한번이상 내려간 경우
#진입이후 최저가에서 폭의 절반만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) >= 1 Then
ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5);
#일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%)
ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75);
if MaxEntries == 2 Then
exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2);
if MaxEntries == 3 Then
exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]);
}
}
즐거운 하루되세요
> kosto1 님이 쓴 글입니다.
> 제목 : 시스템식 수정 문의드립니다
> 안녕하세요.
신고가 조건을 수정하고 그에 따른 조건을 추가해보고 싶어 글 올립니다
항상 신경써주셔서 감사합니다!!
1 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 클때
폭계산 : 1 조건의 신고가 봉만 저가를 봉의 고가로 처리해서 폭계산(DIFF = HV-LV=0),
다음 신고가 돌파까지 1조건의 신고가봉만 저가를 H로 고정
다음봉 부터는 폭계산식 그대로 계산
진입 : 현재식 그대로 진입
2. 신고가 양봉돌파(O *1.03 < C) & 그 봉의 폭이 이전 최대폭보다 작을때
폭 계산: 폭계산식 그대로 계산
진입 : 현재식 그대로 진입
3. 신고가 음봉돌파(O *1.03 > C) 했을때
폭 계산 : 폭계산식 그대로 계산
진입 : 신고가 재돌파 시까지 진입금지
--------------------------------------------------------------------------------
input : P(20),시작날짜(20160108),매수1차(1000000),매수2차(1500000),매수3차(2000000);
var : T(0),HH(0),Price1(0),Price2(0),Price3(0),diff(0),maxdiff(0),Lv(0),sum(0),mav(0),cnt(0),Hv(0),entry(false);
var : dayhh(0),EnvelUp(0),Percent(20);
sum = 0;
dayhh = dayhigh(0);
for cnt = 0 to P-1{
sum = sum+DayClose(cnt);
if dayhigh(cnt) > dayhh Then
dayhh = dayhigh(cnt);
}
mav = sum/P;
EnvelUp = maV + maV * (Percent / 100);
######## 매수전 조건 ##############
if sdate >= 시작날짜 then{
if crossup(L,mav) Then{
T = 1;
diff = 0;
maxdiff = 0;
Condition1 = false;
entry = false;
}
if CrossDown(H,mav) Then{
T = -1;
Condition1 = false;
entry = false;
}
##### 신고가 조건 ############
if dayhh > dayhh[1] Then{
Condition1 = true;
entry = true;
Hv = H;
Lv = L;
}
######### 폭계산식 ###############
if T == 1 and Condition1 == true Then{
if H > Hv Then
Hv = H;
if L < Lv Then
Lv = L;
diff = Hv-Lv;
if diff > maxdiff Then
maxdiff = diff;
Price1 = Hv-maxdiff*1;
Price2 = Hv-maxdiff*2;
Price3 = Hv-maxdiff*3;
}
if MarketPosition == 1 Then
entry = false;
#가격이 하락해 1차매수가격 이하이면 매수
if MarketPosition == 0 and Condition1 == true and entry == true and L > mav and Hv >= Price1*1.025 Then
buy("b1",atlimit,Price1,Floor(매수1차/C));
#가격이 하락해 2차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 1 and Price2[BarsSinceEntry+1] > 0 Then
buy("b2",atlimit,Price2[BarsSinceEntry+1],Floor(매수2차/C));
#가격이 하락해 3차매수가격 이하이면 매수
if MarketPosition == 1 and MaxEntries == 2 and Price3[BarsSinceEntry+1] > 0 Then
buy("b3",atlimit,Price3[BarsSinceEntry+1],Floor(매수3차/C));
if MarketPosition == 1 Then{
#진입이후로 한번도 선 아래로 내려가지 않은경우
#진입이후 최저가에서 폭만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) == 0 Then
ExitLong("bx1",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]);
#진입이후로 20선 아래로 한번이상 내려간 경우
#진입이후 최저가에서 폭의 절반만큼 상승하면 청산
if countif(L<mav,BarsSinceEntry) >= 1 Then
ExitLong("bx2",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.5);
#일괄매도 = 현재 20일 신고가 이후 최저가 + 최대폭(75%)
ExitLong("일괄매도",atlimit,lowest(L,BarsSinceEntry)+maxdiff[BarsSinceEntry+1]*0.75);
if MaxEntries == 2 Then
exitlong("본절2",atlimit,(Price1[BarsSinceEntry+1]+Price2[BarsSinceEntry+1])/2);
if MaxEntries == 3 Then
exitlong("본절3",atlimit,Price2[BarsSinceEntry+1]);
}
}