커뮤니티
타종목 참조 거래 수식 수정
2009-02-06 07:38:32
895
글번호 20037
선물차트를 이용해서 옵션매매를 하려고합니다.
Data2( )를 넣어서 수식을 수정하면 된다고 하는데 제가 직접 하니 오류가 발생하는 것같습니다. 아래의 식을 참조차트 거래가 가능하게 수정좀 해주시면 감사하겠습니다.
var : SLindex1(0), SLindex2(0), Lindex1(0), Lindex2(0);
var : SHindex1(0), SHindex2(0), Hindex1(0), Hindex2(0);
value1 = stochasticsD(5,3,3);
Condition2 = value1 > value1[1] and value1[1] <= value1[2]; // 스토캐스틱 상승반전
Condition3 = L > L[1] and L[1] <= L[2]; // 저가 상승반전
Condition4 = value1 < value1[1] and value1[1] >= value1[2]; // 스토캐스틱 하락반전
Condition5 = H < H[1] and H[1] >= H[2]; // 고가 하락반전
SLindex1 = MRO(Condition2,50,1); // 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
SLindex2 = MRO(Condition2,50,2); // 두번째로 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
Lindex1 = MRO(Condition3,50,1); // 최근 저가 상승반전 시점의 현재로 부터의 index
Lindex2 = MRO(Condition3,50,2); // 두번째로 최근 저가 상승반전 시점의 현재로 부터의 index
SHindex1 = MRO(Condition4,50,1); // 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
SHindex2 = MRO(Condition4,50,2); // 두번째로 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
Hindex1 = MRO(Condition5,50,1); // 최근 고가 하락반전 시점의 현재로 부터의 index
Hindex2 = MRO(Condition5,50,2); // 두번째로 최근 고가 하락반전 시점의 현재로 부터의 index
input : N(1);
var : Bcount(0),Scount(0);
BCount = 0 ;
SCount = 0 ;
for Value2 = 0 to 10 {
if EntryDate(Value2) == sdate and MarketPosition(value2) == -1 then
SCount = SCount + 1;
}
if dayindex() >= 1 and c < dayopen() and C[1] < dayopen() and Scount < N // dayopen()-K
and stime >= 9000 and stime < 150000 Then
sell("진입b", atmarket);
if C and value1[1] >= 80 and
value1[SHindex1+1] < value1[SHindex2+1] and
value1[SHindex2+1] < value1[SHindex3+1] and
H[Lindex1+1] > H[Lindex2+1] and H[Lindex2+1]
Condition4 and highest(H,5) == highest(H,15)
Then
sell("진입a", atmarket);
if MarketPosition() == -1 and IsEntryName("진입3") == True Then{
if BarsSinceEntry == (1) and CountIF(CrossDown(c,DayOpen),BarsSinceEntry) <= 1 Then
ExitShort("청산#3-1", atmarket);
if Lowest(C,BarsSinceEntry) < dayopen and c > dayopen() Then
ExitShort("청산#3-2", atmarket);
if value1[1] <= 25 and
value1[SLindex1+1] > value1[SLindex2+1] and
L[Lindex1+1] < L[Lindex2+1] and
Condition2 and lowest(L,5) == lowest(L,15)
then
ExitShort("청산#3-3", atmarket);
}
if IsEntryName("진입a")== True or IsEntryName("진입b")== True Then{
if stime == 150000 Then
ExitShort("당일청산", atmarket); ## 진입1과 진입2일경우만 당일청산
}
input : TsValue(2);
var : posHigh(0), posLow(0);
If BarsSinceEntry() == 0 Then PosLow = Low;
If MarketPosition() == -1 and IsEntryName("진입1") == True Then {
If Low < PosLow Then PosLow = Low;
ExitShort("trailStop_ES%", AtStop, PosLow + PosLow*TSvalue/100);
}
답변 1
예스스탁 예스스탁 답변
2009-02-06 10:12:08
안녕하세요
예스스탁입니다.
올리신식중에 할당이 되지 않은 변수가 있습니다.
이부분은 수정하지 못했습니다.
또한 참조종목으로 변경시 atstop주문과 같은 경우는
구현되지 않습니다. 봉완성시로 변경했습니다.
input : N(1);
input : TsValue(2);
var : posHigh(0), posLow(0),value(0,data2);
var : cond2(False),cond3(False),cond4(False),cond5(False);
var : Bcount(0),Scount(0);
var : SLindex1(0,data2), SLindex2(0,data2), Lindex1(0,data2), Lindex2(0,data2);
var : SHindex1(0,data2), SHindex2(0,data2), Hindex1(0,data2), Hindex2(0,data2);
value = data2(stochasticsD(5,3,3));
Cond2 = value1 > value1[1] and value1[1] <= value1[2]; // 스토캐스틱 상승반전
Cond3 = data2(L) > data2(L[1]) and data2(L[1]) <= data2(L[2]); // 저가 상승반전
Cond4 = value1 < value1[1] and value1[1] >= value1[2]; // 스토캐스틱 하락반전
Cond5 = data2(H) < data2(H[1]) and data2(H[1]) >= data2(H[2]); // 고가 하락반전
SLindex1 = data2(MRO(Condition2,50,1)); // 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
SLindex2 = data2(MRO(Condition2,50,2)); // 두번째로 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
Lindex1 = data2(MRO(Condition3,50,1)); // 최근 저가 상승반전 시점의 현재로 부터의 index
Lindex2 = data2(MRO(Condition3,50,2)); // 두번째로 최근 저가 상승반전 시점의 현재로 부터의 index
SHindex1 = data2(MRO(Condition4,50,1)); // 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
SHindex2 = data2(MRO(Condition4,50,2)); // 두번째로 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
Hindex1 = data2(MRO(Condition5,50,1)); // 최근 고가 하락반전 시점의 현재로 부터의 index
Hindex2 = data2(MRO(Condition5,50,2)); // 두번째로 최근 고가 하락반전 시점의 현재로 부터의 index
BCount = 0 ;
SCount = 0 ;
for Value2 = 0 to 10 {
if EntryDate(Value2) == sdate and MarketPosition(value2) == -1 then
SCount = SCount + 1;
}
if data2(dayindex()) >= 1 and data2(c) < data2(openD(0)) and data2(C[1]) < data2(openD(0)) and Scount < N // dayopen()-K
and data2(stime) >= 90000 and data2(stime) < 150000 Then
sell("진입b", atmarket);
if data2(C) and value[1] >= 80 and
value[SHindex1+1] < value[SHindex2+1] and
value[SHindex2+1] < value[SHindex3+1] and
data2(H[Lindex1+1]) > data2(H[Lindex2+1]) and data2(H[Lindex2+1]) and
Cond4 and data2(highest(H,5)) == data2(highest(H,15)) Then
sell("진입a", atmarket);
if MarketPosition() == -1 and IsEntryName("진입3") == True Then{
if BarsSinceEntry == (1) and CountIF(CrossDown(data2(c),data2(OpenD(0))),BarsSinceEntry) <= 1 Then
ExitShort("청산#3-1", atmarket);
if Lowest(data2(C),BarsSinceEntry) < data2(openD(0)) and data2(c) > data2(openD(0)) Then
ExitShort("청산#3-2", atmarket);
if value[1] <= 25 and
value[SLindex1+1] > value[SLindex2+1] and
data2(L[Lindex1+1]) < data2(L[Lindex2+1]) and
Cond2 and data2(lowest(L,5)) == data2(lowest(L,15)) then
ExitShort("청산#3-3", atmarket);
}
if IsEntryName("진입a")== True or IsEntryName("진입b")== True Then{
if data2(stime) == 150000 Then
ExitShort("당일청산", atmarket); ## 진입1과 진입2일경우만 당일청산
}
If BarsSinceEntry() == 0 Then
PosLow = data2(Low);
If MarketPosition() == -1 and IsEntryName("진입1") == True Then {
If data2(Low) < PosLow Then
PosLow = data2(Low);
if CrossUp(L,PosLow + PosLow*TSvalue/100) Then
ExitShort("trailStop_ES%");
}
즐거운 하루되세요
> CJ_coco 님이 쓴 글입니다.
> 제목 : 타종목 참조 거래 수식 수정
> 선물차트를 이용해서 옵션매매를 하려고합니다.
Data2( )를 넣어서 수식을 수정하면 된다고 하는데 제가 직접 하니 오류가 발생하는 것같습니다. 아래의 식을 참조차트 거래가 가능하게 수정좀 해주시면 감사하겠습니다.
var : SLindex1(0), SLindex2(0), Lindex1(0), Lindex2(0);
var : SHindex1(0), SHindex2(0), Hindex1(0), Hindex2(0);
value1 = stochasticsD(5,3,3);
Condition2 = value1 > value1[1] and value1[1] <= value1[2]; // 스토캐스틱 상승반전
Condition3 = L > L[1] and L[1] <= L[2]; // 저가 상승반전
Condition4 = value1 < value1[1] and value1[1] >= value1[2]; // 스토캐스틱 하락반전
Condition5 = H < H[1] and H[1] >= H[2]; // 고가 하락반전
SLindex1 = MRO(Condition2,50,1); // 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
SLindex2 = MRO(Condition2,50,2); // 두번째로 최근 스토캐스틱 상승반전 시점의 현재로 부터의 index
Lindex1 = MRO(Condition3,50,1); // 최근 저가 상승반전 시점의 현재로 부터의 index
Lindex2 = MRO(Condition3,50,2); // 두번째로 최근 저가 상승반전 시점의 현재로 부터의 index
SHindex1 = MRO(Condition4,50,1); // 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
SHindex2 = MRO(Condition4,50,2); // 두번째로 최근 스토캐스틱 하락반전 시점의 현재로 부터의 index
Hindex1 = MRO(Condition5,50,1); // 최근 고가 하락반전 시점의 현재로 부터의 index
Hindex2 = MRO(Condition5,50,2); // 두번째로 최근 고가 하락반전 시점의 현재로 부터의 index
input : N(1);
var : Bcount(0),Scount(0);
BCount = 0 ;
SCount = 0 ;
for Value2 = 0 to 10 {
if EntryDate(Value2) == sdate and MarketPosition(value2) == -1 then
SCount = SCount + 1;
}
if dayindex() >= 1 and c < dayopen() and C[1] < dayopen() and Scount < N // dayopen()-K
and stime >= 9000 and stime < 150000 Then
sell("진입b", atmarket);
if C and value1[1] >= 80 and
value1[SHindex1+1] < value1[SHindex2+1] and
value1[SHindex2+1] < value1[SHindex3+1] and
H[Lindex1+1] > H[Lindex2+1] and H[Lindex2+1]
Condition4 and highest(H,5) == highest(H,15)
Then
sell("진입a", atmarket);
if MarketPosition() == -1 and IsEntryName("진입3") == True Then{
if BarsSinceEntry == (1) and CountIF(CrossDown(c,DayOpen),BarsSinceEntry) <= 1 Then
ExitShort("청산#3-1", atmarket);
if Lowest(C,BarsSinceEntry) < dayopen and c > dayopen() Then
ExitShort("청산#3-2", atmarket);
if value1[1] <= 25 and
value1[SLindex1+1] > value1[SLindex2+1] and
L[Lindex1+1] < L[Lindex2+1] and
Condition2 and lowest(L,5) == lowest(L,15)
then
ExitShort("청산#3-3", atmarket);
}
if IsEntryName("진입a")== True or IsEntryName("진입b")== True Then{
if stime == 150000 Then
ExitShort("당일청산", atmarket); ## 진입1과 진입2일경우만 당일청산
}
input : TsValue(2);
var : posHigh(0), posLow(0);
If BarsSinceEntry() == 0 Then PosLow = Low;
If MarketPosition() == -1 and IsEntryName("진입1") == True Then {
If Low < PosLow Then PosLow = Low;
ExitShort("trailStop_ES%", AtStop, PosLow + PosLow*TSvalue/100);
}
다음글
이전글