커뮤니티
다시 질의 합니다.
2012-07-20 08:52:32
312
글번호 53068
의도한 바와 달라 보충 질의 합니다.
첨부파일차트(그림1 : 120틱차트 / 그림2 : 강제청산시신호 = S 화살표신호)에서 보는바와 같이
1. 신규진입신호와 청산신호의 변수값을 동시에 같은 값으로 설정 하도록 되어 있어서 신규진입신호와 청산신호의 적정값을 구할 수가 없습니다.
2. 강제청산 후에 다음봉에서 바로 동알방향의 신규진입신호가 발생하기 때문에 강제청산의 의미가 없습니다.
따라서 다음과 같이 수정하여 주시면 감사 하겠습니다.
1. 신규진입신호와 청산신호의 시스템 변수 설정을 달리 할 수있도록 수식을 작성 하여주십시요
시스템변수 설정(예시)
변수이름 변수값
신규진입신호
청산진입신호
2. 강제청산 후에는 그 다음 진입조건만족시까지 신호가 발생하지 않도록 하여 주십시요.
(첨부파일의 예시차트는 강제청산을 손절매 0.5pt / 1pt이후 최대가격대비 0.1pt로 설정 한 것임)
관련 시스템수식
input : N(0.2);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
var1 = wma(c,150);
var2 = wma(c,600);
if (var1 > var2 and (crossup(c,var1) or crossup(c,var2))) Then{
if count == 0 then
buy();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and (var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) then
buy();
if count > 0 and MarketPosition == -1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
buy();
if count > 0 and MarketPosition == -1 and (var1 <= var1[BarsSinceentry]+N or var1 >= var1[BarsSinceentry]-N) then
exitshort();
}
if var1 > var2 and count > 0 and BarsSinceExit(1) >= 1 and MarketPosition == 0 and C > var1[BarsSinceExit(1)]+N Then
buy();
if (var1 > var2 and CrossDown(c,var1) or CrossDown(c,var2)) Then
ExitLong();
if (var1 < var2 and (CrossDown(c,var1) or crossdown(c,var2))) Then{
if count == 0 then
sell();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and (var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) then
sell();
if count > 0 and MarketPosition == 1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
sell();
if count > 0 and MarketPosition == 1 and (var1 <= var1[BarsSinceentry]+N or var1 >= var1[BarsSinceentry]-N) then
exitlong();
}
if var1 < var2 and count > 0 and BarsSinceExit(1) >= 1 and MarketPosition == 0 and C < var1[BarsSinceExit(1)]-N Then
sell();
if (var1 < var2 and CrossUp(c,var1) or CrossUp(c,var2)) Then
ExitShort();
- 1. 53429_CurrentChart.jpg (0.42 MB)
- 2. bbb.jpg (0.36 MB)
답변 1
예스스탁 예스스탁 답변
2012-07-20 14:19:22
안녕하세요
예스스탁입니다.
input : N(0.2),X(0.2);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
var1 = wma(c,150);
var2 = wma(c,600);
Condition1 = MarketPosition == 0 and MarketPosition(1) == 1 and EntryDate(1) == sdate and (IsExitName("StopLoss",1) or IsExitName("StopProfittarget",1));
Condition2 = MarketPosition == 0 and MarketPosition(1) == -1 and EntryDate(1) == sdate and (IsExitName("StopLoss",1) or IsExitName("StopProfittarget",1));
if (var1 > var2 and (crossup(c,var1) or crossup(c,var2))) Then{
if count == 0 then
buy();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and
(var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) and
Condition1 == false then
buy();
if count > 0 and MarketPosition == -1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
buy();
if count > 0 and MarketPosition == -1 and (var1 >= var1[BarsSinceentry]+X or var1 <= var1[BarsSinceentry]-X) then
ExitShort();
}
if var1 > var2 and count > 0 and BarsSinceExit(1) >= 1 and
MarketPosition == 0 and C > var1[BarsSinceExit(1)]+N and
Condition1 == false Then
buy();
if (var1 < var2 and (CrossDown(c,var1) or crossdown(c,var2))) Then{
if count == 0 then
sell();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and
(var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) and
Condition2 == false then
sell();
if count > 0 and MarketPosition == 1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
sell();
if count > 0 and MarketPosition == 1 and (var1 >= var1[BarsSinceentry]+X or var1 <= var1[BarsSinceentry]-X) then
ExitLong();
}
if var1 < var2 and count > 0 and BarsSinceExit(1) >= 1 and
MarketPosition == 0 and C < var1[BarsSinceExit(1)]-N and
Condition2 == false Then
sell();
if MarketPosition == 1 and
(var1 >= var1[BarsSinceEntry]+X or var1 <= var1[BarsSinceEntry]-X) and
(var1 > var2 and (CrossDown(c,var1) or CrossDown(c,var2))) Then
ExitLong("bx");
if MarketPosition == 1 and
(var1 >= var1[BarsSinceEntry]+X or var1 <= var1[BarsSinceEntry]-X) and
(var1 < var2 and (CrossUp(c,var1) or CrossUp(c,var2))) Then
ExitShort("sx");
즐거운 하루되세요
> 너무조아 님이 쓴 글입니다.
> 제목 : 다시 질의 합니다.
> 의도한 바와 달라 보충 질의 합니다.
첨부파일차트(그림1 : 120틱차트 / 그림2 : 강제청산시신호 = S 화살표신호)에서 보는바와 같이
1. 신규진입신호와 청산신호의 변수값을 동시에 같은 값으로 설정 하도록 되어 있어서 신규진입신호와 청산신호의 적정값을 구할 수가 없습니다.
2. 강제청산 후에 다음봉에서 바로 동알방향의 신규진입신호가 발생하기 때문에 강제청산의 의미가 없습니다.
따라서 다음과 같이 수정하여 주시면 감사 하겠습니다.
1. 신규진입신호와 청산신호의 시스템 변수 설정을 달리 할 수있도록 수식을 작성 하여주십시요
시스템변수 설정(예시)
변수이름 변수값
신규진입신호
청산진입신호
2. 강제청산 후에는 그 다음 진입조건만족시까지 신호가 발생하지 않도록 하여 주십시요.
(첨부파일의 예시차트는 강제청산을 손절매 0.5pt / 1pt이후 최대가격대비 0.1pt로 설정 한 것임)
관련 시스템수식
input : N(0.2);
var : cnt(0),count(0);
count = 0;
for cnt = 0 to 10{
if sdate == EntryDate(cnt) Then
count = count+1;
}
var1 = wma(c,150);
var2 = wma(c,600);
if (var1 > var2 and (crossup(c,var1) or crossup(c,var2))) Then{
if count == 0 then
buy();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and (var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) then
buy();
if count > 0 and MarketPosition == -1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
buy();
if count > 0 and MarketPosition == -1 and (var1 <= var1[BarsSinceentry]+N or var1 >= var1[BarsSinceentry]-N) then
exitshort();
}
if var1 > var2 and count > 0 and BarsSinceExit(1) >= 1 and MarketPosition == 0 and C > var1[BarsSinceExit(1)]+N Then
buy();
if (var1 > var2 and CrossDown(c,var1) or CrossDown(c,var2)) Then
ExitLong();
if (var1 < var2 and (CrossDown(c,var1) or crossdown(c,var2))) Then{
if count == 0 then
sell();
if count > 0 and MarketPosition == 0 and BarsSinceExit(1) >= 1 and (var1 >= var1[BarsSinceExit(1)]+N or var1 <= var1[BarsSinceExit(1)]-N) then
sell();
if count > 0 and MarketPosition == 1 and (var1 >= var1[BarsSinceentry]+N or var1 <= var1[BarsSinceentry]-N) then
sell();
if count > 0 and MarketPosition == 1 and (var1 <= var1[BarsSinceentry]+N or var1 >= var1[BarsSinceentry]-N) then
exitlong();
}
if var1 < var2 and count > 0 and BarsSinceExit(1) >= 1 and MarketPosition == 0 and C < var1[BarsSinceExit(1)]-N Then
sell();
if (var1 < var2 and CrossUp(c,var1) or CrossUp(c,var2)) Then
ExitShort();