답변완료
per 조건
input : N(60),N1(7),per(10);
var : TX1(0),TX2(0),cnt(0),box(0),box1(0);
var : TL1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL6(0),TL7(0),TL8(0),TL9(0),TL10(0);
var : Tcond(False,Data2),i2(0,Data2);
var : box3(0),cond(False),H2(0),L2(0);
Plot1(Data2(c));
For cnt = 0 to 49
{
TL_Delete(TL1[cnt]);
TL_Delete(TL2[cnt]);
TL_Delete(TL3[cnt]);
TL_Delete(TL4[cnt]);
TL_Delete(TL5[cnt]);
TL_Delete(TL6[cnt]);
TL_Delete(TL7[cnt]);
TL_Delete(TL8[cnt]);
TL_Delete(TL9[cnt]);
Text_Delete(TX1[cnt]);
Text_Delete(TX2[cnt]);
TL_Delete(Box[cnt]);
TL_Delete(Box1[cnt]);
}
if Data2(Bdate != Bdate[1]) Then
{
Tcond = False;
i2 = 0;
}
if Tcond == False and Data2(sTime >= 85000) Then
{
Tcond = true;
}
if Tcond == true Then
{
i2 = i2+1;
TL1 = TL_New_Self(sDate,sTime,data2(highest(H,min(N,i2))),NextBarSdate,NextBarStime,data2(highest(H,min(N,i2))));
TL2 = TL_New_Self(sDate,sTime,data2(lowest(L,min(N,i2))),NextBarSdate,NextBarStime,data2(lowest(L,min(N,i2))));
TL_SetColor(TL1,Red);
TL_SetColor(TL2,Blue);
TL_SetSize(TL1,1);
TL_SetSize(TL2,1);
TL_SetExtLeft(TL1,true);
TL_SetExtLeft(TL2,true);
TL3 = TL_New_Self(Data2(sDate[NthHighestBar(1,H,min(N,i2))]),Data2(stime[NthhighestBar(1,H,min(N,i2))]),-9999,Data2(sDate[NthHighestBar(1,H,min(N,i2))]),Data2(stime[NthhighestBar(1,H,min(N,i2))]),9999);
TL_SetColor(TL3,Pink);
TL_SetSize(TL3,5);
TL5 = TL_New(Data2(sDate[NthHighestBar(1,H,min(N,i2))]),Data2(stime[NthhighestBar(1,H,min(N,i2))]),-9999,Data2(sDate[NthHighestBar(1,H,min(N,i2))]),Data2(stime[NthhighestBar(1,H,min(N,i2))]),9999);
TL_SetColor(TL5,Pink);
TL_SetSize(TL5,5);
TL7 = TL_New_Self(sDate,sTime,data2(lowest(L*1.1,min(N,i2))),NextBarSdate,NextBarStime,data2(lowest(L*1.1,min(N,i2))));
TL_SetColor(TL7,Red);
TL_SetSize(TL7,0.5);
TL_SetExtLeft(TL7,true);
TL8 = TL_New_Self(sDate,sTime,data2(lowest(L*1.2,min(N,i2))),NextBarSdate,NextBarStime,data2(lowest(L*1.2,min(N,i2))));
TL_SetColor(TL8,Green);
TL_SetSize(TL8,1);
TL_SetExtLeft(TL8,true);
TL9 = TL_New_Self(sDate,sTime,data2(lowest(L*1.3,min(N,i2))),NextBarSdate,NextBarStime,data2(lowest(L*1.3,min(N,i2))));
TL_SetColor(TL9,Red);
TL_SetSize(TL9,0.5);
TL_SetExtLeft(TL9,true);
TX1 = Text_New_Self(Data2(sDate[NthHighestBar(1,H,min(N,i2))]),Data2(stime[NthhighestBar(1,H,min(N,i2))]),Data2(highest(H+PriceScale*1,min(N,i2))),"■");
TX2 = Text_New_Self(Data2(sDate[NthLowestBar(1,L,min(N,i2))]),Data2(stime[NthLowestBar(1,L,min(N,i2))]),Data2(Lowest(L-PriceScale*1,min(N,i2))),"■");
Text_SetStyle(TX1,2,1);
Text_SetStyle(TX2,2,0);
Text_SetColor(TX1,Blue);
Text_SetColor(TX2,Magenta);
Text_SetSize(tx1,35);
Text_SetSize(tx2,35);
box1 = Box_New(Data2(sDate[NthlowestBar(1,L,min(N,i2))+N1]),Data2(stime[NthlowestBar(1,L,min(N,i2))+N1]),9999,
Data2(sDate[NthlowestBar(1,L,min(N,i2))]),Data2(stime[NthlowestBar(1,L,min(N,i2))]),-9999);
Box_SetColor(box1,Blue);
Box_SetFill(box1,true,40);
box = Box_New_Self(Data2(sDate[NthlowestBar(1,L,min(N,i2))+N1]),Data2(stime[NthlowestBar(1,L,min(N,i2))+N1]),9999,
Data2(sDate[NthlowestBar(1,L,min(N,i2))]),Data2(stime[NthlowestBar(1,L,min(N,i2))]),-9999);
Box_SetColor(box,Blue);
Box_SetFill(box,true,40);
if data2(CrossUp(L,Lowest(L,min(N,i2))*(1+per/100))) Then
{
Box_Delete(box3);
cond = true;
H2 = Data2(H);
L2 = Data2(lowest(L,min(N,i2))*(1+per/100));
box3 = Box_New_Self(sDate[1],sTime[1],L2,Sdate,Stime,9999);
Box_SetColor(box3,Lime);
Box_SetFill(box3,true,40);
TL_Delete(TL10);
TL10=TL_New(sDate,sTime,0,sDate,sTime,9999);
TL_SetColor(TL10,Lime);
TL_SetSize(TL10,5);
}
Else
{
if cond == true Then
{
if data2(H) > H2 Then
H2 =Data2(H);
Box_SetEnd(box3,sDate,sTime,9999);
if Data2(l < lowest(L,min(N,i2))*(1+per/100)) Then
Box_Delete(box3);
}
}
}
N봉중 최저가보다 현재봉 저가가 10퍼센트 이상일 때 생성되는 박스 조건을 (92줄 이후만),
N봉중 최저가가 현재봉으로부터 20봉 이전일 때만 박스 생성으로 조건 추가. (and)
1~60봉 전을 20~60봉 사이 최저가 대비 10퍼센트 저가가 상승시 박스 생성.
N봉중 최저가가 20봉 이내로 가까이 있으면 제외, 멀 때만 생성.
일부만 수정이 안되면 전체를 20봉 이전 조건 추가 등 무관. 감사합니다.
2024-01-12
758
글번호 175670
지표
답변완료
시스템 스위칭 오류 수정 문의 드립니다.
항상 많은 도움 감사드립니다. 시스템식에서 스위칭이 이루어질때 결과 보고서 상의 거래내역에는 문제없이 체크가 되지만 실제 거래에서는 오류가 발생되어 시스템 수정에 대하여 문의 드립니다. 어제 올리신 분의 경우와 비슷한 경우이긴 한테 차이가 있어서 한번 검토부탁드립니다.
오류 내역은 위에 나와 있는 세번째 그림에 나와 있구요..시스템식은 아래와 같습니다.
If MarketPosition == 0 && 조건 A then Sell ("매도",atmarket,def,2);
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
if IsEntryName("매도") == true Then {
ExitShort("dp5",AtLimit,EntryPrice-25,"",1,1);
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
}
if IsEntryName("매수") == true Then {
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
}
두번째 그림에 있는 시스템 보고서의 거래내역이 제대로 실행되는 내역이구요.
세번째 그림에서의 실제 거래 내역의 오류를 보면
if 조건 A-1 Then
ExitShort("매도정리",atmarket,def,"매도");
위에 있는 분할청산 시스템식이 조건이 충족되어서 매수 접수(exitlong)를 발생시켰는데 계약이 체결되기 전에
If MarketPosition <= 0 && 조건 B then buy ("매수",atmarket,def,2);
위의 매수 2계약 접수를 진행시켜 오류가 났으며 결국 이 매수는 진행되지 않았습니다.
2번째 그림의 시스템 보고서상에는 문제없이 거래가 종료되었으나 실제로는
if IsEntryName("매수") == true Then {
{
ExitLong("Sp4",AtLimit,EntryPrice+35,"",1,1);
if 조건B-1 Then
ExitLong("매수정리",atmarket,def,"매수");
위의 "매수"에 대한 분할청산 건 매도 2건이 미체결약정으로 남아 있는 상태입니다.
만일에 예수금이 3,4개의 계약이 가능한 상황이었다면 위와 같은 오류가 나지 않았을 것이라는 것은 알고 있습니다. 2계약에 해당되는 예수금을 가지고 위와 같은 오류가 발생하지 않게 하려면 시스템식을 어떻게 수정해야 할까요?
아니면 시스템 매매 설정에서 보완할 수 있는 방법이 있을까요?
2024-01-12
792
글번호 175662
시스템