예스스탁
예스스탁 답변
2023-04-03 15:56:17
안녕하세요
예스스탁입니다.
장기이평의 기간값이 잘못되어 수정했습니다.
전략실행차트에서 최대한 봉 많이 조회해서 적용하시기 바랍니다.
input : tenSMAlen(10),fiftySMAlen(50),PPlen(10),PPVolLen(5);
var : upday(False),VolUpDay(False),tenSMA(0),fiftySMA(0),tx(0);
var : PPvol1(0),PPvol2(0),cnt(0),MAcross(False),PocketPivot1(False),PocketPivot2(False);
UpDay = close > open and close[0] > close[1];
VolUpDay = close[0] > close[1];
tenSMA = ma(close,tenSMAlen);
fiftySMA = ma(close,fiftySMAlen);
PPvol1 = 0;
for cnt = 1 to PPlen
{
if volume[0] > volume[cnt] Then
PPvol1 = PPvol1+ 1;
else
PPvol1 = 0;
}
PPvol2 = 0;
for cnt = 1 to PPVolLen
{
if volume[0] > volume[cnt] Then
PPvol2 = PPvol2+1;
else
PPvol2 = 0;
}
MAcross = open < tenSMA and close > tenSMA or open < fiftySMA and close > fiftySMA or
close[1] < tenSMA and close[0] > tenSMA or close[1] < fiftySMA and close[0] > fiftySMA;
PocketPivot1 = PPvol1 == PPlen and UpDay and MAcross;
PocketPivot2 = PPvol2 == PPVolLen and VolUpDay;
if PocketPivot1 == true Then
{
tx = text_new(sDate,sTime,L,"▲");
Text_SetStyle(tx,2,0);
Text_SetColor(tx,rgb(51,153,255));
Text_SetSize(tx,20);
}
if PocketPivot1 == False and PocketPivot2 == true Then
{
tx = text_new(sDate,sTime,H,"▼");
Text_SetStyle(tx,2,1);
Text_SetColor(tx,rgb(225,225,0));
Text_SetSize(tx,20);
}
즐거운 하루되세요
> 선물대장 님이 쓴 글입니다.
> 제목 : 신호 발생하지 않아 다시 문의 드립니다.
> 며칠전에 알려주신 로직입니다. 신호가 발생하지 않는데 다시 확인부탁드립니다.
제가 원하는 것은
60분봉을 추세 기준으로 하여 20이평 120이평 정배열이고
60분봉에서 볼린져밴드 상단선 돌파 중이거나 또는 상단선 위에 있을 때
하위봉(예로 1분봉이나 2분봉 등) 차트에서 볼린져 상선 돌파 매수로 진입하고자 합니다.
60분봉에서 20이평 120이평 역배열이고
60분봉에서 볼린져밴드 하단선 아래로 돌파 또는 하단선 아래 있을 때
하위봉(예로 1분봉이나 2분봉 등) 차트에서 볼린져 하선 돌파 매도로 진입하고자 합니다.
감사합니다^.^
input : 타주기분(60),BBP(20),Dv(2),P1(20),P2(120);
var : S1(0),D1(0),TM(0),TF(0);
var : cnt(0),SumSqrt(0),Stdv(0);
var : sum(0),BBmd(0),Bbup(0),BBdn(0);
var : sum1(0),mav1(0),sum2(0),mav2(0);
Array : CC[200](0);
#기본차트 볼밴
var1 = BollBandUp(20,2);
Var2 = BollBandDown(20,2);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 199 downto 1
{
CC[cnt] = CC[cnt-1];
}
}
CC[0] = C;
#타분봉 볼밴계산
if CC[BBP-1] > 0 then
{
sum = 0;
for cnt = 0 to BBP-1
{
sum = sum + CC[cnt];
}
BBmd = sum/BBP;
SumSqrt = 0;
For cnt = 0 To BBP - 1
{
SumSqrt = SumSqrt + (CC[cnt] - BBmd)^2;
}
Stdv = SquareRoot(SumSqrt / BBP);
BBup = BBmd + (Dv * Stdv);
BBdn = BBmd - (Dv * Stdv);
}
#타분봉 P1이평 계산
if CC[P1-1] > 0 Then
{
sum1 = 0;
For cnt = 0 to P1-1
{
sum1 = sum1 + CC[cnt];
}
mav1 = sum1/P1;
}
#타분봉 P2이평 계산
if CC[P2-1] > 0 Then
{
sum2 = 0;
For cnt = 0 to P1-1
{
sum2 = sum2 + CC[cnt];
}
mav2 = sum2/P1;
}
//타분봉 지표값들 계산이 된 상태에서
if mav1 > 0 and mav2 > 0 and BBmd > 0 Then
{
if mav1 > mav2 and C > BBup Then
{
if CrossUp(c,var1) Then
Buy();
}
if CrossDown(c,var1) Then
ExitLong();
if mav1 < mav2 and C < BBdn Then
{
if CrossDown(c,var2) Then
Sell();
}
if CrossUp(C,Var2) Then
ExitShort();
}
}