예스스탁
예스스탁 답변
2021-11-17 11:49:57
안녕하세요
예스스탁입니다.
Input : short(12), long(26), signal(9);
Input : Period1(12),Period2(26),Period3(9);
Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0),Hv(0),Lv(0);
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);
var : d1(0),t1(0),tl1(0),tl2(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
{
SetStopEndofday(0);
T = 0;
d1 = sDate;
t1 = sTime;
Hv = macdo;
Lv = macdo;
Condition1 = False;
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 and Condition1 == False Then
{
T = 2;
var1 = HH;
Var2 = LL;
}
if T == -1 and MACDO > 0 and Condition1 == False Then
{
T = -2;
var1 = HH;
Var2 = LL;
}
if Condition1 == False Then
{
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Buy("b11",AtStop,var1);
if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then
Buy("b12",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("s11",AtStop,Var2);
if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then
Sell("s12",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);
}
}
}
if d1 > 0 Then
{
if macdo > hv Then
hv = macdo;
if macdo < lv Then
lv = macdo;
if Condition1 == False and hv >= lv+0.5 and (T <= 1 and T >= -1) Then
{
Condition1 = true;
value1 = DayHigh;
Value2 = DayLow;
#TL1 = TL_New(d1,t1,value1,NextBarSdate,NextBarStime,value1);
#TL2 = TL_New(d1,t1,Value2,NextBarSdate,NextBarStime,Value2);
}
if Condition1 == true Then
{
TL_SetEnd(TL1,sDate,sTime,value1);
TL_SetEnd(TL2,sDate,sTime,Value2);
}
}
if Condition1 == true Then
{
if predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 > predMACDO2 Then
Buy("b21",AtStop,value1);
if predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 < predMACDO2 Then
Sell("s21",AtStop,value2);
if predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 < predMACDO2 Then
Buy("b22",AtLimit,value2);
if predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 > predMACDO2 Then
Sell("s22",AtLimit,value1);
SetStopEndofday(151500);
}
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
아래 글번호 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);