커뮤니티
시스탬 부탁드립니다
2019-06-23 22:00:50
308
글번호 129671
아래 지표를 활용
시스탬 작성 방안을 그림으로 회사 매일로 ppt 첨부하여 드렸습니다
부탁 드립니다
Input : length(10);
var : 종가사용여부(0),수치표시(1),표시(0);
var : 추세두께(2),추세상승색(red),추세하락색(blue);
var : 고점연결두께(2),고점연결색상(RED);
var : 저점연결두께(2),저점연결색상(blue);
input : p1(5),P2(20);
input : 손절틱수(50),익절틱수(50);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL11(0),TL12(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
T = 1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
T = -1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
}
최종꼭지점 = "저점";
}
var1 = ma(c,P1);
var2 = ma(C,P2);
if T == -1 and abs(저[1,1]-저[2,1]) <= PriceScale*10 and
C > O and crossup(c,var1) Then
buy("b",AtMarket);
if MarketPosition == 1 Then
{
ExitLong("bx1",AtStop,저[2,1]-PriceScale*1);
if CrossDown(c,var2) Then
exitlong("bx2",AtMarket);
}
if T == 1 and abs(고[1,1]-고[2,1]) <= PriceScale*10 and
C < O and CrossDown(c,var1) Then
sell("s",AtMarket);
if MarketPosition == -1 Then
{
ExitShort("sx1",AtStop,고[2,1]-PriceScale*1);
if CrossUp(c,var2) Then
ExitShort("sx2",AtMarket);
}
SetStopLoss(PriceScale*손절틱수,PointStop);
SetStopProfittarget(PriceScale*익절틱수,PointStop);
답변 1
예스스탁 예스스탁 답변
2019-06-24 15:15:30
안녕하세요
예스스탁입니다.
1
아래 가이드 내용 참고하셔서
수정 보완해 식 완성하시기 바랍니다.
2
고점간연결선과 저점간 연결선을 이용하기 위해서는 차트에 추세선이 표시되어야합니다.
이전과같이 추세선표시 없이 신호발생이 가능하지 않습니다.
2
청산 방법은 직전고점 (-10틱 ) 부터 음봉 2개 연속이면 종가에 시장가 청산 입니다
청산 방법은 직전저점 ( +10틱) 부터 양봉2개 연속이면 종가에 시장가 청산 입니다
매수진입후 현재봉이 하락추세 지점이면 이전고점은 이미 진입신호봉보다 상당한 과거 일수 있고
현재 상승추세 계산구간이면 현재 지점이 현재로서는 가장 최근 고점입니다.
진입이후 n개 연속 양봉이나 음봉 발생하면 청산으로 작성해 드립니다.
3
Input : length(10);
var : 종가사용여부(0),수치표시(1),표시(0);
var : 추세두께(2),추세상승색(red),추세하락색(blue);
var : 고점연결두께(2),고점연결색상(RED);
var : 저점연결두께(2),저점연결색상(blue);
input : p1(5),P2(20),sto1(12),sto2(5),sto3(5),BBP(20),Dv(2);
input : 손절틱수(12),익절틱수(100),n(2);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL11(0),TL12(0),T(0),B(false),S(false);
var : stok(0),stod(0),bbup(0),bbdn(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
T = 1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,추세두께);
TL_SetColor(TL1,추세상승색);
if 표시 == 0 Then
TL_Delete(TL11);
TL11 = TL_New(저[2,3],저[2,4],저[2,1],저[1,3],저[1,4],저[1,1]);
TL_SetExtRight(TL11,true);
TL_SetColor(TL11,저점연결색상);
TL_SetSize(TL11,저점연결두께);
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
T = -1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,추세두께);
TL_SetColor(TL1,추세하락색);
if 표시 == 0 Then
TL_Delete(TL12);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],고[1,3],고[1,4],고[1,1]);
TL_SetExtRight(TL12,true);
TL_SetColor(TL12,고점연결색상);
TL_SetSize(TL12,고점연결두께);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
var1 = ma(c,P1);
var2 = ma(C,P2);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
bbup = BollBandUp(BBP,dv);
BBdn = BollBandDown(BBP,dv);
if T == 1 and T != T[1] Then
B = true;
if T == -1 and T != T[1] Then
S = true;
if B == true and T == 1 and
stok > stod and
C >= TL_GetValue(TL12,sdate,stime)+PriceScale*3 and 고[2,1] < 고[3,1] Then
{
B = false;
buy("b1");
}
if MarketPosition == 1 and BarsSinceEntry >= n and countif(C<O,n) == n Then
exitlong("bx1",OnClose,def,"b1");
if S == true and T == -1 and
stok < stod and
C <= TL_GetValue(TL11,sdate,stime)-PriceScale*3 and 저[2,1] > 저[3,1] Then
{
S = false;
sell("s1");
}
if MarketPosition == -1 and BarsSinceEntry >= n and countif(C>O,n) == n Then
ExitShort("sx1",OnClose,def,"s1");
if crossup(c,bbdn) and C > O and stok > stod and
abs(C-TL_GetValue(TL11,sdate,stime)) <= PriceScale*10 Then
buy("b2");
if MarketPosition == 1 and BarsSinceEntry >= n and countif(C<O,n) == n Then
exitlong("bx2",OnClose,def,"b2");
if CrossDown(c,bbup) and C < O and stok < stod and
abs(C-TL_GetValue(TL12,sdate,stime)) <= PriceScale*10 Then
Sell("s2");
if MarketPosition == -1 and BarsSinceEntry >= n and countif(C>O,n) == n Then
ExitShort("sx2",OnClose,def,"s2");
SetStopProfittarget(익절틱수,PointStop);
SetStopLoss(손절틱수,PointStop);
즐거운 하루되세요
> 유로정복자 님이 쓴 글입니다.
> 제목 : 시스탬 부탁드립니다
>
아래 지표를 활용
시스탬 작성 방안을 그림으로 회사 매일로 ppt 첨부하여 드렸습니다
부탁 드립니다
Input : length(10);
var : 종가사용여부(0),수치표시(1),표시(0);
var : 추세두께(2),추세상승색(red),추세하락색(blue);
var : 고점연결두께(2),고점연결색상(RED);
var : 저점연결두께(2),저점연결색상(blue);
input : p1(5),P2(20);
input : 손절틱수(50),익절틱수(50);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL11(0),TL12(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
#==========================================#
HH = IFF(종가사용여부==1,C,H);
LL = IFF(종가사용여부==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then // 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
#==========================================#
If 처리구분 == "고점처리" Then
{
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
T = 1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
}
Else If 고[1,1] < HH Then // 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
T = -1;
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
}
최종꼭지점 = "저점";
}
var1 = ma(c,P1);
var2 = ma(C,P2);
if T == -1 and abs(저[1,1]-저[2,1]) <= PriceScale*10 and
C > O and crossup(c,var1) Then
buy("b",AtMarket);
if MarketPosition == 1 Then
{
ExitLong("bx1",AtStop,저[2,1]-PriceScale*1);
if CrossDown(c,var2) Then
exitlong("bx2",AtMarket);
}
if T == 1 and abs(고[1,1]-고[2,1]) <= PriceScale*10 and
C < O and CrossDown(c,var1) Then
sell("s",AtMarket);
if MarketPosition == -1 Then
{
ExitShort("sx1",AtStop,고[2,1]-PriceScale*1);
if CrossUp(c,var2) Then
ExitShort("sx2",AtMarket);
}
SetStopLoss(PriceScale*손절틱수,PointStop);
SetStopProfittarget(PriceScale*익절틱수,PointStop);
다음글
이전글