커뮤니티
함수요청
2019-07-30 17:54:21
282
글번호 130800
안녕하세요?
함수 수정요청드립니다.
아래의 스크립트를
기본종목: CLU19, 주기: 5분봉
참조종목: NGU19, 주기: 5분봉
에 적용시키면 첨부와 같은 신호가 생성됩니다.
여기에 지표 볼린져밴드를 적용시켜서 추가 전략을 구상해보면, A의 매도진입 신호는 BB밖에서 신호가 생성되어 매매를 하지 않으려고 합니다.
반면 B와 C의 매수, 매도 신호는 BB안에서 신호가 생성되어 매매를 하고자 합니다.
상기의 논리를 추가하여 스크립트를 수정요청드립니다.
Vars : SP(0,data1), TickSize(0,data1);
Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2);
var : v1(0,data2),v2(0,data2);
SP = MarketPosition;
TickSize = PriceScale;
v1 = data2(H);
v2 = data2(L);
IF v1[10] > 0 Then
Begin
fstHH = data1(Highest(H, 5));
fstLL = data1(Lowest(L, 5));
sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]);
sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]);
End;
IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize);
IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL + TickSize);
SetStopLoss(0.3,PercentStop);
SetStopProfittarget(0.6,PercentStop);
- 1. 131409_캡처11.JPG (0.14 MB)
답변 1
예스스탁 예스스탁 답변
2019-07-31 10:50:02
안녕하세요
예스스탁입니다.
현재 시스템의 진입함수에 사용하는 타입은 atstop입니다.
atstop은 봉완성시에 감시가격을 설정하고 다음봉 현재가와 비교해 즉시 신호가 발생합니다.
미완성봉에서 추가로 조건을 지정할 수 없습니다.
매수진입은 봉완성시 if조건이 만족하면 fstHH - TickSize가격을 감시가격으로 셋팅하고
다음봉의 현재가가 지정한 감시가격보다 같거나 크면 즉시 매수신호가 발생하고
매도진입은 봉완성시 if조건이 만족하면 fstLL + TickSize가격을 감시가격으로 셋팅하고
다음봉의 현재가가 fstLL + TickSize보다 같거나 작면 매도신호가 발생하게 됩니다.
볼밴상하단내에 위치했는지 여부는 if문으로 봉완성시만 체크가 가능합니다.
다음봉 미완성시에 신호가 발생하는 astop은 제어가 되지 않습니다.
미완성봉의 볼밴값으로 수식 제어는 불가능하므로
셋팅될 감시가격이 현재완성봉의 볼밴상하단 이내에 있을때만
셋팅되서 감시하게 변경해 드립니다.
아래 내용 외에는 별도로 제어할 방법이 없습니다.
랭귀지 도움말에서 신호타입들 설명 내용을 참고하시기 바랍니다.
Input : Period(20), MultiD(2);
Vars : SP(0,data1), TickSize(0,data1);
Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2);
var : v1(0,data2),v2(0,data2);
var : BBup(0,data1),BBdn(0,data1);
BBup = data1(BollBandUp(Period,MultiD));
BBdn = data1(BollBandDown(Period,MultiD));
SP = MarketPosition;
TickSize = PriceScale;
v1 = data2(H);
v2 = data2(L);
IF v1[10] > 0 Then
Begin
fstHH = data1(Highest(H, 5));
fstLL = data1(Lowest(L, 5));
sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]);
sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]);
End;
IF MarketPosition == 0 and data2(C) > sndHH[1] and
BBup >= fstHH - TickSize and fstHH - TickSize >= BBdn Then
Buy("B", AtStop, fstHH - TickSize);
IF MarketPosition == 0 and data2(C) < sndLL[1] and
BBup >= fstLL + TickSize and fstLL + TickSize >= BBdn Then
Sell("S", AtStop, fstLL + TickSize);
SetStopLoss(0.3,PercentStop);
SetStopProfittarget(0.6,PercentStop);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
함수 수정요청드립니다.
아래의 스크립트를
기본종목: CLU19, 주기: 5분봉
참조종목: NGU19, 주기: 5분봉
에 적용시키면 첨부와 같은 신호가 생성됩니다.
여기에 지표 볼린져밴드를 적용시켜서 추가 전략을 구상해보면, A의 매도진입 신호는 BB밖에서 신호가 생성되어 매매를 하지 않으려고 합니다.
반면 B와 C의 매수, 매도 신호는 BB안에서 신호가 생성되어 매매를 하고자 합니다.
상기의 논리를 추가하여 스크립트를 수정요청드립니다.
Vars : SP(0,data1), TickSize(0,data1);
Vars : fstHH(0,data1), fstLL(0,data1), sndHH(0,data2), sndLL(0,data2);
var : v1(0,data2),v2(0,data2);
SP = MarketPosition;
TickSize = PriceScale;
v1 = data2(H);
v2 = data2(L);
IF v1[10] > 0 Then
Begin
fstHH = data1(Highest(H, 5));
fstLL = data1(Lowest(L, 5));
sndHH = Max(v1, v1[1], v1[2], v1[3], v1[4], v1[5], v1[6], v1[7], v1[8], v1[9], v1[10]);
sndLL = Min(v2, v2[1], v2[2], v2[3], v2[4], v2[5], v2[6], v2[7], v2[8], v2[9], v2[10]);
End;
IF MarketPosition == 0 and data2(C) > sndHH[1] Then Buy("B", AtStop, fstHH - TickSize);
IF MarketPosition == 0 and data2(C) < sndLL[1] Then Sell("S", AtStop, fstLL + TickSize);
SetStopLoss(0.3,PercentStop);
SetStopProfittarget(0.6,PercentStop);
다음글
이전글