커뮤니티
재문의 드립니다.
2013-04-10 16:20:07
164
글번호 61899
안녕하세요.
29690번 답글에 재문의 드렸습니다.
답변 부탁드릴게요.
감사합니다.^^
답변 3
예스스탁 예스스탁 답변
2013-04-10 19:21:22
안녕하세요
예스스탁입니다.
1.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
if MarketPosition == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
2.
직전고점이나 직전저점은 추상적인 내용으로
해당 값을 구할 정확한 내용이 있어야 작성이 가능합니다.
아래식은 첫번째 진입의 청산은 당일최고가와 최저가를 사용하고
이후 두번째 진입부터는 직전청산이후 현재진입까지의 최고가와 최저가를 사용하게 변경한 식입니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
3.
해당 내용을 제어할만한 정확한 조건을 따로 지정해 주셔야 수정해 드릴수가 있습니다.
crossup(A,B)의 경우 현재봉에서 A는 B보다 크고 직전봉에서 A가 B보다 같거나 작으면 성립되고
crossdown(A,B)의 경우 현재봉에서 A는 B보다 작고 직전봉에서 A가 B보다 같거나 크면 성립됩니다.
우선 직전봉에서 값이 같은 경우는 배제하게 작성해서 드립니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
4.
추세선을 이용하시면 마지막진입의 값을 그려보실수 있습니다.
다만 추세선함수가 시스템에 부하가 있을 수 있으니 참고하시기 바랍니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var2[BarsSinceEntry]-PriceScale,sdate,stime,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var1[BarsSinceEntry]+PriceScale,sdate,stime,var1[BarsSinceEntry]+PriceScale);
}
5.
수식을 문의하신때 그림으로 봉만 지정하시면 저희쪽에서 답변을 드릴 방법이 없습니다.
특정 값을 이용하시면 해당 값을 게산할수 있는 명확한 조건이나 계산방법을 같이 올려주시기 바랍니다
즐거운 하루되세요
> 쿠루드 님이 쓴 글입니다.
> 제목 : 재문의 드립니다.
> 안녕하세요.
29690번 답글에 재문의 드렸습니다.
답변 부탁드릴게요.
감사합니다.^^
쿠루드
2013-05-11 17:27:46
안녕하세요. 성의있는 답변 감사합니다.
그런데 답변내용 2번의 수식부터 신호에 이상이 있네요.
첫번째 그림은 30분차트인데 두번 째 진입신호 후, 청산신호가 전혀 나타나지 않습니다.현재 차트까지 나타나지 않습니다.
두번째 그림은 갭보정 차트인데 역시 첫 진입신호 후, 청산도 다른 신호도 전혀 나타나지 않습니다.
혹시 진입 신호 후에 당일에 목표가가 도달되지 않았을때 생기는 문제가 아닐지요?
2번 수식에 문제 있다보니, 세번째와 네번째 답변의 추세선까지 전부 마찬가지네요.
확인 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 재문의 드립니다.
> 안녕하세요
예스스탁입니다.
1.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
if MarketPosition == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
2.
직전고점이나 직전저점은 추상적인 내용으로
해당 값을 구할 정확한 내용이 있어야 작성이 가능합니다.
아래식은 첫번째 진입의 청산은 당일최고가와 최저가를 사용하고
이후 두번째 진입부터는 직전청산이후 현재진입까지의 최고가와 최저가를 사용하게 변경한 식입니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
3.
해당 내용을 제어할만한 정확한 조건을 따로 지정해 주셔야 수정해 드릴수가 있습니다.
crossup(A,B)의 경우 현재봉에서 A는 B보다 크고 직전봉에서 A가 B보다 같거나 작으면 성립되고
crossdown(A,B)의 경우 현재봉에서 A는 B보다 작고 직전봉에서 A가 B보다 같거나 크면 성립됩니다.
우선 직전봉에서 값이 같은 경우는 배제하게 작성해서 드립니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
4.
추세선을 이용하시면 마지막진입의 값을 그려보실수 있습니다.
다만 추세선함수가 시스템에 부하가 있을 수 있으니 참고하시기 바랍니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var2[BarsSinceEntry]-PriceScale,sdate,stime,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var1[BarsSinceEntry]+PriceScale,sdate,stime,var1[BarsSinceEntry]+PriceScale);
}
5.
수식을 문의하신때 그림으로 봉만 지정하시면 저희쪽에서 답변을 드릴 방법이 없습니다.
특정 값을 이용하시면 해당 값을 게산할수 있는 명확한 조건이나 계산방법을 같이 올려주시기 바랍니다
즐거운 하루되세요
> 쿠루드 님이 쓴 글입니다.
> 제목 : 재문의 드립니다.
> 안녕하세요.
29690번 답글에 재문의 드렸습니다.
답변 부탁드릴게요.
감사합니다.^^
예스스탁 예스스탁 답변
2013-04-11 17:04:39
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0),TL(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선[25] + 기준선[25]) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if crossup(c,선행스팬1) Then{
if MarketPosition == 0 Then#무포지션일때
buy("B1");
if MarketPosition == -1 Then#매도포지션에서 스위칭
buy("B2");
}
if CrossDown(c,선행스팬1) Then{
if MarketPosition == 0 Then#무포지션일때
sell("S1");
if MarketPosition == 1 Then#매수포지션 상태에서 스위칭
sell("S2");
}
value1 = highest(H,index+1);
value2 = lowest(L,index+1);
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
var3 = highest(H,BarsSinceEntry);
var4 = Lowest(L,BarsSinceEntry);
if MarketPosition == 1 and TotalTrades == 0 Then{
ExitLong("BP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-value2[BarsSinceEntry]));
ExitLong("BL",AtStop,value2[BarsSinceEntry]-PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,value2[BarsSinceEntry]-PriceScale,sdate,stime,value2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and TotalTrades == 0 Then{
ExitShort("SP",AtLimit, EntryPrice-abs(value1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop, value1[BarsSinceEntry]+PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,value1[BarsSinceEntry]+PriceScale,sdate,stime,value1[BarsSinceEntry]+PriceScale);
}
if MarketPosition == 1 and TotalTrades >= 1 Then{
if IsEntryName("b1") Then{ #무포지션일 진입한 경우에는 직전청산이후의 최저가를 이용
ExitLong("BP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,var2[BarsSinceEntry]-PriceScale,sdate,stime,var2[BarsSinceEntry]-PriceScale);
}
if IsEntryName("b2") Then{ #매도포지션에서 스위칭 된경우에는 직전매도~현재진입 까지의 최저가
ExitLong("BP2",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var4[BarsSinceEntry]));
ExitLong("BL2",AtStop,var4[BarsSinceEntry]-PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,var4[BarsSinceEntry]-PriceScale,sdate,stime,var4[BarsSinceEntry]-PriceScale);
}
}
if MarketPosition == -1 and TotalTrades >= 1 Then{
if IsEntryName("S1") Then{ #무포지션일 진입한 경우에는 직전청산이후의 최고가를 이용
ExitShort("SP1",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL1",AtStop,var1[BarsSinceEntry]+PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,var1[BarsSinceEntry]+PriceScale,sdate,stime,var1[BarsSinceEntry]+PriceScale);
}
if IsEntryName("S2") Then{ #매수포지션에서 스위칭 된경우에는 직전매수진입~현재진입 까지의 최고가
ExitShort("SP2",AtLimit,EntryPrice-abs(var3[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var3[BarsSinceEntry]+PriceScale);
TL_Delete(TL);
TL = TL_New(EntryDate,EntryTime,var3[BarsSinceEntry]+PriceScale,sdate,stime,var3[BarsSinceEntry]+PriceScale);
}
}
추세선은 완성된 봉에서만 그려지므로
차트 가장 마지막봉에는 그려지지 않습니다.
이용에 참고하시기 바랍니다.
즐거운 하루되세요
> 쿠루드 님이 쓴 글입니다.
> 제목 : Re : Re : 재문의 드립니다.
> 안녕하세요. 성의있는 답변 감사합니다.
그런데 답변내용 2번의 수식부터 신호에 이상이 있네요.
첫번째 그림은 30분차트인데 두번 째 진입신호 후, 청산신호가 전혀 나타나지 않습니다.현재 차트까지 나타나지 않습니다.
두번째 그림은 갭보정 차트인데 역시 첫 진입신호 후, 청산도 다른 신호도 전혀 나타나지 않습니다.
혹시 진입 신호 후에 당일에 목표가가 도달되지 않았을때 생기는 문제가 아닐지요?
2번 수식에 문제 있다보니, 세번째와 네번째 답변의 추세선까지 전부 마찬가지네요.
확인 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 재문의 드립니다.
> 안녕하세요
예스스탁입니다.
1.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
if MarketPosition == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
2.
직전고점이나 직전저점은 추상적인 내용으로
해당 값을 구할 정확한 내용이 있어야 작성이 가능합니다.
아래식은 첫번째 진입의 청산은 당일최고가와 최저가를 사용하고
이후 두번째 진입부터는 직전청산이후 현재진입까지의 최고가와 최저가를 사용하게 변경한 식입니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and crossup(c,선행스팬1[25]) Then
buy();
if MarketPosition == 0 and CrossDown(c,선행스팬1[25]) Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
3.
해당 내용을 제어할만한 정확한 조건을 따로 지정해 주셔야 수정해 드릴수가 있습니다.
crossup(A,B)의 경우 현재봉에서 A는 B보다 크고 직전봉에서 A가 B보다 같거나 작으면 성립되고
crossdown(A,B)의 경우 현재봉에서 A는 B보다 작고 직전봉에서 A가 B보다 같거나 크면 성립됩니다.
우선 직전봉에서 값이 같은 경우는 배제하게 작성해서 드립니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
}
4.
추세선을 이용하시면 마지막진입의 값을 그려보실수 있습니다.
다만 추세선함수가 시스템에 부하가 있을 수 있으니 참고하시기 바랍니다.
Var : 기준선(0), 전환선(0), 후행스팬(0), 선행스팬1(0), 선행스팬2(0);
var : cnt(0),count(0);
전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2;
기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2;
후행스팬 = Close ;
선행스팬1 = (전환선 + 기준선) / 2 ;
선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2;
if MarketPosition == 0 and c > 선행스팬1[25] and C[1] < 선행스팬1[26] Then
buy();
if MarketPosition == 0 and c < 선행스팬1[25] and C[1] > 선행스팬1[26] Then
sell();
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if MarketPosition == 1 and count == 1 Then{
exitlong("PP",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-daylow[BarsSinceEntry]));
ExitLong("BL",AtStop,daylow[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count == 1 Then{
ExitShort("SP",AtLimit,EntryPrice-abs(dayhigh[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL",AtStop,dayhigh[BarsSinceEntry]+PriceScale);
}
var1 = highest(h,BarsSinceExit(1));
var2 = Lowest(L,BarsSinceExit(1));
if MarketPosition == 1 and count > 1 Then{
exitlong("PP1",AtLimit,EntryPrice+abs(기준선[BarsSinceEntry]-var2[BarsSinceEntry]));
ExitLong("BL1",AtStop,var2[BarsSinceEntry]-PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var2[BarsSinceEntry]-PriceScale,sdate,stime,var2[BarsSinceEntry]-PriceScale);
}
if MarketPosition == -1 and count > 1 Then{
ExitShort("SP2",AtLimit,EntryPrice-abs(var1[BarsSinceEntry]-기준선[BarsSinceEntry]));
ExitShort("SL2",AtStop,var1[BarsSinceEntry]+PriceScale);
TL_Delete(value1);
value1 = TL_New(EntryDate,EntryTime,var1[BarsSinceEntry]+PriceScale,sdate,stime,var1[BarsSinceEntry]+PriceScale);
}
5.
수식을 문의하신때 그림으로 봉만 지정하시면 저희쪽에서 답변을 드릴 방법이 없습니다.
특정 값을 이용하시면 해당 값을 게산할수 있는 명확한 조건이나 계산방법을 같이 올려주시기 바랍니다
즐거운 하루되세요
> 쿠루드 님이 쓴 글입니다.
> 제목 : 재문의 드립니다.
> 안녕하세요.
29690번 답글에 재문의 드렸습니다.
답변 부탁드릴게요.
감사합니다.^^