커뮤니티
문의드립니다.
2019-05-13 01:20:33
192
글번호 128610
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
앞의 재질문 답변 부탁드립니다.
2. 시스템
예전에 띠봉선생님 글 보고 생각해본 건데요. 이렇게도 되나요?
-진입할 지 말지 랜덤으로 정함.
-매수 매도도 랜덤으로 정함.
-진입은 장개시후 즉시진입
-트레일링스탑을 할 지 말지도 랜덤으로 정함.
3. 지표
당일 종가(Dayclose)와 당일시가(dayopen)로 만든 역사적 변동성 지표 부탁드립니다.
원래는 당일종가와 전일종가로 구하는 걸로 알고 있는데요.
4. 기타
셋업
-일봉 5이평 이격이 120 이상일 때 고가 셋업
진입
-a: 셋업봉 + 50 틱에서 즉시 매도
추가진입
-b: 진입가에서 50틱이 더 올랐으면 추가매도 (물타기)
-c: 또 50틱 오르면 추가매도
-d: 또 50틱 오르면 추가매도(총 3회 물타기)
청산
-5일선 하향 돌파시 Atstop 청산(분봉상 한개 전 봉 5일선 값 터치하면 청산해주시면 될 것 같습니다.)
*a,b,c,d 중 어느 한 때라도 5일선 도달했으면 포지션 모두 청산함.
*포지션의 손실이 시뮬상 수익금액의 n%(외부변수)가 되면 모두 청산.
5. 기타
4번과 모든 조건은 같고
*포지션의 손실이 시뮬상 수익금액의 n%(외부변수)가 되면 모두 청산.←
이 부분을 시뮬상 일 최대수익의 n%로
답변 1
예스스탁 예스스탁 답변
2019-05-14 14:05:11
안녕하세요
예스스탁입니다.
1
3번, 4번식 다시 올려드립니다.
3
input: ATR기간(3),ATR곱셈(3),n(5),당일진입횟수(2);
var : 매수단위(0),투입금액(0),ATRV(0),count(0),HH(0);
var : vol(0);
ATRV = atr(ATR기간);
매수단위 = 1;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10
{
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
#당일첫번째 진입(기존조건으로 진입)
if MarketPosition <= 0 and Count == 0 and NextBarSdate == sdate then
buy("b1",AtStop,dayopen + n * PriceScale, 매수단위);
#당일 두번째 진입부터 당일 N번째 진입까지
#직전 매수거래의 최고가 아래에서 가격이 상승해 최고가 이상의 시세 발생시 매수진입
if MarketPosition <= 0 and Count >= 1 and Count < 당일진입횟수
and stime > 100000 and H < HH + n * PriceScale and PositionProfit(1) >= 0 and NextBarSdate == sdate then
{
buy("b2",AtStop, HH + n * PriceScale, 매수단위);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 2 Then
vol = 매수단위*2;
else if MaxEntries >= 3 Then
vol = vol+1;
Else
vol = 매수단위;
}
//진입이후 최고가
HH = highest(H,BarsSinceEntry);
if NextBarSdate == sdate Then
buy("bb",AtStop,LatestEntryPrice(0)+ATR곱셈*ATRV*2 ,vol);
ExitLong("bx2",AtStop,LatestEntryPrice(0)-ATR곱셈*ATRV );
}
4
input: ATR기간(3),ATR곱셈(3),n(5),당일진입횟수(2),Nentry(3),N2(2);
var : 매수단위(0),투입금액(0),ATRV(0),count(0),HH(0);
var : vol(0);
ATRV = atr(ATR기간);
매수단위 = 1;
#진입회수제한
Count = 0 ;
for Value1 = 0 to 10
{
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
#당일첫번째 진입(기존조건으로 진입)
if MarketPosition <= 0 and Count == 0 and NextBarSdate == sdate then
buy("b1",AtStop,dayopen + n * PriceScale, 매수단위);
#당일 두번째 진입부터 당일 N번째 진입까지
#직전 매수거래의 최고가 아래에서 가격이 상승해 최고가 이상의 시세 발생시 매수진입
if MarketPosition <= 0 and Count >= 1 and Count < 당일진입횟수
and stime > 100000 and H < HH + n * PriceScale and PositionProfit(1) >= 0 and NextBarSdate == sdate then
{
buy("b2",AtStop, HH + n * PriceScale, 매수단위);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] then
{
if MaxEntries == Nentry-1 Then
vol = 매수단위*N2;
else if MaxEntries >= Nentry Then
vol = vol+1;
Else
vol = 매수단위;
}
//진입이후 최고가
HH = highest(H,BarsSinceEntry);
if NextBarSdate == sdate Then
buy("bb",AtStop,LatestEntryPrice(0)+ATR곱셈*ATRV*2 ,vol);
ExitLong("bx2",AtStop,LatestEntryPrice(0)-ATR곱셈*ATRV );
}
2
아래 내용 참고해서 수정보완해 사용하시기 바랍니다.
if NextBarSdate != sdate Then
{
var1 = Random(2);
if Random(2) >= 1 Then
buy("b",AtMarket);
Else
sell("s",AtMarket);
}
if MarketPosition == 1 then
{
if MarketPosition[1] != MarketPosition then
{
var2 = Random(2);
if var2 >= 1 Then
Condition1 = true;
Else
Condition1 = false;
}
if Condition1 == true then
{
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*20 Then
ExitLong("bx",AtStop,highest(h,BarsSinceEntry)-PriceScale*10);
}
}
if MarketPosition == -1 then
{
if MarketPosition[1] != MarketPosition then
{
var2 = Random(2);
if var2 >= 1 Then
Condition1 = true;
Else
Condition1 = false;
}
if Condition1 == true then
{
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*20 Then
ExitShort("sx",AtStop,Lowest(L,BarsSinceEntry)+PriceScale*10);
}
}
3
input : N(60);
var : sum(0),cnt(0),mav(0);
sum = 0;
for cnt = 0 to N-1
{
sum = sum + (DayClose(cnt)-dayopen(cnt));
}
mav = sum/N;
plot1(mav,"시종n일평균");
4
input : P(5),loss(5);
var : sum(0),mav(0),cnt(0),dis(0);
sum = 0;
for cnt = 0 to P-1
{
sum = sum + DayClose(cnt);
}
mav = sum/P;
dis = C/mav*100;
if crossup(dis,120) Then
var1 = H;
if MarketPosition <= 0 and var1 > 0 Then
sell("s",atlimit,var1+PriceScale*50);
if MarketPosition == -1 then
{
if MaxEntries < 4 Then
sell("ss",atlimit,LatestEntryPrice(0)+PriceScale*50);
ExitShort("sx1",atlimit,mav);
ExitShort("sx2",atlimit,entryprice*(1+loss/100));
}
5
input : P(5),loss(5);
var : sum(0),mav(0),cnt(0),dis(0);
sum = 0;
for cnt = 0 to P-1
{
sum = sum + DayClose(cnt);
}
mav = sum/P;
dis = C/mav*100;
if crossup(dis,120) Then
var1 = H;
if MarketPosition <= 0 and var1 > 0 Then
sell("s",atlimit,var1+PriceScale*50);
if MarketPosition == -1 then
{
if MaxEntries < 4 Then
sell("ss",atlimit,LatestEntryPrice(0)+PriceScale*50);
ExitShort("sx1",atlimit,mav);
ExitShort("sx2",atlimit,lowest(L,BarsSinceEntry)*(1+loss/100));
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
앞의 재질문 답변 부탁드립니다.
2. 시스템
예전에 띠봉선생님 글 보고 생각해본 건데요. 이렇게도 되나요?
-진입할 지 말지 랜덤으로 정함.
-매수 매도도 랜덤으로 정함.
-진입은 장개시후 즉시진입
-트레일링스탑을 할 지 말지도 랜덤으로 정함.
3. 지표
당일 종가(Dayclose)와 당일시가(dayopen)로 만든 역사적 변동성 지표 부탁드립니다.
원래는 당일종가와 전일종가로 구하는 걸로 알고 있는데요.
4. 기타
셋업
-일봉 5이평 이격이 120 이상일 때 고가 셋업
진입
-a: 셋업봉 + 50 틱에서 즉시 매도
추가진입
-b: 진입가에서 50틱이 더 올랐으면 추가매도 (물타기)
-c: 또 50틱 오르면 추가매도
-d: 또 50틱 오르면 추가매도(총 3회 물타기)
청산
-5일선 하향 돌파시 Atstop 청산(분봉상 한개 전 봉 5일선 값 터치하면 청산해주시면 될 것 같습니다.)
*a,b,c,d 중 어느 한 때라도 5일선 도달했으면 포지션 모두 청산함.
*포지션의 손실이 시뮬상 수익금액의 n%(외부변수)가 되면 모두 청산.
5. 기타
4번과 모든 조건은 같고
*포지션의 손실이 시뮬상 수익금액의 n%(외부변수)가 되면 모두 청산.←
이 부분을 시뮬상 일 최대수익의 n%로
다음글
이전글