커뮤니티
수식 문의 드립니다
2015-01-07 20:30:03
158
글번호 82014
안녕하세요.
동그라미에 체크되어 있는 부분이 매수신호가 안잡히네요.
수정좀 부탁드립니다. 날자와 가격부분은 체크해놨습니다.
피라미딩설정에서 모든신호진입시는 잡히는데요 허용안함에서는 중복구간이 아님에도
신호가 안잡힙니다.
항상 수고해 주셔서 감사합니다 .
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if
(L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",xvol,1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",xvol,1);
}
답변 3
예스스탁 예스스탁 답변
2015-01-08 11:01:17
안녕하세요
예스스탁입니다.
시스템은 진입과 청산이 기본적으로 반복이 됩니다.
진입이후에 청산전까지 조건이 만족하면 추가로 진입을 하고자 하시면
피라미딩을 설정하셔야 합니다.
현재 해당식을 적용하실때 수량을 1로 지정하시면 의미가 없습니다.
왜냐하면 청산식이 분할로 청산되게 작성이 되어 있는데
수량이 1이면 그절반이 0.5이므로 수량이 충족되지 않아 청산신호가 나올수 없습니다.
분할청산식을 사용자분이 진입수량을 1주로 지정해서
절반의 수량이 1 미만일때는 최소 1주는 청산이되게 수정해 드립니다.
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if (L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",max(1,xvol),1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",max(1,xvol),1);
}
즐거운 하루되세요
> HI_ki**** 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> 안녕하세요.
동그라미에 체크되어 있는 부분이 매수신호가 안잡히네요.
수정좀 부탁드립니다. 날자와 가격부분은 체크해놨습니다.
피라미딩설정에서 모든신호진입시는 잡히는데요 허용안함에서는 중복구간이 아님에도
신호가 안잡힙니다.
항상 수고해 주셔서 감사합니다 .
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if
(L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",xvol,1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",xvol,1);
}
회원
2015-01-08 11:41:41
수정해주신 수식대로
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if (L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",max(1,xvol),1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",max(1,xvol),1);
}
해도 안됩니다.
다시 부탁드립니다.. 감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 문의 드립니다
> 안녕하세요
예스스탁입니다.
시스템은 진입과 청산이 기본적으로 반복이 됩니다.
진입이후에 청산전까지 조건이 만족하면 추가로 진입을 하고자 하시면
피라미딩을 설정하셔야 합니다.
현재 해당식을 적용하실때 수량을 1로 지정하시면 의미가 없습니다.
왜냐하면 청산식이 분할로 청산되게 작성이 되어 있는데
수량이 1이면 그절반이 0.5이므로 수량이 충족되지 않아 청산신호가 나올수 없습니다.
분할청산식을 사용자분이 진입수량을 1주로 지정해서
절반의 수량이 1 미만일때는 최소 1주는 청산이되게 수정해 드립니다.
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if (L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",max(1,xvol),1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",max(1,xvol),1);
}
즐거운 하루되세요
> HI_ki**** 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> 안녕하세요.
동그라미에 체크되어 있는 부분이 매수신호가 안잡히네요.
수정좀 부탁드립니다. 날자와 가격부분은 체크해놨습니다.
피라미딩설정에서 모든신호진입시는 잡히는데요 허용안함에서는 중복구간이 아님에도
신호가 안잡힙니다.
항상 수고해 주셔서 감사합니다 .
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if
(L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",xvol,1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",xvol,1);
}
예스스탁 예스스탁 답변
2015-01-08 12:27:38
안녕하세요
예스스탁입니다.
해당식 다시 적용해 보았지만 첨부된 그림과 같이
지정하신 자리에 신호가 발생합니다.
다시 재적용해 보시고 신호가 발생하지 않으시면
02-3453-1060으로 전화주시기 바랍니다.
즐거운 하루되세요
> HI_ki**** 님이 쓴 글입니다.
> 제목 : Re : Re : 수정했어도 안됩니다.
>
수정해주신 수식대로
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if (L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",max(1,xvol),1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",max(1,xvol),1);
}
해도 안됩니다.
다시 부탁드립니다.. 감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 수식 문의 드립니다
> 안녕하세요
예스스탁입니다.
시스템은 진입과 청산이 기본적으로 반복이 됩니다.
진입이후에 청산전까지 조건이 만족하면 추가로 진입을 하고자 하시면
피라미딩을 설정하셔야 합니다.
현재 해당식을 적용하실때 수량을 1로 지정하시면 의미가 없습니다.
왜냐하면 청산식이 분할로 청산되게 작성이 되어 있는데
수량이 1이면 그절반이 0.5이므로 수량이 충족되지 않아 청산신호가 나올수 없습니다.
분할청산식을 사용자분이 진입수량을 1주로 지정해서
절반의 수량이 1 미만일때는 최소 1주는 청산이되게 수정해 드립니다.
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if (L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",max(1,xvol),1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",max(1,xvol),1);
}
즐거운 하루되세요
> HI_ki**** 님이 쓴 글입니다.
> 제목 : 수식 문의 드립니다
> 안녕하세요.
동그라미에 체크되어 있는 부분이 매수신호가 안잡히네요.
수정좀 부탁드립니다. 날자와 가격부분은 체크해놨습니다.
피라미딩설정에서 모든신호진입시는 잡히는데요 허용안함에서는 중복구간이 아님에도
신호가 안잡힙니다.
항상 수고해 주셔서 감사합니다 .
var : 하한가(0), DnLimit(0);
var : dn1(0), dn2(0), dn3(0), dn4(0), dn5(0),dn6(0),dn7(0);
var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0);
var : cnt(0),msum(0),mmav(0);
var : ma360(0);
var : xvol(0);
Array : DM[99](0);
if date >= 19981207 then {
if date < 20050328 && CodeCategory() == 2 then
DnLimit = (BP * 0.12);
Else
DnLimit = (BP * 0.15);
if CodeCategory() == 2 then {
if date >= 20030721 then {
dn1 = int(DnLimit/100)*100;
dn2 = int(DnLimit/100)*100;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/10)*10;
dn7 = int(DnLimit/1)*1;
}
}
Else {
dn1 = int(DnLimit/1000)*1000;
dn2 = int(DnLimit/500)*500;
dn3 = int(DnLimit/100)*100;
dn4 = int(DnLimit/50)*50;
dn5 = int(DnLimit/10)*10;
dn6 = int(DnLimit/5)*5;
dn7 = int(DnLimit/1)*1;
}
if CodeCategory() == 1 or CodeCategory() == 2 then {
if sdate < 20101004 Then{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn6;
}
else{
If BP >= 500000 Then
하한가 = BP-dn1;
Else If BP >= 100000 Then
하한가 = BP-dn2;
Else If BP >= 50000 Then
하한가 = BP-dn3;
Else If BP >= 10000 Then
하한가 = BP-dn4;
Else If BP >= 5000 Then
하한가 = BP-dn5;
Else If BP >= 1000 Then
하한가 = BP-dn6;
Else
하한가 = BP-dn7;
}
}
else if CodeCategory() == 8 or CodeCategory() == 9 then {
하한가 = BP-dn6;
}
}
ma360 = ma(c,360);
if
(L >= ma360*0.80 and L <= ma360*0.905)
Then
buy("매수");
SetStopLoss(1.4,PercentStop);
if MarketPosition == 1 Then{
if CodeCategoryEx == 11 and BasePrice < 50000 Then{
xvol = int(int(MaxContracts*0.5)/10)*10;
}
Else{
xvol = int(MaxContracts*0.5);
}
exitlong("하매",AtStop,하한가);
if CurrentContracts == MaxContracts Then
exitlong("반매",atlimit,EntryPrice*1.03,"",xvol,1);
if CurrentContracts < MaxContracts Then
exitlong("완매",atlimit,EntryPrice*1.07,"",xvol,1);
}