답변완료
문의 드립니다.
수고많으십니다~
10시 30분 이후 거래는 익절 50틱으로 되어 있는데, 실제 거래에서는 30틱 수익으로 청산되었습니다.어디에 문제가 있는지 확인 부탁드립니다.
거래내역 올려드립니다.
확인부탁드립니다~~^^
input : StartTime(101500),EndTime(114000);
input : Length(20), D1(2);
input : 익절1(30),손절1(30),청산구분시간(103000),익절2(50),손절2(30),익절연속횟수(3),손절연속횟수(2);
var : Tcond(false),profit(0),loss(0);
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
profit = 0;
loss = 0;
}
if TotalTrades > TotalTrades[1] Then
{
if IsExitName("bp.",1) or IsExitName("bp1",1) or IsExitName("bp2",21) or
IsExitName("sp.",1) or IsExitName("sp1",1) or IsExitName("sp2",1) Then
profit = profit+1;
Else
profit = 0;
if IsExitName("bl.",1) or IsExitName("bl1",1) or IsExitName("bl2",1) or
IsExitName("sl.",1) or IsExitName("sl1",1) or IsExitName("sl2",1) Then
loss = loss+1;
Else
loss = 0;
}
var1 = BollBandUp(Length,D1);
var2 = BollBandDown(Length,D1);
if Tcond == true Then
{
If CrossUP(H,var1) and c > o and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Buy("b",OnClose,DEF,1);
ExitLong("bp.",AtLimit,C+PriceScale*익절1,"",1,1);
ExitLong("bl.",AtStop,C-PriceScale*손절1,"",1,1);
}
If CrossDown(L,Var2) and C < O and profit < 익절연속횟수 and loss < 손절연속횟수 then
{
Sell("s",OnClose,DEF,1);
ExitShort("sp.",AtLimit,C-PriceScale*익절1,"",1,1);
ExitShort("sl.",AtStop,C+PriceScale*손절1,"",1,1);
}
}
if MarketPosition == 1 Then
{
if sTime >= StartTime and sTime < 청산구분시간 Then
{
ExitLong("bp1",AtLimit,EntryPrice+PriceScale*익절1,"",1,1);
ExitLong("bl1",AtStop,EntryPrice-PriceScale*손절1,"",1,1);
}
if sTime >= 청산구분시간 and sTime < Endtime Then
{
ExitLong("bp2",AtLimit,EntryPrice+PriceScale*익절2,"",1,1);
ExitLong("bl2",AtStop,EntryPrice-PriceScale*손절2,"",1,1);
}
}
if MarketPosition == -1 Then
{
if sTime >= StartTime and sTime < 103000 Then
{
ExitShort("sp1",AtLimit,EntryPrice-PriceScale*익절1,"",1,1);
ExitShort("sl1",AtStop,EntryPrice+PriceScale*손절1,"",1,1);
}
if sTime >= 103000 and sTime < Endtime Then
{
ExitShort("sp2",AtLimit,EntryPrice-PriceScale*익절2,"",1,1);
ExitShort("sl2",AtStop,EntryPrice+PriceScale*손절2,"",1,1);
}
}
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
2021-10-15
1227
글번호 152900
시스템
답변완료
수식점검
본 수식 점검해 주세요!
input: 익절틱수(27),손절틱수(25),진입횟수(1);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),TL2(0),TL3(0),Text1(0);
var:처리구분(""),TL_Val1(0),TL_Val2(0),color(0),T(0);
Array:고점[10,2](0),저점[10,2](0);
var:entry(0);
if Bdate !=Bdate[1] Then
entry=0;
if (MarketPosition !=0 and MarketPosition !=MarketPosition[1])or
(MarketPosition==MarketPosition[1] and TotalTrades>TotalTrades[1])Then
entry=entry+1;
처리구분="";
If Highest(H,length)== H and lastHiVal <> H and Lowest(L,length) == L and lastLoVal<> L Then
{
If 저점[1,1]>L Then 처리구분="저점처리";
If 고점[1,1]<H Then 처리구분="고점처리";
}
Else If Highest(H,length)== H and lastHiVal <> H Then 처리구분 ="고점처리";
Else If Lowest(L,length)== L and lastLoVal <> L Then 처리구분 ="저점처리";
If 처리구분 == "고점처리" Then
{
T = 1;
lastHiVal = H;
If 고점[1,2]<저점[1,2]Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] <H Then
{
고점[1,1]=H;
고점[1,2] =Index;
sBar=Index-저점[1,2];
eBar =0;
If TL_GetBeginDate(TL1)==sDate[sBar] and TL_GetBeginTime(TL1)==sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 고점[3,1][1]< 고점[2,1][1] and 고점[2,1][1]> 고점[1,1][1]and 저점[2,1][1]< 저점[1,1][1] Then
TL_Delete(TL2);
}
if 고점[1,1]> 고점[2,1] or 고점[2,1] == 0 Then{
color= RED;
//buy("b");
}
TL1= TL_New(sDate[sBar],sTime[sBar],저점[1,1],sDate[eBar],sTime[eBar],고점[1,1]);
TL_SetColor(TL1,color);
Text1= Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(고점[1,1],2));
Text_SetStyle(Text1,2,1);
If 고점[3,1]< 고점[2,1] and 고점[2,1] > 고점[1,1] and 저점[2,1] < 저점[1,1] Then
{
sBar=Index-저점[2,2];
eBar=Index-저점[1,2];
}
}
}
If 처리구분 == "저점처리" Then
{
T=-1;
lastLoVal=L;
If 저점[1,2]< 고점[1,2] Then
{
For j=10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L Then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
If 저점[2,1][1] < 저점[1,1][1] and 저점[2,1][1] < 저점[3,1][1] and 고점[2,1][1]> 고점[1,1][1] Then
TL_Delete(TL3);
}
if 저점[1,1] < 저점[2,1] or 저점[2,1] == 0 Then{
color = blue;
//sell("s");
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],sDate[eBar],sTime[eBar],저점[1,1]);
TL_SetColor(TL1,color);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(abs(고점[1,1]-저점[1,1])/PriceScale,0)+NewLine+NumToStr(저점[1,1],2));
Text_SetStyle(Text1, 2, 0);
If 저점[2,1] < 저점[1,1] and 저점[2,1] < 저점[3,1] and 고점[2,1] > 고점[1,1] Then
{
sBar = Index - 고점[2,2];
eBar = Index - 고점[1,2];
}
}
}
TL_SetSize(TL1,3);
if T == 1 and CrossUp(C,고점[2,1]) Then
{
if entry < 진입횟수 Then
Buy("b");
Else
ExitShort("sx");
}
if T == -1 and CrossUp(C,저점[2,1]) Then
{
if entry < 진입횟수 Then
Sell("s");
Else
ExitLong("bx");
}
SetStopProfittarget(PriceScale*익절틱수,PointStop);
SetStopLoss(PriceScale*손절틱수,PointStop);
줄수 16과 21~22에 선언되지 않은 이름 'length'가 사용되었다고 하네요
도통 모르겠네요
미리 수고에 감사드려요!
2021-10-15
870
글번호 152891
시스템
답변완료
지수갭2
시뮬레이션을 해보니 값이 나오지 않습니다.
살펴주십시요.
input: 지수갭1(5.50),지수갭2(2.50),시가대비(1.00);
var : month(0,Data2),nday(0,Data2),week(0,data2);
var : X(False,Data2),cond(False,Data2);
var : DD(0,Data2),C2(0,Data2);
month = data2(int(date/100)-int(date/10000)*100);
nday = data2(date - int(date/100)*100);
Week = data2(DayOfWeek(date));
#옵션만기일
if (nday >= 8 and nday <= 14 and week == 4) then
X = true;
Else
X = False;
if data2(bdate != Bdate) Then
{
if X == false and X[1] == true Then
{
C2 = 0;
cond = true;
dd = 0;
}
if cond ==true Then
dd = dd+1;
}
#만기다음날 Data2 종가
if cond == true and dd == 1 Then
C2 = data2(C);
if C2 > 0 and 지수갭1 > Data2(Opend(0)-C2) and Data2(Opend(0)-C2) > 지수갭2 and c > dayopen + 시가대비 then
buy();
**********************************************************************************
안녕하세요
예스스탁입니다.
var : month(0,Data2),nday(0,Data2),week(0,data2);
var : X(False,Data2),cond(False,Data2);
var : DD(0,Data2),C2(0,Data2);
month = data2(int(date/100)-int(date/10000)*100);
nday = data2(date - int(date/100)*100);
Week = data2(DayOfWeek(date));
#옵션만기일
if (nday >= 8 and nday <= 14 and week == 4) then
X = true;
Else
X = False;
if data2(bdate != Bdate) Then
{
if X == false and X[1] == true Then
{
C2 = 0;
cond = true;
dd = 0;
}
if cond ==true Then
dd = dd+1;
}
#만기다음날 Data2 종가
if cond == true and dd == 1 Then
C2 = data2(C);
if C2 > 0 and 5.50 > Data2(Opend(0)-C2) and Data2(Opend(0)-C2) > 2.50 and c > dayopen + 1.00 then
buy();
if C2 > 0 and -2.50 > Data2(OpenD(0)-C2) and Data2(Opend(0)-C2) > -5.50 and c > dayopen + 1.00 then
buy();
즐거운 하루되세요
> 목마와숙녀 님이 쓴 글입니다.
> 제목 : 문의
> data1 kospi200 선물
data2 kospi200 지수
kospi200갭 플러스(당일 kospi200 시가 - 월물옵션 첫날 kospi200지수 종가의 결과가 플러스)
kospi200갭 마이너스(당일 kospi200 시가 - 월물옵션 첫날 kospi200지수 종가의 결과가 마이너스)
아래 수식을 완성해주십시요.
*************************************************************************
if 5.50 > kospi200갭 플러스 > 2.50 and c > dayopen + 1.00 then
buy();
if -2.50 > kospi200갭 마이너스 > -5.50 and c > dayopen + 1.00 then
buy();
2021-12-16
764
글번호 152888
시스템