커뮤니티
문의드립니다.
2017-12-15 07:06:17
225
글번호 115011
아래 수식을 실행하면
차트에서 일간 갭 선택하고 하면 정상으로 매수매도가 되는데
차트에서 일간 갭 선택안하면 처음에 매수만 실행됩니다.
수식 수정 부탁드립니다.
----의심부분 : AtLimit 에 이어지는 수식 / 이곳을 약간 수정하면 정상인거 같습니다.-------------
if A_SIG == 1 and bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN-PriceScale*TICK); }
if A_SIG == 1 and ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN+PriceScale*TICK); }
----시스템 수식--------------------------------
INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900);
VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0);
var : bs1(0),ss1(0);
var : NP(0),Pre(0),DayPL(0),Xcond(false);
var : TT(0),T1(0),Entry(0);
var : Tcond(false);
var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0);
//PRICE 갭
if bdate != bdate[1] Then{
gap = Open-Close[1]; //일간갭 계산
sumGap = sumGap+gap; //일간갭 누적
}
GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감
GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감
GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감
GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감
NP = NetProfit;
TT = TotalTrades;
if Bdate != Bdate[1] Then{
Pre = NP[1];
Xcond = false;
T1 = TT[1];
}
DayPL = NP-Pre;
if MarketPosition == 0 Then
entry = TT-T1;
Else
entry = TT-T1+1;
if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then
Xcond = true;
TCHAN = HIGHEST(GH, LENGTH)[P1];
BCHAN = LOWEST(GL, LENGTH)[P1];
// 매수매도 진입조건 1단계
if TCHAN[P2]+TIK < H then {bs1 = 1;}
if BCHAN[P2]-TIK > L then {ss1 = 1;}
// 매수매도 초기화
if bs1 == 1 and BCHAN > GL then {bs1=0;}
if ss1 == 1 and TCHAN < GH then {ss1=0;}
TCHAN1 = HIGHEST(HIGH, LENGTH)[P3];
BCHAN1 = LOWEST(LOW, LENGTH)[P3];
//진입
if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); }
if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); }
if MarketPosition == 1 Then
ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL);
if MarketPosition == -1 Then
ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl );
SetStopProfittarget(PRO,PointStop);
SetStopLoss(LOSS,PointStop);
SetStopEndofday(T);
답변 1
예스스탁 예스스탁 답변
2017-12-15 16:11:21
안녕하세요
예스스탁입니다.
// 매수매도 진입조건 1단계
if TCHAN[P2]+TIK < H then {bs1 = 1;}
if BCHAN[P2]-TIK > L then {ss1 = 1;}
위 조건이 잘못되어 있습니다.
지표는 보정된 값을 이용하는데 비교값은 봉의 고가저가입니다.
보정돤 고가/저가와 비교하셔야 합니다.
INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900);
VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0);
var : bs1(0),ss1(0);
var : NP(0),Pre(0),DayPL(0),Xcond(false);
var : TT(0),T1(0),Entry(0);
var : Tcond(false);
var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0);
//PRICE 갭
if bdate != bdate[1] Then{
gap = Open-Close[1]; //일간갭 계산
sumGap = sumGap+gap; //일간갭 누적
}
GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감
GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감
GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감
GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감
NP = NetProfit;
TT = TotalTrades;
if Bdate != Bdate[1] Then{
Pre = NP[1];
Xcond = false;
T1 = TT[1];
}
DayPL = NP-Pre;
if MarketPosition == 0 Then
entry = TT-T1;
Else
entry = TT-T1+1;
if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then
Xcond = true;
TCHAN = HIGHEST(GH, LENGTH)[P1];
BCHAN = LOWEST(GL, LENGTH)[P1];
// 매수매도 진입조건 1단계
if TCHAN[P2]+TIK < gH then {bs1 = 1;}
if BCHAN[P2]-TIK > gL then {ss1 = 1;}
// 매수매도 초기화
if bs1 == 1 and BCHAN > GL then {bs1=0;}
if ss1 == 1 and TCHAN < GH then {ss1=0;}
TCHAN1 = HIGHEST(HIGH, LENGTH)[P3];
BCHAN1 = LOWEST(LOW, LENGTH)[P3];
//진입
if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); }
if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); }
if MarketPosition == 1 Then
ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL);
if MarketPosition == -1 Then
ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl );
SetStopProfittarget(PRO,PointStop);
SetStopLoss(LOSS,PointStop);
SetStopEndofday(T);
즐거운 하루되세요
> 비류천 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 아래 수식을 실행하면
차트에서 일간 갭 선택하고 하면 정상으로 매수매도가 되는데
차트에서 일간 갭 선택안하면 처음에 매수만 실행됩니다.
수식 수정 부탁드립니다.
----의심부분 : AtLimit 에 이어지는 수식 / 이곳을 약간 수정하면 정상인거 같습니다.-------------
if A_SIG == 1 and bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN-PriceScale*TICK); }
if A_SIG == 1 and ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN+PriceScale*TICK); }
----시스템 수식--------------------------------
INPUT : LENGTH(10), PRO(100), LOSS(10),T(132000),TICK(4),하루손실(-5.5),당일거래횟수(2),TIK(0.05),P1(2),P2(1),P3(1),ST(090000),ET(144900);
VAR : TCHAN(0), BCHAN(0),TCHAN1(0), BCHAN1(0);
var : bs1(0),ss1(0);
var : NP(0),Pre(0),DayPL(0),Xcond(false);
var : TT(0),T1(0),Entry(0);
var : Tcond(false);
var : gap(0),sumgap(0),GO(0),GH(0),GL(0),GC(0),R(0),MI(0);
//PRICE 갭
if bdate != bdate[1] Then{
gap = Open-Close[1]; //일간갭 계산
sumGap = sumGap+gap; //일간갭 누적
}
GO = O - sumGap; //갭보정 시가 - 현재봉 시가에서 누적된 갭만큼 가감
GH = H - sumGap; //갭보정 고가 - 현재봉 고가에서 누적된 갭만큼 가감
GL = L - sumGap; //갭보정 저가 - 현재봉 저가에서 누적된 갭만큼 가감
GC = C - sumGap; //갭보정 종가 - 현재봉 종가에서 누적된 갭만큼 가감
NP = NetProfit;
TT = TotalTrades;
if Bdate != Bdate[1] Then{
Pre = NP[1];
Xcond = false;
T1 = TT[1];
}
DayPL = NP-Pre;
if MarketPosition == 0 Then
entry = TT-T1;
Else
entry = TT-T1+1;
if TotalTrades > TotalTrades[1] and (IsExitName("DBx",1) == true or IsExitName("DSx",1) == true) Then
Xcond = true;
TCHAN = HIGHEST(GH, LENGTH)[P1];
BCHAN = LOWEST(GL, LENGTH)[P1];
// 매수매도 진입조건 1단계
if TCHAN[P2]+TIK < H then {bs1 = 1;}
if BCHAN[P2]-TIK > L then {ss1 = 1;}
// 매수매도 초기화
if bs1 == 1 and BCHAN > GL then {bs1=0;}
if ss1 == 1 and TCHAN < GH then {ss1=0;}
TCHAN1 = HIGHEST(HIGH, LENGTH)[P3];
BCHAN1 = LOWEST(LOW, LENGTH)[P3];
//진입
if bs1 == 1 and entry < 당일거래횟수 then {buy("매수",AtLimit,TCHAN1-PriceScale*TICK); }
if ss1 == 1 and entry < 당일거래횟수 then {sell("매도",AtLimit,BCHAN1+PriceScale*TICK); }
if MarketPosition == 1 Then
ExitLong("DBx",AtStop,EntryPrice+하루손실-dayPL);
if MarketPosition == -1 Then
ExitShort("DSx",AtStop,EntryPrice-하루손실+daypl );
SetStopProfittarget(PRO,PointStop);
SetStopLoss(LOSS,PointStop);
SetStopEndofday(T);
다음글
이전글