커뮤니티
예스언어로 부탁드립니다.
2017-04-03 13:38:30
264
글번호 108414
안녕하세요.
예스언어로 부탁드립니다.
- 1. HiLoZZTrendLine_Ver_16.zip (0.00 MB)
답변 1
예스스탁 예스스탁 답변
2017-04-04 13:02:08
안녕하세요
예스스탁입니다.
Input:length(10),tlExtend(5),tlCheckRange(10),entryCntLimit(1),
waveLineSize(1),tlSize(0),waveLineColor(GREEN),displPRC(0);
Var:j(0),jj(0),lastHi(0),lastLo(0),lastVertex(""),procBit(""),entryCnt(0),
TL1(0),TL2(0),TL3(0),Text1(0),
//ssssssssssssssssssssssssssssssssss
hiTLEndVal(0),loTLEndVal(0),pkID(0),vlID(0);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Array:PK[100,4](0),VL[100,4](0); // 1:Price,2:index,3:Date,4:Time
//==========================================
Condition1 = Highest(H,length) == H and lastHi <> H;
Condition2 = Lowest (L,length) == L and lastLo <> L;
procBit = "";
If Condition1 and Condition2 Then Begin
If lastVertex == "Valley" Then Begin
If VL[1,1] > L Then procBit = "Valley";
Else procBit = "Peak";
End
Else If lastVertex == "Peak" Then Begin
If PK[1,1] < H Then procBit = "Peak";
Else procBit = "Valley";
End;
End
Else If Condition1 Then procBit = "Peak";
Else If Condition2 Then procBit = "Valley";
//==========================================
If procBit == "Peak" Then Begin
lastHi = H;
If lastVertex == "Valley" Then Begin
entryCnt = 0;
For j = 100 DownTo 2 Begin
//ssssssssssssssssssssssssssssssssss
For jj = 1 To 4 Begin
PK[j,jj] = PK[j-1,jj];
End ;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End;
PK[1,1] = H;
PK[1,2] = index;
//ssssssssssssssssssssssssssssssssss
PK[1,3] = Date;
PK[1,4] = Time;
TL1 = TL_New(VL[1,3],VL[1,4],VL[1,1],PK[1,3],PK[1,4],PK[1,1]);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
If displPRC == 1 Then Begin
Text1 = Text_New(PK[1,3],PK[1,4],PK[1,1],NumToStr(PK[1,1],2));
Text_SetStyle(Text1, 2, 1);
Text_SetColor(Text1,black);
End ;
TL_SetSize(TL1,waveLineSize);
TL_SetColor(TL1,waveLineColor);
End
Else If PK[1,1] < H Then Begin
PK[1,1] = H;
PK[1,2] = index;
//ssssssssssssssssssssssssssssssssss
PK[1,3] = Date;
PK[1,4] = Time;
TL_SetEnd(TL1,PK[1,3],PK[1,4],PK[1,1]);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
If displPRC == 1 Then Begin
Text_SetLocation(Text1,PK[1,3],PK[1,4],PK[1,1]);
Text_SetString(Text1,NumToStr(PK[1,1],2));
End;
End ;
#{ High Trend Line }
If PK[2,2][1] <> PK[2,2] Then Begin
//ssssssssssssssssssssssssssssssssss
hiTLEndVal = 0;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
For j = 3 To tlCheckRange Begin
If PK[2,1] < PK[j,1] Then Begin
//ssssssssssssssssssssssssssssssssss
hiTLEndVal = (PK[2,1] - PK[j,1])/(PK[2,2] - PK[j,2]) * (index - PK[j,2]) + PK[j,1];
TL2 = TL_New(PK[j,3],PK[j,4],PK[j,1],Date,Time,hiTLEndVal);
pkID = j;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetSize(TL2,tlSize);
TL_SetColor(TL2,RED);
End ;
End;
End
Else If hiTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
hiTLEndVal = (PK[2,1] - PK[pkID,1])/(PK[2,2] - PK[pkID,2]) * (index - PK[pkID,2]) + PK[pkID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL2,Date,Time,hiTLEndVal);
End ;
If loTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
loTLEndVal = (VL[2,1] - VL[vlID,1])/(VL[2,2] - VL[vlID,2]) * (index - VL[vlID,2]) + VL[vlID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL3,Date,Time,loTLEndVal);
End ;
lastVertex = "Peak";
If entryCnt < entryCntLimit and
hiTLEndVal > 0 and hiTLEndVal < C Then Begin
Buy();
End ;
End ;
//==========================================
If procBit == "Valley" Then Begin
lastLo = L;
If lastVertex == "Peak" then Begin
entryCnt = 0;
For j = 100 DownTo 2 Begin
//ssssssssssssssssssssssssssssssssss
For jj = 1 To 4 Begin
VL[j,jj] = VL[j-1,jj];
End;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
End;
VL[1,1] = L;
VL[1,2] = index;
//ssssssssssssssssssssssssssssssssss
VL[1,3] = Date;
VL[1,4] = Time;
TL1 = TL_New(PK[1,3],PK[1,4],PK[1,1],VL[1,3],VL[1,4],VL[1,1]);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
If displPRC == 1 Then Begin
Text1 = Text_New(VL[1,3],VL[1,4],VL[1,1],NumToStr(VL[1,1],2));
Text_SetStyle(Text1, 2, 0);
Text_SetColor(Text1,black);
End ;
TL_SetSize(TL1,waveLineSize);
TL_SetColor(TL1,waveLineColor);
End
Else If VL[1,1] > L then Begin
VL[1,1] = L;
VL[1,2] = index;
//ssssssssssssssssssssssssssssssssss
VL[1,3] = Date;
VL[1,4] = Time;
TL_SetEnd(TL1,VL[1,3],VL[1,4],VL[1,1]);
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
If displPRC == 1 Then Begin
Text_SetLocation(Text1,VL[1,3],VL[1,4],VL[1,1]);
Text_SetString(Text1,NumToStr(VL[1,1],2));
End ;
End ;
#{ Low Trend Line }
If VL[2,2][1] <> VL[2,2] Then Begin
//ssssssssssssssssssssssssssssssssss
loTLEndVal = 0;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
For j = 3 To tlCheckRange Begin
If VL[2,1] > VL[j,1] and VL[j,1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
loTLEndVal = (VL[2,1] - VL[j,1])/(VL[2,2] - VL[j,2]) * (index - VL[j,2]) + VL[j,1];
TL3 = TL_New(VL[j,3],VL[j,4],VL[j,1],Date,Time,loTLEndVal);
vlID = j;
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetSize(TL3,tlSize);
TL_SetColor(TL3,Blue);
End ;
End;
End
Else If loTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
loTLEndVal = (VL[2,1] - VL[vlID,1])/(VL[2,2] - VL[vlID,2]) * (index - VL[vlID,2]) + VL[vlID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL3,Date,Time,loTLEndVal);
End ;
If hiTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
hiTLEndVal = (PK[2,1] - PK[pkID,1])/(PK[2,2] - PK[pkID,2]) * (index - PK[pkID,2]) + PK[pkID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL2,Date,Time,hiTLEndVal);
End ;
lastVertex = "Valley";
If entryCnt < entryCntLimit and
loTLEndVal > 0 and loTLEndVal > C Then Begin
Sell();
End ;
End ;
//==========================================
If procBit == "" Then Begin
If index - PK[1,2] <= tlExtend Then Begin
If hiTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
hiTLEndVal = (PK[2,1] - PK[pkID,1])/(PK[2,2] - PK[pkID,2]) * (index - PK[pkID,2]) + PK[pkID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL2,Date,Time,hiTLEndVal);
End ;
End
Else Begin
hiTLEndVal = 0;
End ;
If index - VL[1,2] <= tlExtend Then Begin
If loTLEndVal[1] > 0 Then Begin
//ssssssssssssssssssssssssssssssssss
loTLEndVal = (VL[2,1] - VL[vlID,1])/(VL[2,2] - VL[vlID,2]) * (index - VL[vlID,2]) + VL[vlID,1];
//eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
TL_SetEnd(TL3,Date,Time,loTLEndVal);
End ;
End
Else Begin
loTLEndVal = 0;
End ;
If MarketPosition > 0 and TL2[1] == TL2 and
hiTLEndVal > 0 and hiTLEndVal[1] <= C[1] and hiTLEndVal > C Then
ExitLong();
If MarketPosition < 0 and TL3[1] == TL3 and
loTLEndVal > 0 and loTLEndVal[1] >= C[1] and loTLEndVal < C Then
ExitShort();
End ;
If ((lastVertex == "Peak" and MarketPosition == 1) or
(lastVertex == "Valley" and MarketPosition == -1)) and
MarketPosition[1] <> MarketPosition Then Begin
entryCnt = entryCnt + 1;
End ;
즐거운 하루되세요
> 괌 님이 쓴 글입니다.
> 제목 : 예스언어로 부탁드립니다.
> 안녕하세요.
예스언어로 부탁드립니다.
다음글
이전글