커뮤니티
이것저것 문의드립니다.
2017-11-17 11:59:16
167
글번호 114266
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 볼린저밴드 돌파시 진입 재돌파시 재진입 수식 알려주신 걸 변수 몇개만 좀 바꿔서 적용해봤는데요. 모든진입신호 허용을 눌러도 추가 진입 신호가 안나옵니다. 뭔가 잘못한 걸까요?
Input : BBP(20), MultiD(2),MultiD2(1.5);
Input : Percent(2);
input : n(5);
var : MAv(0),BBup(0),BBdn(0),bbup2(0);
var : center(0),UPline(0),DNline(0);
MAv = ma(C,BBP);
BBup = BollBandUp(BBP,MultiD);
bbup2 = BollBandUp(BBP,MultiD2);
BBdn = BollBandDown(BBP,MultiD);
center = ma(C, BBP);
UPline = EnvelopeUp(BBP, Percent);
Dnline = EnvelopeDown(BBP, Percent);
if MarketPosition <= 0 and bbup-bbdn > UPline-Dnline and CrossUp(c,bbup*(1+n/100)) Then
buy("b1");
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
var1 = sdate;
var2 = CurrentContracts-CurrentContracts[1];
}
if sdate > var1 and crossup(c,bbup) then
buy("bb",OnClose,def,Floor(MaxContracts*0.5));
if MaxEntries == 2 and CrossDown(c,bbup2) Then
exitlong("bbx",OnClose,def,"bb");
if CrossDown(c,mav) Then
ExitLong("bx");
}
2. 시스템
진입
40일 볼린저밴드 상단선 상향돌파시 진입
청산
진입후 5일간은 고가 -ATR*3선에 닿으면 청산
5일이 지난 뒤에는 볼린저밴드 상단선 하향돌파시 청산
3. 시스템
2번 시스템을 일봉 지표기준 매매는 30분봉으로
4. 시스템
진입
시가대비 n% 이상 오르면 즉시 진입
청산
고가-atr*3이 되면 즉시 청산
5. 이 답변을 보다가 궁금증이 생겨서 질문드립니다. 갭이라는 게 호가 공백이 생길 정도로 가격이 오르거나 내리거나 하는 걸로 알고 있는데요. 그럼 아래수식은 특정 시간을 종가라고 가정하고 다음 봉이 완성될 때의 가격이 갭인가를 확인한 뒤 매수 혹은 매도하는 수식인가요?
안녕하세요
예스스탁입니다.
2번식은 국내 선물/옵션용입니다.
해외선물에는 맞지 않습니다
국내선물이라도 주야간 복합장에서도 맞지 않습니다.
해외선물이나 국내주야간복합장에서는
시초가 진입은 되지 않고
첫봉완성에 조건체크해서 진입하게 작성해야 합니다.
또한 당일청산함수도 일반적으로 사용하지 않습니다.
당일청산함수는 해당시간이후에 진입을 막으므로
if문으로 시간지정해 청산식 작성해서 사용해야 합니다.
if bdate != bdate[1] Then{
if o > C[1] Then
buy("b");
if O < C[1] Then
sell("s");
}
if stime == 053000 or (stime > 053000 and stime[1] < 053000) Then{
exitlong("bx");
ExitShort("sx");
}
답변 1
예스스탁 예스스탁 답변
2017-11-17 15:19:36
안녕하세요
예스스탁입니다.
1
첨부된 그림과 같이 추가진입 발생하고 있습니다.
혹시 진입수량을 1개로 지정하지 않았는지 확인하시기 바랍니다.
현재수식에는 따로 수량설정이 없어 설정창에서 지정한 수량이 적용됩니다.
수식에 금액으로 수량 지정되게 작성해 드립니다.
Input : BBP(20), MultiD(2),MultiD2(1.5),금액(10000000);
Input : Percent(2);
input : n(5);
var : MAv(0),BBup(0),BBdn(0),bbup2(0);
var : center(0),UPline(0),DNline(0);
MAv = ma(C,BBP);
BBup = BollBandUp(BBP,MultiD);
bbup2 = BollBandUp(BBP,MultiD2);
BBdn = BollBandDown(BBP,MultiD);
center = ma(C, BBP);
UPline = EnvelopeUp(BBP, Percent);
Dnline = EnvelopeDown(BBP, Percent);
if MarketPosition <= 0 and bbup-bbdn > UPline-Dnline and CrossUp(c,bbup*(1+n/100)) Then
buy("b1",OnClose,def,Floor(금액/C));
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
var1 = sdate;
var2 = CurrentContracts-CurrentContracts[1];
}
if sdate > var1 and crossup(c,bbup) then
buy("bb",OnClose,def,Floor(var2*0.5));
if MaxEntries == 2 and CrossDown(c,bbup2) Then
ExitLong("bbx",OnClose,def,"bb");
if CrossDown(c,mav) Then
ExitLong("bx");
}
2
input : P(20),dv(2),ATRP(10);
var : Bbup(0),BBdn(0),ATRV(0);
BBup = BollBandUp(P,dv);
BBdn = BollBandDown(P,dv);
ATRV = ATR(ATRP);
if MarketPosition == 0 and crossup(c,bbup) Then
buy("b");
if MarketPosition == 1 Then{
if BarsSinceEntry < 5 Then
ExitLong("bx",AtStop,H-ATRV*3);
if BarsSinceEntry >= 5 and CrossDown(c,BBup) Then
ExitLong("bx2");
}
3
input : P(20),Dv(2),ATRP(10);
var : sum(0),cnt(0),mav(0),SumSqrt(0),Stdv(0),Didx(0);
var : BBup(0),BBdn(0),BBup1(0),BBdn1(0),Counter(0);
var : sumTR(0),TH(0),TL(0),ATRV(0),ATRV1(0);
if bdate != Bdate[1] Then{
Didx = Didx+1;
BBup1 = BBup[1];
BBdn1 = BBdn[1];
ATRV1 = ATRV[1];
}
#일봉이평
sum = 0;
for cnt = 0 to P-1{
sum = sum + DayClose(cnt);
}
mav = sum/P;
#일봉표준편차 계산
SumSqrt = 0;
For Counter = 0 To P - 1 {
SumSqrt = SumSqrt + (DayClose(Counter) - mav)^2;
}
Stdv = SquareRoot(SumSqrt / P);
#일봉볼밴
BBup = mav + (Dv * Stdv);
BBdn = mav - (Dv * Stdv);
#일봉ATR
sumTR = 0;
for cnt = 0 to ATRP-1{
If DayClose(cnt+1) > DayHigh(cnt) then
TH = DayClose(cnt+1);
else
TH = DayHigh(cnt);
If DayClose(cnt+1) < daylow(cnt) then
TL = DayClose(cnt+1);
else
TL = daylow(cnt);
sumTR = sumTR + (TH-TL);
}
ATRV = sumTR/ATRP;
if MarketPosition == 0 and crossup(c,bbup) and DayClose(1) < BBup1 Then
buy("b");
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then
var1 = Didx;
if Didx < var1+5 and Didx > var1 Then
ExitLong("bx",AtStop,dayhigh(1)-ATRV1*3);
if Didx >= var1+5 and CrossDown(c,BBup) and DayClose(1) < BBup1 Then
ExitLong("bx2");
}
4
input : N(5),ATRP(10);
var : ATRV(0);
ATRV = ATR(ATRP);
if MarketPosition <= 0 and DayHigh < dayopen*(1+n/100) Then
buy("b",AtStop,dayopen*(1+n/100));
if MarketPosition == 1 Then
ExitLong("bx",AtStop,H-ATRV*3);
5
갭은 현재봉의 시가와 전봉의 종가와 차이인데
모든 봉에 대해서 갭을 따지는 경우는 없고
일반적으로 갭은 일간갭으로 시초가와 전일종가의 차이를 지칭합니다.
시초가가 전일종가보다 크면 상승갭, 작으면 하락갭입니다.
작성해 드린 수식은 첫봉완성시에
첫봉의시가(시초가)와 전봉종가(전일종가)를 비교해 신호를 발생하는 내용입니다.
해외선물과 국내 주야간복합장에서는 시초가 수신시를 알수없어
첫봉완성시로 작성해 드린것입니다.
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 이것저것 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 볼린저밴드 돌파시 진입 재돌파시 재진입 수식 알려주신 걸 변수 몇개만 좀 바꿔서 적용해봤는데요. 모든진입신호 허용을 눌러도 추가 진입 신호가 안나옵니다. 뭔가 잘못한 걸까요?
Input : BBP(20), MultiD(2),MultiD2(1.5);
Input : Percent(2);
input : n(5);
var : MAv(0),BBup(0),BBdn(0),bbup2(0);
var : center(0),UPline(0),DNline(0);
MAv = ma(C,BBP);
BBup = BollBandUp(BBP,MultiD);
bbup2 = BollBandUp(BBP,MultiD2);
BBdn = BollBandDown(BBP,MultiD);
center = ma(C, BBP);
UPline = EnvelopeUp(BBP, Percent);
Dnline = EnvelopeDown(BBP, Percent);
if MarketPosition <= 0 and bbup-bbdn > UPline-Dnline and CrossUp(c,bbup*(1+n/100)) Then
buy("b1");
if MarketPosition == 1 Then{
if CurrentContracts > CurrentContracts[1] Then{
var1 = sdate;
var2 = CurrentContracts-CurrentContracts[1];
}
if sdate > var1 and crossup(c,bbup) then
buy("bb",OnClose,def,Floor(MaxContracts*0.5));
if MaxEntries == 2 and CrossDown(c,bbup2) Then
exitlong("bbx",OnClose,def,"bb");
if CrossDown(c,mav) Then
ExitLong("bx");
}
2. 시스템
진입
40일 볼린저밴드 상단선 상향돌파시 진입
청산
진입후 5일간은 고가 -ATR*3선에 닿으면 청산
5일이 지난 뒤에는 볼린저밴드 상단선 하향돌파시 청산
3. 시스템
2번 시스템을 일봉 지표기준 매매는 30분봉으로
4. 시스템
진입
시가대비 n% 이상 오르면 즉시 진입
청산
고가-atr*3이 되면 즉시 청산
5. 이 답변을 보다가 궁금증이 생겨서 질문드립니다. 갭이라는 게 호가 공백이 생길 정도로 가격이 오르거나 내리거나 하는 걸로 알고 있는데요. 그럼 아래수식은 특정 시간을 종가라고 가정하고 다음 봉이 완성될 때의 가격이 갭인가를 확인한 뒤 매수 혹은 매도하는 수식인가요?
안녕하세요
예스스탁입니다.
2번식은 국내 선물/옵션용입니다.
해외선물에는 맞지 않습니다
국내선물이라도 주야간 복합장에서도 맞지 않습니다.
해외선물이나 국내주야간복합장에서는
시초가 진입은 되지 않고
첫봉완성에 조건체크해서 진입하게 작성해야 합니다.
또한 당일청산함수도 일반적으로 사용하지 않습니다.
당일청산함수는 해당시간이후에 진입을 막으므로
if문으로 시간지정해 청산식 작성해서 사용해야 합니다.
if bdate != bdate[1] Then{
if o > C[1] Then
buy("b");
if O < C[1] Then
sell("s");
}
if stime == 053000 or (stime > 053000 and stime[1] < 053000) Then{
exitlong("bx");
ExitShort("sx");
}
다음글
이전글