커뮤니티
문의
2014-10-10 07:58:58
185
글번호 79211
1. 현재 1틱 차트에서... 50틱 차트를 data2로 해서 거기서 발생하는 신호를 1틱차트에서 추가 조건을 두어 사용하려고합니다.
현재 사용하고 있는 50틱 차트의 시스템을 data2해서 1틱 차트에서 사용할수 있도록 도움 부탁드립니다.
=============== 50틱 차트에서 사용하는 시스템 입니다.=====
value1 = Ema(C,Period);
value2 = LRL(C,T_Period);
value3 = SAR(0.02,0.2);
value4 = MACD(12,26);
value5 = ma((MACDv-ema(MACDv,9))*10000,2);
MAv1 = (BBup1-BBdn1)/2; //
BBup1 = BollBandUp(BBPeriod1,MultiD1);
BBdn1 = BollBandDown(BBPeriod1,MultiD1);
UPline = EnvelopeUp(EN_Period, EN_Percent);
Dnline = EnvelopeDown(EN_Period, EN_Percent);
//////////////////////////// 초기화 /////////////////////////////
if stime == 070500 or (stime > 070500 and stime[1] < 070500) Then
daycnt = daycnt + 1;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
buycond = crossup(value1, value2);
sellcond = crossdown(value1, value2);
if buycond == true then
buypoint = value3;
if sellcond == true Then
sellpoint = value3;
if daycnt==0 Then
{
if buycond == true Then
{
buy("start_b");
count = count+1;
}
else if sellcond == true Then
{
sell("start_s");
count = count+1;
}
}
////////////////////// 50틱차트 신호 시작 //////////////////
if daycnt >= 1 then
{
if Value1>Value2 and Value1 > Mav1 Then
Buy("B");
if Value1<Value2 and Value1 < Mav1 Then
Sell("S");
}
/////////////////////////50틱 차트신호 끝//////////////////////////////////
상기와 비슷하게 50틱 차트에서 시스템신호가 발생합니다.
즉 50틱에서 매수 신호가 뜨면 1틱차트에서 또 다른 MACD 값을 비교해서 0선 돌파시 매수
0선 하향돌파시 매도 신호를 내려고 합니다. 도움 부탁드립니다.
2. 초기화 부분에서요..
현재 이렇게 되어 있습니다.
if stime == 070500 or (stime > 070500 and stime[1] < 070500) Then
daycnt = daycnt + 1;
첫봉의 시작시간이 오전 07:05분에 시작될때 부터 신호가 발생하게 되어 있는데요..
기존에 50틱 차트에서는 아무 문제없었는데요. 1틱차트에서는 아침에는 아무문제없지만..
오후에 다시 HTS를 시작하게 되면 1틱차트의 첫봉이 아침 07시가 아닌... 3~4시간전 부터 봉이 시작합니다.(현재 5,000개 봉 조회) 이때는 신호가 발생하지 않습니다.
그걸 이렇게 바꿔 봤는데..
// 현재시간에서 3시간 전부터 신호 발생하고 싶습니다.
// 우리선물1틱데이타 너무 안보여줍니다.
if stime == (CurrentTime-30000) or (stime > (CurrentTime-30000) and stime[1] < (CurrentTime-030000)) Then
역시 신호가 나오지 않네요.. 도움 부탁드립니다.
답변 2
예스스탁 예스스탁 답변
2014-10-10 11:28:14
안녕하세요
예스스탁입니다.
1.
수식은 참조데이터(data2)를 이용하는 식으로 변경해 드립니다.
다만 차트에서 참조데이터는 10틱이상일때만 적용가능합니다,
1틱차트에서는 참조데이터 사용하실수 없습니다.
input : Period(1),T_Period(1),BBPeriod1(0),MultiD1(1),EN_Period(1),EN_Percent(1);
var : val1(0,data2),val2(0,data2),val3(0,data2),val4(0,data2),val5(0,data2);
var : BBup1(0,data2),BBdn1(0,data2),mav1(0,data2),UPline(0,data2),DnLine(0,data2);
var : buycond(false,data2),sellcond(false,data2),buypoint(0,data2),sellpoint(0,data2),T(0,data2);
var : daycnt(0,data1),count(0,data1),MACDv1(0,data1),MACDs1(0,data1);
val1 = data2(Ema(C,Period));
val2 = data2(LRL(C,T_Period));
val3 = data2(SAR(0.02,0.2));
val4 = data2(MACD(12,26));
val5 = data2(ma((val4-ema(val4,9))*10000,2));
BBup1 = data2(BollBandUp(BBPeriod1,MultiD1));
BBdn1 = data2(BollBandDown(BBPeriod1,MultiD1));
MAv1 = (BBup1-BBdn1)/2;
UPline = data2(EnvelopeUp(EN_Period, EN_Percent));
Dnline = data2(EnvelopeDown(EN_Period, EN_Percent));
#data1 MACD
MACDV1 = data1(MACD(12,26));
MACDs1 = data1(ema(MACDV1,9));
//////////////////////////// 초기화 /////////////////////////////
if stime == 070500 or (stime > 070500 and stime[1] < 070500) Then {
daycnt = daycnt + 1;
T = 0;
}
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
buycond = crossup(val1, val2);
sellcond = crossdown(val1, val2);
if buycond == true then
buypoint = val3;
if sellcond == true Then
sellpoint = val3;
if daycnt==0 Then
{
if buycond == true Then
T = 1;
if buycond == true Then
T = -1;
//data2에서 매수조건 만족하고 data1의 MACD 상향교차 매수
if T == 1 and crossup(MACDV1,MACDS1) Then
{
buy("start_b");
}
//data2에서 매도조건 만족하고 data1의 MACD 하향교차 매수
if T == -1 and CrossDown(MACDV1,MACDS1) Then
{
sell("start_s");
}
}
////////////////////// 50틱차트 신호 시작 //////////////////
if daycnt >= 1 then
{
if val1>val2 and val1 > Mav1 Then
T = 1;
if val1<val2 and val1 < Mav1 Then
T = -1;
//data2에서 매수조건 만족하고 data1의 MACD 상향교차 매수
if T == 1 and crossup(MACDV1,MACDS1) Then
Buy("B");
//data2에서 매도조건 만족하고 data1의 MACD 하향교차 매수
if T == -1 and CrossDown(MACDV1,MACDS1)Then
Sell("S");
}
/////////////////////////50틱 차트신호 끝//////////////////////////////////
2.
해당 부분은 방법이 없습니다.
전략실행차트는 최대 봉조회갯수가 5000개입니다.
또한 현재봉으로부터 3시간전 4시간전은 수식에서 지정해서 신호를 발생할수 없습니다.
모든 수식은 과거에서 현재봉쪽으로만 계산이 됩니다.
현재봉에서 3시간전은 현재봉까지 와서 시간을 확인해야 하는데
현재봉까지 오면 과거로 돌아가서 신호를 발생해야 하는데
과거로 다시 역행하는 내용은 수식에서 구현이 되지 않습니다.
즐거운 하루되세요
> hjkang철인 님이 쓴 글입니다.
> 제목 : 문의
> 1. 현재 1틱 차트에서... 50틱 차트를 data2로 해서 거기서 발생하는 신호를 1틱차트에서 추가 조건을 두어 사용하려고합니다.
현재 사용하고 있는 50틱 차트의 시스템을 data2해서 1틱 차트에서 사용할수 있도록 도움 부탁드립니다.
=============== 50틱 차트에서 사용하는 시스템 입니다.=====
value1 = Ema(C,Period);
value2 = LRL(C,T_Period);
value3 = SAR(0.02,0.2);
value4 = MACD(12,26);
value5 = ma((MACDv-ema(MACDv,9))*10000,2);
MAv1 = (BBup1-BBdn1)/2; //
BBup1 = BollBandUp(BBPeriod1,MultiD1);
BBdn1 = BollBandDown(BBPeriod1,MultiD1);
UPline = EnvelopeUp(EN_Period, EN_Percent);
Dnline = EnvelopeDown(EN_Period, EN_Percent);
//////////////////////////// 초기화 /////////////////////////////
if stime == 070500 or (stime > 070500 and stime[1] < 070500) Then
daycnt = daycnt + 1;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
count = count+1;
buycond = crossup(value1, value2);
sellcond = crossdown(value1, value2);
if buycond == true then
buypoint = value3;
if sellcond == true Then
sellpoint = value3;
if daycnt==0 Then
{
if buycond == true Then
{
buy("start_b");
count = count+1;
}
else if sellcond == true Then
{
sell("start_s");
count = count+1;
}
}
////////////////////// 50틱차트 신호 시작 //////////////////
if daycnt >= 1 then
{
if Value1>Value2 and Value1 > Mav1 Then
Buy("B");
if Value1<Value2 and Value1 < Mav1 Then
Sell("S");
}
/////////////////////////50틱 차트신호 끝//////////////////////////////////
상기와 비슷하게 50틱 차트에서 시스템신호가 발생합니다.
즉 50틱에서 매수 신호가 뜨면 1틱차트에서 또 다른 MACD 값을 비교해서 0선 돌파시 매수
0선 하향돌파시 매도 신호를 내려고 합니다. 도움 부탁드립니다.
2. 초기화 부분에서요..
현재 이렇게 되어 있습니다.
if stime == 070500 or (stime > 070500 and stime[1] < 070500) Then
daycnt = daycnt + 1;
첫봉의 시작시간이 오전 07:05분에 시작될때 부터 신호가 발생하게 되어 있는데요..
기존에 50틱 차트에서는 아무 문제없었는데요. 1틱차트에서는 아침에는 아무문제없지만..
오후에 다시 HTS를 시작하게 되면 1틱차트의 첫봉이 아침 07시가 아닌... 3~4시간전 부터 봉이 시작합니다.(현재 5,000개 봉 조회) 이때는 신호가 발생하지 않습니다.
그걸 이렇게 바꿔 봤는데..
// 현재시간에서 3시간 전부터 신호 발생하고 싶습니다.
// 우리선물1틱데이타 너무 안보여줍니다.
if stime == (CurrentTime-30000) or (stime > (CurrentTime-30000) and stime[1] < (CurrentTime-030000)) Then
역시 신호가 나오지 않네요.. 도움 부탁드립니다.
hjkang철인
2014-10-10 13:13:19
hjkang철인 님에 의해 삭제된 답변입니다.
다음글
이전글