커뮤니티

타종목 참조 거래 수식 수정

프로필 이미지
회원
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); }