첨부 이미지
그림1
그림2
거래원칙
1.데이트레이딩
2.당일 max 2회거래(buy,sell 각 l번)
3.sell 청산 후 buy 진입. 두번째 buy 진입은 당일 최고점을 n회 갱신하는 최고점에서 진입
4.buy 청산 후 sell 진입. 두번째 sell 진입은 당일 최저점을 n회 갱신하는 최저점에서 진입
아래 수식을 만들어 시뮬레이션을 해보니 오류가 발생합니다.
첨부파일1은
첫번째 s1 진입후 청산된 다음 b2가 진입하는 내역입니다.
다른 날들은 고가들을 갱신 후 최고점에 진입하는데
2018년12월5일에는 최고점에서 내려온 지점에서 b2가 진입하는데 이런 진입은 원하지 않습니다.
첨부파일2는
첫번째 b1 진입후 청산된 다음 s2가 진입하는 내역입니다.
다른 날들은 저가들을 갱신 후 최저점에 진입하는데
2018년4월10일에는 최저점에서 올라온 지점에서 s2가 진입하는데 이런 진입은 원하지 않습니다.
최고점이나 최저점으로 진입하는 수식이 되게 살펴주세요.
*****************************************************************************
input : up진입수(1), dn진입수(1);
input : 고가갱신수(24), 저가갱신수(18);
input : up강제손절(0.62);
input : dn강제손절(0.66);
var : S1(0),S2(0),ST(0),E1(0),E2(0),ET(0),second(0);
var : T1(0),entry(0);
if bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = TotalTrades-T1+1;
S1 = TimeToMinutes(stime)*60;
S2 = FracPortion(stime/100)*100;
ST = S1+S2;
E1 = TimeToMinutes(time)*60;
E2 = FracPortion(time/100)*100;
ET = E1+E2;
if sdate == date Then
Second = ET-ST;
Else
Second = 86400-ST+ET;
if entry < up진입수 and second < second[1] and C > O Then
buy("b1");
if entry < dn진입수 and second < second[1] and C < O Then
sell("s1");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == -1 and #직전거래가 매도거래이고
countif(DayHigh(0) != DayHigh(0)[1],BarsSinceExit(1)) >= 고가갱신수 and #청산이후 당일고가 갱신이 n회이상 있었으면
second < second[1] and C > O Then
buy("b2");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == 1 and #직전거래가 매수거래이고
countif(DayLow(0) != DayLow(0)[1],BarsSinceExit(1)) >= 저가갱신수 and #청산이후 당일저가 갱신이 n회이상 있었으면
second < second[1] and C < O Then
sell("s2");
if MarketPosition == 1 Then
{
SetStopLoss(up강제손절,pointstop);
}
if MarketPosition == -1 Then
{
SetStopLoss(dn강제손절,pointstop);
}
답변 2
좌오비우오비
2019-11-07 16:16:21
오류가 아니라 체결속도 때문에서 발생하는 것일 수도 있겠습니다.
그렇다면 거래횟수를 조절하는 함수 적용이 거래전제에 맞는지를 살펴주세요.
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 거래원칙
1.데이트레이딩
2.당일 max 2회거래(buy,sell 각 l번)
3.sell 청산 후 buy 진입. 두번째 buy 진입은 당일 최고점을 n회 갱신하는 최고점에서 진입
4.buy 청산 후 sell 진입. 두번째 sell 진입은 당일 최저점을 n회 갱신하는 최저점에서 진입
아래 수식을 만들어 시뮬레이션을 해보니 오류가 발생합니다.
첨부파일1은
첫번째 s1 진입후 청산된 다음 b2가 진입하는 내역입니다.
다른 날들은 고가들을 갱신 후 최고점에 진입하는데
2018년12월5일에는 최고점에서 내려온 지점에서 b2가 진입하는데 이런 진입은 원하지 않습니다.
첨부파일2는
첫번째 b1 진입후 청산된 다음 s2가 진입하는 내역입니다.
다른 날들은 저가들을 갱신 후 최저점에 진입하는데
2018년4월10일에는 최저점에서 올라온 지점에서 s2가 진입하는데 이런 진입은 원하지 않습니다.
최고점이나 최저점으로 진입하는 수식이 되게 살펴주세요.
*****************************************************************************
input : up진입수(1), dn진입수(1);
input : 고가갱신수(24), 저가갱신수(18);
input : up강제손절(0.62);
input : dn강제손절(0.66);
var : S1(0),S2(0),ST(0),E1(0),E2(0),ET(0),second(0);
var : T1(0),entry(0);
if bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = TotalTrades-T1+1;
S1 = TimeToMinutes(stime)*60;
S2 = FracPortion(stime/100)*100;
ST = S1+S2;
E1 = TimeToMinutes(time)*60;
E2 = FracPortion(time/100)*100;
ET = E1+E2;
if sdate == date Then
Second = ET-ST;
Else
Second = 86400-ST+ET;
if entry < up진입수 and second < second[1] and C > O Then
buy("b1");
if entry < dn진입수 and second < second[1] and C < O Then
sell("s1");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == -1 and #직전거래가 매도거래이고
countif(DayHigh(0) != DayHigh(0)[1],BarsSinceExit(1)) >= 고가갱신수 and #청산이후 당일고가 갱신이 n회이상 있었으면
second < second[1] and C > O Then
buy("b2");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == 1 and #직전거래가 매수거래이고
countif(DayLow(0) != DayLow(0)[1],BarsSinceExit(1)) >= 저가갱신수 and #청산이후 당일저가 갱신이 n회이상 있었으면
second < second[1] and C < O Then
sell("s2");
if MarketPosition == 1 Then
{
SetStopLoss(up강제손절,pointstop);
}
if MarketPosition == -1 Then
{
SetStopLoss(dn강제손절,pointstop);
}
예스스탁
예스스탁 답변
2019-11-07 16:25:29
안녕하세요
예스스탁입니다.
1
b2진입은 매도포지션 청산이후에 당일고점갱신이 24번 이상 발생하고
[봉이 만들어지는 시간이 전봉보다 작고 양봉]이면 진입합니다.
최고가봉이라도 위 2개 조건에 모두 부합하지 않으면 진입하지 못합니다.
S2진입도 반대로 같습니다.
해당 부분은 사용자분이 조건내용을 수정하거나 삭제하셔야 합니다.
저희가 어떤 조건을 지워야 할지 알수 없습니다.
b2에서 second < second[1] and C > O
S2에서 second < second[1] and C < O
조건 내용을 모두 삭제하시거나 일부 삭제해 보시기 바랍니다.
2
진입횟수가 당일 첫거래에만 적용이 되어 있습니다.
별도로 체크해서 1번씩 발생하게 수정해 드립니다.
input : up진입수(1), dn진입수(1);
input : 고가갱신수(24), 저가갱신수(18);
input : up강제손절(0.62);
input : dn강제손절(0.66);
var : S1(0),S2(0),ST(0),E1(0),E2(0),ET(0),second(0);
var : T1(0),BEntry(0),SEntry(0);
if bdate != Bdate[1] Then
{
BEntry = 0;
SEntry = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then
BEntry = BEntry + 1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then
SEntry = SEntry + 1;
S1 = TimeToMinutes(stime)*60;
S2 = FracPortion(stime/100)*100;
ST = S1+S2;
E1 = TimeToMinutes(time)*60;
E2 = FracPortion(time/100)*100;
ET = E1+E2;
if sdate == date Then
Second = ET-ST;
Else
Second = 86400-ST+ET;
if BEntry < up진입수 and second < second[1] and C > O Then
buy("b1");
if SEntry < dn진입수 and second < second[1] and C < O Then
sell("s1");
if BEntry < up진입수 and
MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == -1 and #직전거래가 매도거래이고
countif(DayHigh(0) != DayHigh(0)[1],BarsSinceExit(1)) >= 고가갱신수 and #청산이후 당일고가 갱신이 n회이상 있었으면
second < second[1] and C > O Then
buy("b2");
if SEntry < dn진입수 and
MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == 1 and #직전거래가 매수거래이고
countif(DayLow(0) != DayLow(0)[1],BarsSinceExit(1)) >= 저가갱신수 and #청산이후 당일저가 갱신이 n회이상 있었으면
second < second[1] and C < O Then
sell("s2");
if MarketPosition == 1 Then
{
SetStopLoss(up강제손절,pointstop);
}
if MarketPosition == -1 Then
{
SetStopLoss(dn강제손절,pointstop);
}
즐거운 하루되세요
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : Re : 문의
>
오류가 아니라 체결속도 때문에서 발생하는 것일 수도 있겠습니다.
그렇다면 거래횟수를 조절하는 함수 적용이 거래전제에 맞는지를 살펴주세요.
> 좌오비우오비 님이 쓴 글입니다.
> 제목 : 문의
> 거래원칙
1.데이트레이딩
2.당일 max 2회거래(buy,sell 각 l번)
3.sell 청산 후 buy 진입. 두번째 buy 진입은 당일 최고점을 n회 갱신하는 최고점에서 진입
4.buy 청산 후 sell 진입. 두번째 sell 진입은 당일 최저점을 n회 갱신하는 최저점에서 진입
아래 수식을 만들어 시뮬레이션을 해보니 오류가 발생합니다.
첨부파일1은
첫번째 s1 진입후 청산된 다음 b2가 진입하는 내역입니다.
다른 날들은 고가들을 갱신 후 최고점에 진입하는데
2018년12월5일에는 최고점에서 내려온 지점에서 b2가 진입하는데 이런 진입은 원하지 않습니다.
첨부파일2는
첫번째 b1 진입후 청산된 다음 s2가 진입하는 내역입니다.
다른 날들은 저가들을 갱신 후 최저점에 진입하는데
2018년4월10일에는 최저점에서 올라온 지점에서 s2가 진입하는데 이런 진입은 원하지 않습니다.
최고점이나 최저점으로 진입하는 수식이 되게 살펴주세요.
*****************************************************************************
input : up진입수(1), dn진입수(1);
input : 고가갱신수(24), 저가갱신수(18);
input : up강제손절(0.62);
input : dn강제손절(0.66);
var : S1(0),S2(0),ST(0),E1(0),E2(0),ET(0),second(0);
var : T1(0),entry(0);
if bdate != Bdate[1] Then
T1 = TotalTrades;
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = TotalTrades-T1+1;
S1 = TimeToMinutes(stime)*60;
S2 = FracPortion(stime/100)*100;
ST = S1+S2;
E1 = TimeToMinutes(time)*60;
E2 = FracPortion(time/100)*100;
ET = E1+E2;
if sdate == date Then
Second = ET-ST;
Else
Second = 86400-ST+ET;
if entry < up진입수 and second < second[1] and C > O Then
buy("b1");
if entry < dn진입수 and second < second[1] and C < O Then
sell("s1");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == -1 and #직전거래가 매도거래이고
countif(DayHigh(0) != DayHigh(0)[1],BarsSinceExit(1)) >= 고가갱신수 and #청산이후 당일고가 갱신이 n회이상 있었으면
second < second[1] and C > O Then
buy("b2");
if MarketPosition == 0 and #현재무포지션이고
EntryDate(1) == sdate and #직전거래가 오늘 발생한 거래이고
MarketPosition(1) == 1 and #직전거래가 매수거래이고
countif(DayLow(0) != DayLow(0)[1],BarsSinceExit(1)) >= 저가갱신수 and #청산이후 당일저가 갱신이 n회이상 있었으면
second < second[1] and C < O Then
sell("s2");
if MarketPosition == 1 Then
{
SetStopLoss(up강제손절,pointstop);
}
if MarketPosition == -1 Then
{
SetStopLoss(dn강제손절,pointstop);
}