커뮤니티
다른점..
2012-03-20 15:43:22
439
글번호 49154
안녕하세요..
한방향으로 한번만 진입하도록 제가
포지션이 있으면 카운터를 넣어서 해보려고 했는데
가르쳐 주신 방법과 다르네요..
카운터를 넣어서 하는방법이 왜 다른결과 가 나오는지 첫번째와
두번째 시스템 비교부탁 드립니다.
첫번째
input : len(3.2), len1(0.34);
var : cond1(False), cond2(False), ccc1(0), ccc2(0);
if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면
var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1);
}
if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면
var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1);
}
if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면
var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1);
}
if date <> date[1] then{
ccc1 = 0;
ccc2 = 0;
}
if stime < 150000 then {
if ccc1<1 then{
if dayopen > var1 Then{
buy("매수1", atstop, dayopen+(var1-var2)*len1);
if MarketPosition <> 0 then
ccc1 = ccc1+1;
}
if dayopen < var2 Then{
buy("매수4", atstop, var2);
if MarketPosition <> 0 then
ccc1 = ccc1+1;
}
}
if ccc2 <1 then{
if dayopen > var1 then{
sell("매도1",atstop, var1);
if MarketPosition <> 0 then
ccc2 = ccc2+1;
}
if dayopen <var2 Then{
sell("매도", atstop, dayopen-(var1-var2)*len1);
if MarketPosition <> 0 then
ccc2 = ccc2+1;
}
}
}
if MarketPosition <>0 Then {
exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len);
exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len);
}
SetStopEndofday(150400);
두번째
input : len(3.2), len1(0.34);
var : cnt(0), cond1(False), cond2(False);
if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면
var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1);
}
if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면
var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1);
}
if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면
var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1);
}
cond1 = false;
cond2 = false;
for cnt = 0 to 10{
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 Then
Cond1 = true;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 Then
Cond2 = true;
}
if stime < 150000 then {
if cond1 == False then{
if dayopen > var1 and MarketPosition != 1 Then{
buy("매수1", atstop, dayopen+(var1-var2)*len1);
}
if dayopen < var2 Then{
buy("매수4", atstop, var2);
}
}
if cond2 == False and MarketPosition != -1 then{
if dayopen > var1 then{
sell("매도1",atstop, var1);
}
if dayopen <var2 Then{
sell("매도", atstop, dayopen-(var1-var2)*len1);
}
}
}
if MarketPosition <>0 Then {
exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len);
exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len);
}
SetStopEndofday(150400);
답변 1
예스스탁 예스스탁 답변
2012-03-20 16:58:11
안녕하세요
예스스스탁입니다.
두번째식은 발생한 진입신호의 날짜와 포지션형태를 가지교 체크하는 식이고
첫번째 식은 ccc1과 ccc2는 신호와 관계없이 if조건으로 카운트를 하는 내용입니다.
만약 당일 dayopen > var1 상태에서 매수조건이 최초 발생하면
ccc1이 1값이 되고 동시에 ccc2값도 1이 됩니다.
왜냐하면 CCC2값도 현재 0이고 ccc2 <1
if dayopen > var1 then 조건도 만족하고
if MarketPosition <> 0 then도 만족하기 때문입니다.
즉 동일한 조건으로 변수이름만 다른게 하여 값을 누적하게 되기 때문에
매수와 매도를 각각 카운트 하는 내용으로는 맞지 않습니다.
즐거운 하루되세요
> rlaxoeh 님이 쓴 글입니다.
> 제목 : 다른점..
> 안녕하세요..
한방향으로 한번만 진입하도록 제가
포지션이 있으면 카운터를 넣어서 해보려고 했는데
가르쳐 주신 방법과 다르네요..
카운터를 넣어서 하는방법이 왜 다른결과 가 나오는지 첫번째와
두번째 시스템 비교부탁 드립니다.
첫번째
input : len(3.2), len1(0.34);
var : cond1(False), cond2(False), ccc1(0), ccc2(0);
if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면
var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1);
}
if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면
var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1);
}
if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면
var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1);
}
if date <> date[1] then{
ccc1 = 0;
ccc2 = 0;
}
if stime < 150000 then {
if ccc1<1 then{
if dayopen > var1 Then{
buy("매수1", atstop, dayopen+(var1-var2)*len1);
if MarketPosition <> 0 then
ccc1 = ccc1+1;
}
if dayopen < var2 Then{
buy("매수4", atstop, var2);
if MarketPosition <> 0 then
ccc1 = ccc1+1;
}
}
if ccc2 <1 then{
if dayopen > var1 then{
sell("매도1",atstop, var1);
if MarketPosition <> 0 then
ccc2 = ccc2+1;
}
if dayopen <var2 Then{
sell("매도", atstop, dayopen-(var1-var2)*len1);
if MarketPosition <> 0 then
ccc2 = ccc2+1;
}
}
}
if MarketPosition <>0 Then {
exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len);
exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len);
}
SetStopEndofday(150400);
두번째
input : len(3.2), len1(0.34);
var : cnt(0), cond1(False), cond2(False);
if dayopen > DayClose(1) Then{ ## 전종가보다 오픈가격이 높으면
var1 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)+DayLow(1)*2)/2 - DayHigh(1);
}
if DayOpen < DayClose(1) then{ ##전종가보다 오프가격이 낮으면
var1 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)*2+DayClose(1)+DayLow(1))/2 - DayHigh(1);
}
if DayOpen == DayClose(1) then{ ##전종가보다 오프가격이 같으면
var1 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - daylow(1);
var2 = (DayHigh(1)+DayClose(1)*2+DayLow(1))/2 - DayHigh(1);
}
cond1 = false;
cond2 = false;
for cnt = 0 to 10{
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 Then
Cond1 = true;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 Then
Cond2 = true;
}
if stime < 150000 then {
if cond1 == False then{
if dayopen > var1 and MarketPosition != 1 Then{
buy("매수1", atstop, dayopen+(var1-var2)*len1);
}
if dayopen < var2 Then{
buy("매수4", atstop, var2);
}
}
if cond2 == False and MarketPosition != -1 then{
if dayopen > var1 then{
sell("매도1",atstop, var1);
}
if dayopen <var2 Then{
sell("매도", atstop, dayopen-(var1-var2)*len1);
}
}
}
if MarketPosition <>0 Then {
exitlong("매수청산", atstop, Highest(H,BarsSinceEntry+1)-atr(20)*len);
exitshort("매도청산", atstop, Lowest(L,BarsSinceEntry+1)+atr(20)*len);
}
SetStopEndofday(150400);
다음글
이전글