커뮤니티
문의 드립니다.
2011-11-18 17:33:03
516
글번호 44941
빠른 답변 고맙습니다.
if MarketPosition == 1 Then{
if CurrentEntries == 1 and CurrentEntries[1] != CurrentEntries Then{
var81 = C[1];
var82 = H;
}
if maxEntries >= 1 Then{
if H > var82 Then
var82 = H;
ExitLong("bx4_1",AtStop,var82*0.99,"b1",1,1);
ExitLong("bx5_1",AtStop,var81*0.99,"b1",1,1);
}
상기 부분만 조금 설명 부탁드립니다.
그리고 C가 아닌 C[1]값을 넣은 이유는 무엇인가요?
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의 드립니다.
> 안녕하세요
예스스탁입니다.
1.
비슷한 개념이지만 다른식입니다.
1번은 현재 미완성봉에서 최고가대비 1%하락한 시세가 발생하면 즉시 체결되지만
2번식는 봉완성기준으로 종가가 최고가대비 1%하락한 종가가 발생하고
해당 봉가보다 다음봉의 시세중에 낮은게 있어야 청산됩니다.
2.
value2 = 0;
for value1 = 0 to 10{
if EntryDate(value1) == sdate Then
value2 = value2+1;
}
var1 = ma(c,60);
var2 = macd(12,26);
var3 = ma(c,5);
var4 = ma(c,20);
Condition1 = ExitDate(1) == sdate and (IsExitName("bx4",1) or IsExitName("bx5",1));
if value2 < 6 and Condition1 == false Then{
if var1 > var1[1] and var1[1] < var1[2] Then
buy("b1",OnClose,def,1);
if crossup(var2,0) Then
buy("b2",OnClose,def,1);
if crossup(var3,var4) Then
buy("b3",OnClose,def,1);
}
if var1 < var1[1] and var1[1] < var1[2] Then
ExitLong("bx1",OnClose,def,"b1",1,1);
if CrossDown(var2,0) Then
ExitLong("bx2",OnClose,def,"b2",1,1);
if CrossDown(var3,var4) Then
ExitLong("bx3",OnClose,def,"b3",1,1);
if MarketPosition == 1 Then{
if CurrentEntries == 1 and CurrentEntries[1] != CurrentEntries Then{
var81 = C[1];
var82 = H;
}
if maxEntries >= 1 Then{
if H > var82 Then
var82 = H;
ExitLong("bx4_1",AtStop,var82*0.99,"b1",1,1);
ExitLong("bx5_1",AtStop,var81*0.99,"b1",1,1);
}
if CurrentEntries == 2 and CurrentEntries[1] != CurrentEntries Then{
var83 = C[1];
var84 = H;
}
if maxEntries >= 2 Then{
if H > var84 Then
var84 = H;
ExitLong("bx4_2",AtStop,var84*0.99,"b2",1,1);
ExitLong("bx5_2",AtStop,var83*0.99,"b2",1,1);
}
if CurrentEntries == 3 and CurrentEntries[1] != CurrentEntries Then{
var85 = C[1];
var86 = H;
}
if maxEntries >= 3 Then{
if H > var86 Then
var86 = H;
ExitLong("bx4_3",AtStop,var86*0.99,"b3",1,1);
ExitLong("bx5_3",AtStop,var85*0.99,"b3",1,1);
}
}
즐거운 하루되세요
> 아틀라스 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
> 수고가 많으십니다
(1식) if MarketPosition == 1 and c < Highest(H,BarsSinceEntry)*0.99 then
ExitLong("bx",AtStop,c);
(2식) if MarketPosition == 1 Then
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)*0.99);
상기 1식과 2식은 같은 수식인지 궁금합니다.
그리고 onclose로 진입하는 경우에는 진입가격을 따로 할당하여
사용하면 되지 않나요? 아래식을 진입가격 및 최고가을 할당하여 수익실현과 손절매 수식을 부탁드립니다.(BarsSinceEntry와 EntryPrice대신에 적용)
SetStopTrailing(1,0.00001,PercentStop,1);
SetStopLoss(1);
상기 식을 사용하여 아래 식을 수정해 주시면 도움이 되겠습니다.
상기 식을 사용하면 추가 적인 조건등은 사용할 수 없나요?
감사합니다.
value2 = 0;
for value1 = 0 to 10{
if EntryDate(value1) == sdate Then
value2 = value2+1;
}
var1 = ma(c,60);
var2 = macd(12,26);
var3 = ma(c,5);
var4 = ma(c,20);
Condition1 = ExitDate(1) == sdate and (IsExitName("bx4",1) or IsExitName("bx5",1));
if value2 < 6 and Condition1 == false Then{
if var1 > var1[1] and var1[1] < var1[2] Then
buy("b1",OnClose,def,1);
if crossup(var2,0) Then
buy("b2",OnClose,def,1);
if crossup(var3,var4) Then
buy("b3",OnClose,def,1);
}
if var1 < var1[1] and var1[1] < var1[2] Then
ExitLong("bx1",OnClose,def,"b1",1,1);
if CrossDown(var2,0) Then
ExitLong("bx2",OnClose,def,"b2",1,1);
if CrossDown(var3,var4) Then
ExitLong("bx3",OnClose,def,"b3",1,1);
if MarketPosition == 1 Then{
ExitLong("bx4",AtStop,Highest(H,BarsSinceEntry)*0.99);
ExitLong("bx5",AtStop,EntryPrice*0.99);
}
답변 1
예스스탁 예스스탁 답변
2011-11-21 09:02:17
안녕하세요
예스스탁입니다.
onclose타입은 신호가 난 봉의 종가를 진입가격 사용하고
다음봉 시초가부터 CurrentEntries 값이 변경됩니다.
그러므로 진입가격을 C[1]로 지정한 것입니다.
if MarketPosition == 1 Then{#if문 1번
if CurrentEntries == 1 and CurrentEntries[1] != CurrentEntries Then{#if문 2번
var81 = C[1];
var82 = H;
}
if maxEntries >= 1 Then{#if문 3번
if H > var82 Then #if문 4번
var82 = H;
ExitLong("bx4_1",AtStop,var82*0.99,"b1",1,1);
ExitLong("bx5_1",AtStop,var81*0.99,"b1",1,1);
}
1번 if문
매수포지션에 들어가고
2번 if문
현재 진입횟수가 1이고 직전봉은 1이 아니면(첫진입발생)
전봉의 종가를 저장하고(진입가)
진입이후의 최고가를 계산하기 위한 초기값으로
현재봉의 고가를 저장합니다.
3번 if문
현재 진입이후 최대 진입횟수가 1이상인 상태에서
4번 if문
발생하는 고가들중에 최고가를 계산하고
해당 최고가에서 1% 하락하면 청산
진입가에서 1% 하락하면 청산
입니다.
즐거운 하루되세요
> 아틀라스 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
> 빠른 답변 고맙습니다.
if MarketPosition == 1 Then{
if CurrentEntries == 1 and CurrentEntries[1] != CurrentEntries Then{
var81 = C[1];
var82 = H;
}
if maxEntries >= 1 Then{
if H > var82 Then
var82 = H;
ExitLong("bx4_1",AtStop,var82*0.99,"b1",1,1);
ExitLong("bx5_1",AtStop,var81*0.99,"b1",1,1);
}
상기 부분만 조금 설명 부탁드립니다.
그리고 C가 아닌 C[1]값을 넣은 이유는 무엇인가요?
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 문의 드립니다.
> 안녕하세요
예스스탁입니다.
1.
비슷한 개념이지만 다른식입니다.
1번은 현재 미완성봉에서 최고가대비 1%하락한 시세가 발생하면 즉시 체결되지만
2번식는 봉완성기준으로 종가가 최고가대비 1%하락한 종가가 발생하고
해당 봉가보다 다음봉의 시세중에 낮은게 있어야 청산됩니다.
2.
value2 = 0;
for value1 = 0 to 10{
if EntryDate(value1) == sdate Then
value2 = value2+1;
}
var1 = ma(c,60);
var2 = macd(12,26);
var3 = ma(c,5);
var4 = ma(c,20);
Condition1 = ExitDate(1) == sdate and (IsExitName("bx4",1) or IsExitName("bx5",1));
if value2 < 6 and Condition1 == false Then{
if var1 > var1[1] and var1[1] < var1[2] Then
buy("b1",OnClose,def,1);
if crossup(var2,0) Then
buy("b2",OnClose,def,1);
if crossup(var3,var4) Then
buy("b3",OnClose,def,1);
}
if var1 < var1[1] and var1[1] < var1[2] Then
ExitLong("bx1",OnClose,def,"b1",1,1);
if CrossDown(var2,0) Then
ExitLong("bx2",OnClose,def,"b2",1,1);
if CrossDown(var3,var4) Then
ExitLong("bx3",OnClose,def,"b3",1,1);
if MarketPosition == 1 Then{
if CurrentEntries == 1 and CurrentEntries[1] != CurrentEntries Then{
var81 = C[1];
var82 = H;
}
if maxEntries >= 1 Then{
if H > var82 Then
var82 = H;
ExitLong("bx4_1",AtStop,var82*0.99,"b1",1,1);
ExitLong("bx5_1",AtStop,var81*0.99,"b1",1,1);
}
if CurrentEntries == 2 and CurrentEntries[1] != CurrentEntries Then{
var83 = C[1];
var84 = H;
}
if maxEntries >= 2 Then{
if H > var84 Then
var84 = H;
ExitLong("bx4_2",AtStop,var84*0.99,"b2",1,1);
ExitLong("bx5_2",AtStop,var83*0.99,"b2",1,1);
}
if CurrentEntries == 3 and CurrentEntries[1] != CurrentEntries Then{
var85 = C[1];
var86 = H;
}
if maxEntries >= 3 Then{
if H > var86 Then
var86 = H;
ExitLong("bx4_3",AtStop,var86*0.99,"b3",1,1);
ExitLong("bx5_3",AtStop,var85*0.99,"b3",1,1);
}
}
즐거운 하루되세요
> 아틀라스 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
> 수고가 많으십니다
(1식) if MarketPosition == 1 and c < Highest(H,BarsSinceEntry)*0.99 then
ExitLong("bx",AtStop,c);
(2식) if MarketPosition == 1 Then
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)*0.99);
상기 1식과 2식은 같은 수식인지 궁금합니다.
그리고 onclose로 진입하는 경우에는 진입가격을 따로 할당하여
사용하면 되지 않나요? 아래식을 진입가격 및 최고가을 할당하여 수익실현과 손절매 수식을 부탁드립니다.(BarsSinceEntry와 EntryPrice대신에 적용)
SetStopTrailing(1,0.00001,PercentStop,1);
SetStopLoss(1);
상기 식을 사용하여 아래 식을 수정해 주시면 도움이 되겠습니다.
상기 식을 사용하면 추가 적인 조건등은 사용할 수 없나요?
감사합니다.
value2 = 0;
for value1 = 0 to 10{
if EntryDate(value1) == sdate Then
value2 = value2+1;
}
var1 = ma(c,60);
var2 = macd(12,26);
var3 = ma(c,5);
var4 = ma(c,20);
Condition1 = ExitDate(1) == sdate and (IsExitName("bx4",1) or IsExitName("bx5",1));
if value2 < 6 and Condition1 == false Then{
if var1 > var1[1] and var1[1] < var1[2] Then
buy("b1",OnClose,def,1);
if crossup(var2,0) Then
buy("b2",OnClose,def,1);
if crossup(var3,var4) Then
buy("b3",OnClose,def,1);
}
if var1 < var1[1] and var1[1] < var1[2] Then
ExitLong("bx1",OnClose,def,"b1",1,1);
if CrossDown(var2,0) Then
ExitLong("bx2",OnClose,def,"b2",1,1);
if CrossDown(var3,var4) Then
ExitLong("bx3",OnClose,def,"b3",1,1);
if MarketPosition == 1 Then{
ExitLong("bx4",AtStop,Highest(H,BarsSinceEntry)*0.99);
ExitLong("bx5",AtStop,EntryPrice*0.99);
}
다음글
이전글