답변완료
함수요청
안녕하세요?
아래 글번호 74226번과 74517번에 작성 주신 스크립트 중
조건이 먼저 충족되는 것으로 신호를 생성하여 매매를 하고 싶습니다.
당일에 74226번에 답변주신 스크립트와 74517번에 답변주신 스크립트를 한개의 스크립트로 작성하여 먼저 조건이 충족되면 조건된 충족에 의해 신호를 생성하게 스크립트 작성 요청드립니다.
(동일한 상품과 주기에 사용할 것입니다. 글번호 74674번에서 요청드린 지표에 맞춰서 작성된 조건을 이용 고점저점매매를 할 것입니다.)
[74226번]
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
Input : Period1(12),Period2(26),Period3(9);
var : Didx(0),dEP1(0),dEP2(0),dEP3(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
Var : dMACDS(0), PredMACDS(0);
var : dMACDO(0), predMACDO1(0), predMACDO2(0);
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
dEp3 = 2/(Period3+1);
if bdate != bdate[1] Then
{
Didx = Didx + 1;
PredJISU1 = dJISU1[1];
PredJISU2 = dJISU2[1];
PredMACDV = dMACDV[1];
PredMACDS = dMACDS[1];
PredMACDO1 = dMACDO[1];
PredMACDO2 = PredMACDO1[1];
}
if Didx <= 1 then {
dJISU1 = C;
dJISU2 = C;
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV;
dMACDO = dMACDV-dMACDS;
}
else{
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3);
dMACDO = dMACDV-dMACDS;
}
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
T = 0;
if MACDO > 0 Then
{
T = 1;
HH = H;
LL = L;
}
if MACDO < 0 Then
{
T = -1;
HH = H;
LL = L;
}
}
Else
{
if T != 0 Then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
}
if T == 1 and MACDO < 0 Then
{
T = 2;
var1 = HH;
Var2 = LL;
}
if T == -1 and MACDO > 0 Then
{
T = -2;
var1 = HH;
Var2 = LL;
}
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Buy("b1",AtStop,var1);
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then
Buy("b2",AtLimit,var2);
if T == 2 and MarketPosition == 1 Then
T = 3;
if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then
Sell("s1",AtStop,Var2);
if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Sell("s2",AtLimit,Var1);
if T == -2 and MarketPosition == -1 Then
T = -3;
if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then
ExitLong("bx1",AtMarket);
if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then
ExitShort("sx1",AtMarket);
if sTime == 151500 Then
{
if MarketPosition == 1 Then
ExitLong("bx2",AtMarket);
if MarketPosition == -1 Then
ExitShort("sx2",AtMarket);
}
}
[74517번]
Input : Period1(12),Period2(26),Period3(9);
var : Didx(0),dEP1(0),dEP2(0),dEP3(0);
Var : dJISU1(0), PredJISU1(0);
Var : dJISU2(0), PredJISU2(0);
var : dMACDV(0), predMACDV(0);
Var : dMACDS(0), PredMACDS(0);
var : dMACDO(0), predMACDO(0), predMACDO1(0);
dEp1 = 2/(Period1+1);
dEp2 = 2/(Period2+1);
dEp3 = 2/(Period3+1);
if bdate != bdate[1] Then
{
Didx = Didx + 1;
PredJISU1 = dJISU1[1];
PredJISU2 = dJISU2[1];
PredMACDV = dMACDV[1];
PredMACDS = dMACDS[1];
PredMACDO = dMACDO[1];
PredMACDO1 = PredMACDO[1];
}
if Didx <= 1 then {
dJISU1 = C;
dJISU2 = C;
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV;
dMACDO = dMACDV-dMACDS;
}
else{
dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1);
dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2);
dMACDV = dJISU1-dJISU2;
dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3);
dMACDO = dMACDV-dMACDS;
}
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
var : d1(0),t1(0),tl1(0),tl2(0);
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
d1 = sDate;
t1 = sTime;
HH = macdo;
LL = macdo;
Condition1 = False;
}
if d1 > 0 Then
{
if macdo > hh Then
hh = macdo;
if macdo < ll Then
ll = macdo;
if Condition1 == False and hh >= ll+0.5 Then
{
Condition1 = true;
var1 = DayHigh;
Var2 = DayLow;
TL1 = TL_New(d1,t1,var1,NextBarSdate,NextBarStime,var1);
TL2 = TL_New(d1,t1,var2,NextBarSdate,NextBarStime,var2);
}
if Condition1 == true Then
{
TL_SetEnd(TL1,sDate,sTime,var1);
TL_SetEnd(TL2,sDate,sTime,var2);
}
}
if Condition1 == true Then
{
if predMACDO > 0 and predMACDO1 > 0 and predMACDO > predMACDO1 Then
Buy("b1",AtStop,var1);
if predMACDO < 0 and predMACDO1 < 0 and predMACDO < predMACDO1 Then
Sell("s1",AtStop,var2);
if predMACDO > 0 and predMACDO1 > 0 and predMACDO < predMACDO1 Then
Buy("b2",AtLimit,var2);
if predMACDO < 0 and predMACDO1 < 0 and predMACDO > predMACDO1 Then
Sell("s2",AtLimit,var1);
}
SetStopEndofday(151500);
2021-11-16
507
글번호 153653
시스템
답변완료
함수요청
안녕하세요?
아래 글번호 74425번과 74517번에 작성 주신 수식 중
조건이 먼저 충족되는 것으로 지표를 그리고 싶습니다.
당일에 74225번에 답변주신 수식과 74517번에 답변주신 수식을 한개의 수식으로 작성하여 먼저 조건이 충족되면 각 1개의 고점과 저점을 그릴 수 있도록 부탁드립니다.
[74425번]
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
var : d1(0),t1(0),tl1(0),tl2(0);
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
d1 = sDate;
t1 = sTime;
T = 0;
if MACDO > 0 Then
{
T = 1;
HH = H;
LL = L;
}
if MACDO < 0 Then
{
T = -1;
HH = H;
LL = L;
}
}
Else
{
if ABS(T) < 2 Then
{
if H > HH Then
HH = H;
if L < LL Then
LL = L;
}
if T == 1 and CrossUp(MACDO,0) Then
{
T = 2;
var1 = HH;
Var2 = LL;
TL1 = TL_New(d1,t1,var1,sDate,sTime,var1);
TL2 = TL_New(d1,t1,var2,sDate,sTime,var2);
}
if T == -1 and CrossDown(MACDO,0) Then
{
T = -2;
var1 = HH;
Var2 = LL;
TL1 = TL_New(d1,t1,var1,sDate,sTime,var1);
TL2 = TL_New(d1,t1,var2,sDate,sTime,var2);
}
if T == 2 or T == -2 Then
{
TL_SetEnd(TL1,sDate,sTime,var1);
TL_SetEnd(TL2,sDate,sTime,var2);
}
}
[74517번]
Input : short(12), long(26), signal(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0);
var : d1(0),t1(0),tl1(0),tl2(0);
MACDv = MACD(short, long);
MACDs = ema(MACDv,signal);
macdo = MACDv-MACDs;
if Bdate != Bdate[1] Then
{
d1 = sDate;
t1 = sTime;
HH = macdo;
LL = macdo;
Condition1 = False;
}
if d1 > 0 Then
{
if macdo > hh Then
hh = macdo;
if macdo < ll Then
ll = macdo;
if Condition1 == False and hh >= ll+0.5 Then
{
Condition1 = true;
var1 = DayHigh;
Var2 = DayLow;
TL1 = TL_New(d1,t1,var1,NextBarSdate,NextBarStime,var1);
TL2 = TL_New(d1,t1,var2,NextBarSdate,NextBarStime,var2);
}
if Condition1 == true Then
{
TL_SetEnd(TL1,sDate,sTime,var1);
TL_SetEnd(TL2,sDate,sTime,var2);
}
}
2021-11-16
517
글번호 153652
지표
답변완료
지수갭3
아래 수식에서
지수갭의 기준은 월물옵션 만기일 다음날 금요일 종가입니다.
다른 날들은 거래하는 기준이 있어서 문제가 없는데
기준일 금요일은 거래하는 기준이 없게 됩니다.
금요일 거래를 처리하는 방식을 2가지로 나누어 수식을 적용하고자 합니다.
1. 기준일 금요일은 거래하지 않는 수식
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[1]) 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();
2021-12-16
565
글번호 153645
시스템