예스스탁
예스스탁 답변
2023-03-28 13:05:22
안녕하세요
예스스탁입니다.
현재 시스템이 매수와 매도가 반복되는 스위칭 시스템입니다.
반대조건 만족시 손실이면 청산만 하고 진입은 되지 않게 작성해 드립니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(1) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(1) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : 질문이 많아 죄송합니다.
> 밑에 식의 문제가 이익볼때는 몇번이고 계속 이익보고 손실볼때는 몇번이고 계속 손실보는데요.
이번 매매 손실보면 다음번 매매부터 매수매도를 토글 시킬는 시스템을 구현할수 도 있나요?(손실 청산하고 조금 텀을 주더라도)
항상 감사드립니다.
항상 행복하고 건강하시길 바랍니다~^^
↓↓##전번에 알려주신 지그재그식 ##↓↓
input : Period(5);
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;
Buy();
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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;
Sell();
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
잘 되다가 중간에 멈추는데 이유가 몰까요?
그냥 한세트 돌고 멈춰버리는것 같아보여요.
제가 말한건
# 에이코스
이전 매매 손실여부초기화
만약 상승추세시
{매수}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매도전환}
손절이였을경우 [비코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [비코스]로
# 비코스
이전 매매 손실여부초기화
만약 상승추세시
{매도}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
말이 안되는거 같기도 하고...
그냥 시스템언어 까막눈이라 생각나는데로만 적어봤습니다.
항상 감사드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 질문이 많아 죄송합니다.
>
안녕하세요
예스스탁입니다.
현재 시스템이 매수와 매도가 반복되는 스위칭 시스템입니다.
반대조건 만족시 손실이면 청산만 하고 진입은 되지 않게 작성해 드립니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(1) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(1) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : 질문이 많아 죄송합니다.
> 밑에 식의 문제가 이익볼때는 몇번이고 계속 이익보고 손실볼때는 몇번이고 계속 손실보는데요.
이번 매매 손실보면 다음번 매매부터 매수매도를 토글 시킬는 시스템을 구현할수 도 있나요?(손실 청산하고 조금 텀을 주더라도)
항상 감사드립니다.
항상 행복하고 건강하시길 바랍니다~^^
↓↓##전번에 알려주신 지그재그식 ##↓↓
input : Period(5);
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;
Buy();
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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;
Sell();
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
예스스탁
예스스탁 답변
2023-03-29 08:49:22
안녕하세요
예스스탁입니다.
식을 수정했습니다.
상승전환시 기존에 진입한 매도포지션이
수익이면 청산하고 매수진입 실행
손실이면 청산만 실행
하락전환시 기존에 진입한 매수포지션이
수익이면 청산하고 매도진입 실행
손실이면 청산만 실행
위 구조로 동작하게 됩니다.
스위칭시 손실이면 스위칭을 하지 않고 진입을 한번 건너뛰게 됩니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(0) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(0) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : Re : Re : 질문이 많아 죄송합니다.
> 잘 되다가 중간에 멈추는데 이유가 몰까요?
그냥 한세트 돌고 멈춰버리는것 같아보여요.
제가 말한건
# 에이코스
이전 매매 손실여부초기화
만약 상승추세시
{매수}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매도전환}
손절이였을경우 [비코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [비코스]로
# 비코스
이전 매매 손실여부초기화
만약 상승추세시
{매도}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
말이 안되는거 같기도 하고...
그냥 시스템언어 까막눈이라 생각나는데로만 적어봤습니다.
항상 감사드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 질문이 많아 죄송합니다.
>
안녕하세요
예스스탁입니다.
현재 시스템이 매수와 매도가 반복되는 스위칭 시스템입니다.
반대조건 만족시 손실이면 청산만 하고 진입은 되지 않게 작성해 드립니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(1) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(1) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : 질문이 많아 죄송합니다.
> 밑에 식의 문제가 이익볼때는 몇번이고 계속 이익보고 손실볼때는 몇번이고 계속 손실보는데요.
이번 매매 손실보면 다음번 매매부터 매수매도를 토글 시킬는 시스템을 구현할수 도 있나요?(손실 청산하고 조금 텀을 주더라도)
항상 감사드립니다.
항상 행복하고 건강하시길 바랍니다~^^
↓↓##전번에 알려주신 지그재그식 ##↓↓
input : Period(5);
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;
Buy();
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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;
Sell();
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
이거 물건인긴한데 익절 할때까지 청산을 하지 않습니다^^
좋은.. 건가요^^? ㅋㅋㅋ
손절이 없어요 ㅋㅋ
손실중이면 몇일이고 청산을 하지 않습니다^^
이것도 소장해야겠네요^^
감사하지만 수정도 부탁드립니다^^
귀찮게 해드려 죄송합니다^^
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 질문이 많아 죄송합니다.
>
안녕하세요
예스스탁입니다.
식을 수정했습니다.
상승전환시 기존에 진입한 매도포지션이
수익이면 청산하고 매수진입 실행
손실이면 청산만 실행
하락전환시 기존에 진입한 매수포지션이
수익이면 청산하고 매도진입 실행
손실이면 청산만 실행
위 구조로 동작하게 됩니다.
스위칭시 손실이면 스위칭을 하지 않고 진입을 한번 건너뛰게 됩니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(0) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(0) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : Re : Re : 질문이 많아 죄송합니다.
> 잘 되다가 중간에 멈추는데 이유가 몰까요?
그냥 한세트 돌고 멈춰버리는것 같아보여요.
제가 말한건
# 에이코스
이전 매매 손실여부초기화
만약 상승추세시
{매수}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매도전환}
손절이였을경우 [비코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [비코스]로
# 비코스
이전 매매 손실여부초기화
만약 상승추세시
{매도}
하방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
만약 하방추세시
{매도}
상방추세 전환시
{청산후
손절인지 익절인지 판단후
초기화상태 이거나 익절이였을경우
매수전환}
손절이였을경우 [에이코스]로
말이 안되는거 같기도 하고...
그냥 시스템언어 까막눈이라 생각나는데로만 적어봤습니다.
항상 감사드립니다~
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 질문이 많아 죄송합니다.
>
안녕하세요
예스스탁입니다.
현재 시스템이 매수와 매도가 반복되는 스위칭 시스템입니다.
반대조건 만족시 손실이면 청산만 하고 진입은 되지 않게 작성해 드립니다.
input : Period(5);
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("b");
if MarketPosition == -1 and PositionProfit(1) > 0 Then
ExitShort("sx");
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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("s");
if MarketPosition == 1 and PositionProfit(1) > 0 Then
ExitLong("bx");
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}
즐거운 하루되세요
> 말비 님이 쓴 글입니다.
> 제목 : 질문이 많아 죄송합니다.
> 밑에 식의 문제가 이익볼때는 몇번이고 계속 이익보고 손실볼때는 몇번이고 계속 손실보는데요.
이번 매매 손실보면 다음번 매매부터 매수매도를 토글 시킬는 시스템을 구현할수 도 있나요?(손실 청산하고 조금 텀을 주더라도)
항상 감사드립니다.
항상 행복하고 건강하시길 바랍니다~^^
↓↓##전번에 알려주신 지그재그식 ##↓↓
input : Period(5);
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;
Buy();
//과거 고점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//추세선 굵기는 1
TL_SetSize(ZigZagTL,1);
HTL = TL_New(HD[0],HT[0],HV[0],NextBarSdate,NextBarStime,HV[0]);
TL_SetColor(HTL,Red);
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;
Sell();
//과거 저점의 날짜, 시간, 값을 다음 배열방으로 이동
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,Gray);
//굴긱는 1
TL_SetSize(ZigZagTL,1);
LTL = TL_New(LD[0],LT[0],LV[0],NextBarSdate,NextBarStime,LV[0]);
TL_SetColor(LTL,Blue);
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]);
}
}