답변완료
2차원배열 질문입니다
아래식은 2차원배열을 이용한 MACD매매인데요
Input: FastMA(20),SlowMA(30),MacdMA(40), NCos(4), NBars(60), AtrMult(0.0), Trailbar(30), stopPer(1.0);
Vars: MVal(0), MAvg(0), MDif(0),counter(0), MVunter(0), TotalBars(0), HighestHi(0), LowestLo(0);
Array: MV[2,50](0);
MVal = MACD(FastMA,SlowMA);
MAvg = ema(MACD(FastMA,SlowMA),MacdMA);
MDif = MVal - MAvg;
counter = 0;
If CrossUp(MDif , 0) OR CrossDown(MDIF , 0) Then Begin
For counter = 0 to 49 Begin
MV[ 0 , 50 - Counter ] = MV[ 0 , 49 - Counter ];
MV[ 1 , 50 - Counter ] = MV[ 1 , 49 - Counter ];
MV[ 2 , 50 - Counter ] = MV[ 2 , 49 - Counter ];
End;
MV[ 0 , 0 ] = Index;
MV[ 1, 0 ] = High;
MV[ 2, 0 ] = Low;
End;
HighestHi = -1;
LowestLo = 9999;
For counter = 0 to NCOs-1 Begin
If MV[ 1 , counter ] > HighestHi then
HighestHi = MV[ 1 , counter ];
If MV[ 2 , counter ] < LowestLo then
LowestLo = MV[ 2 , counter ];
End;
Totalbars = Index - MV[ 0 , NCOs - 1];
if date <> date[1] then var1 = date[1];
If TotalBars < NBars and exitdate(1) != var1 and stime < 150000 then Begin
Buy("B",atstop, HighestHi + ATR(30)*AtrMult) ;
Sell("S",atstop, LowestLo - ATR(30)*AtrMult) ;
End;
ExitLong("EL", atstop, Lowest( Low , TrailBar ));
ExitShort("ES", atstop, Highest( High , TrailBar));
SetStopLoss(StopPer);
SetStopEndofday(150000);
여기서 이해가 안가는 점이
HighestHi = -1;
LowestLo = 9999;
For counter = 0 to NCOs-1 Begin
If MV[ 1 , counter ] > HighestHi then
HighestHi = MV[ 1 , counter ];
If MV[ 2 , counter ] < LowestLo then
LowestLo = MV[ 2 , counter ];
End;
요 단락입니다.
1. 왜 굳이 NCOs -1 인가요? 그냥 처음부터 NCOs값을 한단계 줄여주면 되는거 아닌지?(NCOs를 4가아닌 3으로 설정한다던가..) 그냥 개인 스타일인지 문법적으로 이유가 있는건지 궁금합니다.
2. 애초에 최근 4개시점을 찾는데 왜 50개씩이나 저장해놓는건지 궁금합니다. NCOs값을 변경할수도 있으니 그냥 50개까지 저장해놓는건가요?
3. 해당단락에서 주석에 의하면 가장 높은 고가와 저가를 찾는것이라고 써져있는데, HighestHi 값이나 LowestLo 값을 보면 counter값은 무조건 3에서 끝나는거 아닌가요? 해당식이 어떤식으로 최근4개값중 가장 저가 고가를 골라내는것인지 궁금합니다
언제나 감사합니다 예스스탁화이팅!!
2021-05-27
875
글번호 149366
시스템
답변완료
수정 의뢰 드립니다!
안녕하세요!
아래의 수식을 일부 수정을 하고 싶습니다!
텍스트 부분이 좌측에 있어서 챠트와 겹쳐 매매에 불편함이 있습니다!
텍스트부분을 오른쪽으로 옮기고 봉챠트와 텍스트가 겹치지 않게 간격을 많이 벌리게 수정을 부탁드립니다!
그리고 텍스트는 모두 검정색으로 통일시켜주세요!
감사합니다!
input : 날짜변경시간(090000);
var : date0(0), date1(0), time0(0), time1(0);
var : HH(0),HH1(0), Hdate(0),Htime(0),Hdate1(0), Htime1(0), TX11(0), TX1(0);
var : LL(0),LL1(0), Ldate(0),Ltime(0),Ldate1(0), Ltime1(0), TX12(0), TX2(0);
var : OO(0),OO1(0), Odate(0),Otime(0),Odate1(0), Otime1(0), TX13(0), TX3(0);
var : MM(0),MM1(0), Mdate(0),Mtime(0),Mdate1(0), Mtime1(0), TX14(0), TX4(0);
if stime == 날짜변경시간 then {
date0 = sdate;
date1 = date0[1];
time0 = stime;
time1 = time0[1];
#전일고가
HH = H;
HH1 = HH[1];
TL_Delete(var11);
var11 = TL_New(date1, time1, HH1, date0, time0, HH1);
TL_SetExtRight(var11,true);
TL_SetColor(var11, red);
#전일저가
LL = L;
LL1 = LL[1];
TL_Delete(var12);
var12 = TL_New(date1, time1, LL1, date0, time0, LL1);
TL_SetExtRight(var12,true);
TL_SetColor(var12, blue);
#전일중심선
MM1 = (HH1+LL1)/2;
Mdate1 = Mdate[1];
Mtime1 = Mtime[1];
TL_Delete(var14);
var14 = TL_New(date1, time1, MM1, date0, time0, MM1);
TL_SetExtRight(var14,true);
TL_SetColor(var14, rgb(255,128,255));
#전일시가
OO = O;
OO1 = OO[1];
Odate1 = Odate[1];
Otime1 = Otime[1];
TL_Delete(var13);
var13 = TL_New(date1, time1, OO1, date0, time0, OO1);
TL_SetExtRight(var13,true);
TL_SetColor(var13, black);
#당일시가
TL_Delete(var3);
var3 = TL_New(sdate[1], stime[1], OO, date0, time0, OO);
TL_SetExtRight(var3,true);
TL_SetColor(var3, black);
Text_delete(TX11);
TX11 = Text_New(sdate, stime, HH1, "▶전일고가 : "+Numtostr(HH1,2));
Text_SetStyle(TX11, 0, 1);
Text_setColor(TX11, red);
Text_delete(TX12);
TX12 = Text_New(sdate, stime, LL1, "▶전일저가 : "+Numtostr(LL1,2));
Text_SetStyle(TX12, 0, 0);
Text_setColor(TX12, blue);
Text_delete(TX13);
TX13 = Text_New(sdate, stime, OO1, "▶전일시가 : "+Numtostr(OO1,2));
Text_SetStyle(TX13, 0, 0);
Text_setColor(TX13, black);
Text_delete(TX3);
TX3 = Text_New(sdate, stime, OO, "▶당일시가 : "+Numtostr(OO,2));
Text_SetStyle(TX3, 0, 0);
Text_setColor(TX3, black);
Text_delete(TX14);
TX14 = Text_New(sdate, stime, MM1, "▶전일중심 : "+Numtostr(MM1,2));
Text_SetStyle(TX14, 0, 0);
Text_setColor(TX14, rgb(255,128,255));
}
#당일고가
if stime <> 날짜변경시간 and H[1] >= HH then {
HH = H[1];
Hdate = sdate[1];
Htime = stime[1];
TL_Delete(var1);
var1 = TL_New(date0, time0, HH, sdate, stime, HH);
TL_SetExtRight(var1,true);
TL_SetColor(var1, red);
}
#당일저가
if stime <> 날짜변경시간 and L[1] <= LL then {
LL = L[1];
Ldate = sdate[1];
Ltime = stime[1];
TL_Delete(var2);
var2 = TL_New(date0, time0, LL, sdate, stime, LL);
TL_SetExtRight(var2,true);
TL_SetColor(var2, blue);
}
#당일중심
if stime <> 날짜변경시간 then {
MM = (HH+LL)/2;
TL_Delete(var4);
var4 = TL_New(date0, time0, MM, sdate, stime, MM);
TL_SetExtRight(var4,true);
TL_SetColor(var4, rgb(255,128,255));
}
Text_delete(TX1);
TX1 = Text_New(date0, time0, HH, "▶당일고가 : "+Numtostr(HH,2));
Text_SetStyle(TX1, 0, 1);
Text_setColor(TX1, red);
Text_delete(TX2);
TX2 = Text_New(date0, time0, LL, "▶당일저가 : "+Numtostr(LL,2));
Text_SetStyle(TX2, 0,0);
Text_setColor(TX2, blue);
Text_delete(TX4);
TX4 = Text_New(date0, time0, MM, "▶당일중심 : "+Numtostr(MM,2));
Text_SetStyle(TX4, 0,0);
Text_setColor(TX4, rgb(255,128,255));
if stime == 날짜변경시간 then {
var8 = TL_New(sdate, stime, H, sdate, stime, 999999999);
var9 = TL_New(sdate, stime, L, sdate, stime, 0);
TL_setColor(var8, rgb(200,150,250));
TL_setColor(var9, rgb(200,150,250));
}
2021-05-27
763
글번호 149364
지표