예스스탁
예스스탁 답변
2023-07-31 13:25:37
안녕하세요
예스스탁입니다.
올려주신 내용은 가능하지 않습니다.
수식에서 신호의 위치는 자동표시되는 부분이라 제어가 되지 않습니다.
또한 신호가 표시된 영역을 수식에서 알수 없어
신호가 표시되는 영역을 피해서 텍스트가 출력되게도 작성이 가능하지 않습니다.
도움을 드리지 못해 죄송합니다.
즐거운 하루되세요
> 시그너스 님이 쓴 글입니다.
> 제목 : 수정부탁 합니다.
> 시스템 신호가 봉에서 좀 벌어 졌으면 좋은데 수정 가능 할까요?
Var : value(0);
value = 0;
# 매수 / 매도청산
If CCI(9) > 0 Then
value = 1;
If MACD(12,26) > 0 Then
value = value+1;
If DIPlus(14) > DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) > StochasticsD(12,5,5) Then
value = value+1;
# 매수/매도청산
If MarketPosition <= 0 And value >= 3 Then
{
Buy("매수");
}
value = 0;
# 매도/매수청산
If CCI(9) < 0 Then
value = 1;
If MACD(12,26) < 0 Then
value = value+1;
If DIPlus(14) < DIMinus(14) Then
value = value+1;
If StochasticsK(12,5) < StochasticsD(12,5,5) Then
value = value+1;
If MarketPosition >= 0 And value >= 3 Then
{
Sell("매도");
}
if MarketPosition == 1 And
H[2] == highest(H,5)[1] and
H[2] > max(C[2],O[2]) and
V[2] >= 5000 and
C[0] < C[2] Then
exitlong("매수분 올청산");
if MarketPosition == -1 And
L[2] == Lowest(L,5)[1] and
H[1] > max(C[1],O[1]) and
V[1] >= 5000 and
C[0] > C[1] Then
ExitShort("매도분 올청산");
if MarketPosition <= 0 And
L[1]==LOWEST(L,5) and
C[1]<O[1] and
C[1]>L[1] and
O[0]>L[0] and
C[1]==O[0] and
L[1]==L[0] and
C[0]>O[0] and
v>2500 Then
buy("집게발 매수");
if MarketPosition >= 0 And
H[1]==highest(H,5) and
C[1]>O[1] and
C[1]<H[1] and
O[0]<H[0] and
C[1]==O[0] and
H[1]==H[0] and
C[0]<O[0] and
v > 2500 Then
sell("집게발 매도");
input : Period(6);
Array : HD[10](0),HT[10](0),HV[10](0); //고점 날짜, 시간, 가격 저장할 배열
Array : LD[10](0),LT[10](0),LV[10](0); //저점 날짜, 시간, 가격 저장할 배열
var : cnt(0),Hprice(0),Lprice(0);
var : UpTrend(false),DownTrend(False),Trend(0);
var : ZigZagTL(0),HTL(0),LTL(0),HTX(0),LTX(0);
HPrice = H;
LPrice = L;
if Index == 0 Then
{
//초기 최고값
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//초기 최저값
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
}
Else
{
UpTrend = HPrice >= Highest(HPrice,Period)[1];
DownTrend = LPrice <= Lowest(LPrice,Period)[1];
//상승추세 전환
if trend <= 0 and UpTrend == true Then
{
//추세구분 1
trend = 1;
if (MarketPosition == 0 ) or
(MarketPosition == -1 and PositionProfit(0) >= 0) Then
Buy("메수전황");
if MarketPosition == -1 and PositionProfit(0) < 0 Then
ExitShort("수평매수");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
For cnt = 9 DownTo 1
{
HD[cnt] = HD[cnt-1];
HT[cnt] = HT[cnt-1];
HV[cnt] = HV[cnt-1];
}
//0번방에 날짜, 시간, 가격 저장
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//직전 저점에서 현재 고점까지 연결선 출력
ZigZagTL = TL_New(LD[0],LT[0],LV[0],HD[0],HT[0],HV[0]);
//색상은 Red
TL_SetColor(ZigZagTL,Yellow);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,0);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
TL_SetSize(htl,2);
HTX = text_new(HD[0],HT[0],HV[0],NumToStr(HV[0],2));
Text_SetStyle(HTX,2,1);
}
Else if trend >= 0 and DownTrend Then//하락추세 전환
{
//추세구분은 -1
trend = -1;
if (MarketPosition == 0 ) or
(MarketPosition == 1 and PositionProfit(0) >= 0) Then
Sell("매도전황");
if MarketPosition == 1 and PositionProfit(0) < 0 Then
ExitLong("수평매도");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
For cnt = 9 DownTo 1
{
LD[cnt] = LD[cnt-1];
LT[cnt] = LT[cnt-1];
LV[cnt] = LV[cnt-1];
}
//0번방에 날짜, 시간, 가격 저장
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
//직전 고점에서 현재 저점까지 연결선 출력
ZigZagTL = TL_New(HD[0],HT[0],HV[0],LD[0],LT[0],LV[0]);
//색상은 Blue
TL_SetColor(ZigZagTL,Yellow);
//굴긱는 1
TL_SetSize(ZigZagTL,0);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
TL_SetSize(ltl,2);
LTX = text_new(LD[0],LT[0],LV[0],NumToStr(LV[0],2));
Text_SetStyle(LTX,2,0);
}
Else
{
//상승구간
if trend == 1 Then
{
//고점이 갱신되면
if HPrice > HV[0] Then
{
//갱신된 봉의 날짜/시간/가격으로 변경
HD[0] = sDate;
HT[0] = sTime;
HV[0] = HPrice;
//지그재그 추세선의 끝점을 현재봉으로 이동
TL_SetEnd(ZigZagTL,HD[0],HT[0],HV[0]);
//고점 수평 추세선의 끝점을 현재봉으로 이동
TL_SetBegin(HTL,HD[0],HT[0],HV[0]);
Text_SetString(HTX,NumToStr(HV[0],2));
Text_SetLocation(HTX,HD[0],HT[0],HV[0]);
}
}
//하락구간
if trend == -1 Then
{
//저점이 갱신되면
if LPrice < LV[0] Then
{
//갱신된 봉의 날짜/시간/가격으로 변경
LD[0] = sDate;
LT[0] = sTime;
LV[0] = LPrice;
//지그재그 추세선의 끝점을 현재봉으로 이동
TL_SetEnd(ZigZagTL,LD[0],LT[0],LV[0]);
//저점 수평 추세선의 끝점을 현재봉으로 이동
TL_SetBegin(LTL,LD[0],LT[0],LV[0]);
Text_SetString(LTX,NumToStr(LV[0],2));
Text_SetLocation(LTX,LD[0],LT[0],LV[0]);
}
}
TL_SetEnd(HTL,sDate,sTime,HV[0]);
TL_SetEnd(LTL,sDate,sTime,LV[0]);
}
}
SetStopLoss(PriceScale*20,PointStop);
SetStopEndofday(153500);