안녕하세요.
얼마 전에 문의 드려서 아래의 수식을 작성해주셨습니다.
그런데 5분봉, 10분봉 등의 차트에서 실행하면 신호 발생 후 다음 봉에서 매매가 이뤄지는 것 같습니다. (정확하지는 않습니다. 다만 증권사 HTS 를 같이 켜놓고 보면 조건이 이뤄진후에도 한참 있다가 매매가 되는 것 같습니다.)
아래의 수식에서 조건 만족 시 바로 매매가 되도록 수식의 수정이 가능할까요?
===== 작성해 주신 수식 =====
nput : P(14);
input : 익절틱수(100),손절틱수(60);
var : V1(0),V2(0);
V1 = DiPlus(P);
V2 = DiMinus(P);
if MarketPosition <= 0 and V1 >= V2 and V1[1] < V2[1] Then
Buy();
if MarketPosition >= 0 and V1 < V2 and V1[1] >= V2[1] Then
Sell();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
답변 1
예스스탁
예스스탁 답변
2021-09-23 18:18:33
안녕하세요
예스스탁입니다.
1
랭귀지의 기본체계는 봉완성입니다.
봉완성은 다음봉시가가 수신될때입니다.
if문은 봉완성시에 조건만족여부를 판단하므로
조건이 만족하고 있으면 해당봉을 완성하는 다음봉시가가 수신될때 신호와 주문이 집행되는 것이 맞습니다.
2
랭귀지에 atstop이나 atlimit 신호타입이 미완성시에 신호가 발생하게 할수는 있지만
해당 타입들은 봉완성시에 완성봉기준으로 특정값을 셋팅하고
다음봉 미완성시에에 현재가와 직전완성봉에서 셋팅된값을 비교해 즉시 신호가 발생하는 타입이기에
기술적지표간의 비교는 가능하지 않고 기술적 지표간의 비교는 if문으로만 가능합니다.
올리신 전략 조건은 atstop이나 atlimit을 사용할 수 없는 내용입니다.
3
아래는 신호에서 지정하는 각 신호타입별 설명입니다.
랭귀지에 신호타입은 4가지가 있습니다. 식작성에 참고하시기 바랍니다.
onclose,atmarket,atstop,atlimit
onclose와 atmarket은 모두 봉완성시 신호발생합니다.
봉완성은 다음봉시가가 수신될때이고
onclsoe는 완성봉종가에 atmarket은 다음봉시가에 신호를 표시하는 차이가 있습니다.
atstop이나 atlimit은
봉완성시 if조건이 만족하면 가격조건이 셋팅되고
다음봉에서 셋팅된 가격 이상이나 이하의 시세가 발생하면 즉시 신호가 발생합니다.
atstop은
Buy나 exitshort과 같이 매수주문함수에 사용되면 지정한 가격이상의 시세가 발생할때 즉시 신호,
Sell이나 exitLong과 같이 매도주문함수에 사용되면 지정한 가격이하의 시세가 발생할때 즉시 신호가 발생합니다.
atlimit은
Buy나 exitshort과 같이 매수주문함수에 사용되면 지정한 가격이하의 시세가 발생할때 즉시 신호,
Sell이나 exitLong과 같이 매도주문함수에 사용되면 지정한 가격이상의 시세가 발생할때 즉시 신호가 발생합니다.
즐거운 하루되세요
> 밤의마법사 님이 쓴 글입니다.
> 제목 : 수식 수정이 가능할까요?
> 안녕하세요.
얼마 전에 문의 드려서 아래의 수식을 작성해주셨습니다.
그런데 5분봉, 10분봉 등의 차트에서 실행하면 신호 발생 후 다음 봉에서 매매가 이뤄지는 것 같습니다. (정확하지는 않습니다. 다만 증권사 HTS 를 같이 켜놓고 보면 조건이 이뤄진후에도 한참 있다가 매매가 되는 것 같습니다.)
아래의 수식에서 조건 만족 시 바로 매매가 되도록 수식의 수정이 가능할까요?
===== 작성해 주신 수식 =====
nput : P(14);
input : 익절틱수(100),손절틱수(60);
var : V1(0),V2(0);
V1 = DiPlus(P);
V2 = DiMinus(P);
if MarketPosition <= 0 and V1 >= V2 and V1[1] < V2[1] Then
Buy();
if MarketPosition >= 0 and V1 < V2 and V1[1] >= V2[1] Then
Sell();
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);