커뮤니티
문의드립니다.
2018-01-18 08:37:12
141
글번호 115876
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
답변 5
예스스탁 예스스탁 답변
2018-01-18 13:56:47
안녕하세요
예스스탁입니다.
1.
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
2
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
잡다백수
2018-01-18 14:10:24
코딩감사합니다. 그런데 실제 실행을 해보니 1,2번 모두 신호가 하나도 나오지 않았습니다. 혹시 너무 극단값이어서 안 나오나 해서 아래와 같이 변동폭에 몇 곱하고 틱도 줄이고 해도 신호가 나오지 않네요. 뭐가 잘못된 지 몰라서 재질문드립니다.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
1.
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
2
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
예스스탁 예스스탁 답변
2018-01-18 14:31:43
안녕하세요
예스스탁입니다.
변수를 잘못지정했습니다.
아래식으로 다시 사용하시면 됩니다.
1.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
2
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : Re : Re : 문의드립니다.
> 코딩감사합니다. 그런데 실제 실행을 해보니 1,2번 모두 신호가 하나도 나오지 않았습니다. 혹시 너무 극단값이어서 안 나오나 해서 아래와 같이 변동폭에 몇 곱하고 틱도 줄이고 해도 신호가 나오지 않네요. 뭐가 잘못된 지 몰라서 재질문드립니다.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
1.
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
2
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
잡다백수
2018-01-18 15:42:57
코딩감사합니다. 재질문드립니다.
차트에 선은 아래 식이고 지표는 짜주신 식을 토대로 화면에 확인해보려고 만든 식입니다. 한번 실행해보니 아래 캡처그림처럼 종가가 dayopen+변동폭도 -변동폭도 상향하향돌파하지 않은 곳에서 고가를 저장하는 것처럼 나왔습니다.
전에 답변해주신 것(전일 것에서 하향 상향돌파했다고 인식)과 연관된 오류인가요? 장시작 후 5개봉 내로 변동폭을 돌파하면 고가나 저가를 저장하려고 했는데 제가 생각한 것과 다르게 나왔습니다.
#화면 표시지표
inputs: 변동폭승수(0.3);
var: 전일변동폭(0);
전일변동폭 = dayhigh(1)-daylow(1);
var1 = dayopen(0)+전일변동폭*변동폭승수;
var2 = dayopen(0)-전일변동폭*변동폭승수;
plot1(var1);
plot2(var2);
#연습지표
input:p(0.3),q(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= q then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
plot1(var1);
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
변수를 잘못지정했습니다.
아래식으로 다시 사용하시면 됩니다.
1.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
2
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : Re : Re : 문의드립니다.
> 코딩감사합니다. 그런데 실제 실행을 해보니 1,2번 모두 신호가 하나도 나오지 않았습니다. 혹시 너무 극단값이어서 안 나오나 해서 아래와 같이 변동폭에 몇 곱하고 틱도 줄이고 해도 신호가 나오지 않네요. 뭐가 잘못된 지 몰라서 재질문드립니다.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
1.
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
2
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
예스스탁 예스스탁 답변
2018-01-18 16:33:01
안녕하세요
예스스탁입니다.
변수 var1,var2는 최근 저장된 값이 유지 됩니다.
당일 돌파안해도 이전일에 돌파가 있었으면 값이 유지됩니다.
해당 수식에서 당일 돌파여부는 var3변수로 판단하게 되어 있습니다.
수식에서 모든 변수가 초기화 되는 것이 중요한 것이 아닙니다.
불필요한 초기화는 단지 수식상 해야될 일만 늘리는 코딩일 뿐입니다.
var1,var2도 초기화 하고자 하시면
아래와 같이 날짜변경시에 0으로 값할당하시면 됩니다.
if bdate != bdate[1] Then
{
var1 = 0;
var2 = 0;
var3 = 0;
var4 = 0;
var5 = 0;
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : Re : Re : Re : Re : 문의드립니다.
> 코딩감사합니다. 재질문드립니다.
차트에 선은 아래 식이고 지표는 짜주신 식을 토대로 화면에 확인해보려고 만든 식입니다. 한번 실행해보니 아래 캡처그림처럼 종가가 dayopen+변동폭도 -변동폭도 상향하향돌파하지 않은 곳에서 고가를 저장하는 것처럼 나왔습니다.
전에 답변해주신 것(전일 것에서 하향 상향돌파했다고 인식)과 연관된 오류인가요? 장시작 후 5개봉 내로 변동폭을 돌파하면 고가나 저가를 저장하려고 했는데 제가 생각한 것과 다르게 나왔습니다.
#화면 표시지표
inputs: 변동폭승수(0.3);
var: 전일변동폭(0);
전일변동폭 = dayhigh(1)-daylow(1);
var1 = dayopen(0)+전일변동폭*변동폭승수;
var2 = dayopen(0)-전일변동폭*변동폭승수;
plot1(var1);
plot2(var2);
#연습지표
input:p(0.3),q(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= q then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
plot1(var1);
}
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
변수를 잘못지정했습니다.
아래식으로 다시 사용하시면 됩니다.
1.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
2
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var4+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : Re : Re : 문의드립니다.
> 코딩감사합니다. 그런데 실제 실행을 해보니 1,2번 모두 신호가 하나도 나오지 않았습니다. 혹시 너무 극단값이어서 안 나오나 해서 아래와 같이 변동폭에 몇 곱하고 틱도 줄이고 해도 신호가 나오지 않네요. 뭐가 잘못된 지 몰라서 재질문드립니다.
input:p(0.3),틱(5);
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1))*p;
bb = dayopen-(dayhigh(1)-daylow(1))*p;
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*틱 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*틱 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*틱 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*틱 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
SetStopEndofday();
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의드립니다.
>
안녕하세요
예스스탁입니다.
1.
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
}
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
2
var : aa(0),bb(0),ATRV(0);
aa = dayopen+(dayhigh(1)-daylow(1));
bb = dayopen-(dayhigh(1)-daylow(1));
ATRV = ATR(10);
if bdate != bdate[1] Then
{
var3 = 0;
var4 = 0;
var5 = 0;
}
var5 = var5+1;
if var5 <= 5 then{
if crossup(c,aa) Then{
var1 = H;
var2 = L;
var3 = 1;
var4 = index;
}
if CrossDown(c,bb) Then{
var1 = H;
var2 = L;
var3 = -1;
var4 = index;
}
}
if var3 > 0 and index == var3+2 Then{
if var3 == 1 and C >= var1+PriceScale*5 Then
buy("매수1");
if var3 == 1 and C <= var2-PriceScale*5 Then
sell("매도1");
if var3 == -1 and C >= var1+PriceScale*5 Then
buy("매수2");
if var3 == -1 and C <= var2-PriceScale*5 Then
sell("매도2");
}
if MarketPosition == 1 Then{
if IsEntryName("매수1") == true Then
ExitLong("bx1",AtStop,highest(H,BarsSinceEntry)-ATRV*1.5);
if IsEntryName("매수2") == true Then
ExitLong("bx2",AtLimit,aa);
}
if MarketPosition ==- 1 Then{
if IsEntryName("매도1") == true Then
ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+ATRV*1.5);
if IsEntryName("매도2") == true Then
ExitShort("sx2",AtLimit,bb);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 시스템
a 시가+ 전일변동폭
b 시가- 전일변동폭
시가가 a 위나 b 아래에서 시작하면 고가 저가 저장
a위에서 시작한 경우에 a를 2봉 지난 봉이 5틱이상 a를 상향돌파하면 매수진입A
5틱이상 하향돌파하면 매도진입B
B아래에서 시작한 경우에 b를 2봉 지난 봉이 5틱이상 하향돌파하면 매도진입A
상향돌파하면 매수진입B
매수진입A시 고가-ATR 트레일링 수식 청산
매도B 진입시 b 하향돌파시 즉시 청산
매도A진입시 저가+ATR 트레일링 수식 청산
매수B진입시 a상향돌파시 즉시 청산
당일청산
기타
-셋업한 봉에서 5봉이상 벌어지면 진입하지 않음.
2. 나머지 내용 1과 동일
'시가가 a 위나 b 아래에서 시작하면 고가 저가 저장'
이 부분을 장시작후 5개봉까지만 a,b위에 있을 때로 셋업 조건을 바꿈.
다음글
이전글