커뮤니티
문의드립니다
2011-03-14 18:27:05
764
글번호 36549
좋은 프로그램 항상 감사드립니다.
선물 분봉에서 다음과 같은 식을 사용할 때요
c1 = 0 ;
for cnt = 0 to 10 {
if sdate == EntryDate(cnt) Then{
if IsEntryName("매수1",cnt)==true or IsEntryName("매도1",cnt)==true or IsEntryName("매수2",cnt)==true or IsEntryName("매도2",cnt)==true
or IsEntryName("매수3",cnt)==true or IsEntryName("매도3",cnt) == true Then{c1 = c1+1;}
If c1 < 1 and dayindex > 0 Then {
If 조건1 Then Buy("매수1");
If 조건2 Then Buy("매수2");
If 조건3 Then Sell("매도2");
if 조건4 then buy("매수3");
if 조건5 then sell("매도3");}
SetStopEndofday(1445);
조건을 만족했을때 종가에 매수와 매도가 바로 들어가지 않고 종가보다 1포인트가 떨어지거나 올랐을때 atlimit으로 매수나 매도를 하고 싶슾니다 그리고 만약 조건을 만족했더라도 하루가 끝나도록 atlimit주문이 안나가면 무효가 되게 하고 싶습니다.
위 식을 어떻게 변형시켜야 하나요,
if 조건 then var1=c; buy("매수1",atlimit,var1-1);
이런 식으로 변형했더니 문제가 생기네요
하루에 한번만 주문이 나가길 원하는데 세번째 분봉에 주문이 무더기로 나오네요
도움 좀 부탁드리겠습니다.
답변 2
예스스탁 예스스탁 답변
2011-03-14 18:59:35
안녕하세요
예스스탁입니다.
작성하신 내용에 큰 문제는 없어 보입니다.
다만 당일 진입횟수는 다른 이름의 진입이 없다면
아래와 같이 간단히 작성하셔도 됩니다.
var : cnt(0),C1(0);
c1 = 0 ;
for cnt = 0 to 10 {
if sdate == EntryDate(cnt) Then
c1 = c1+1;
}
If c1 < 1 and dayindex > 0 Then {
If 조건1 Then Buy("매수1");
If 조건2 Then Buy("매수2");
If 조건3 Then Sell("매도2");
if 조건4 then buy("매수3");
if 조건5 then sell("매도3");
}
SetStopEndofday(1445);
위식으로 조건1~5를 각각 적용해서 테스트결과
하루에 한번만 진입신호가 발생합니다.
말씀하신 것처럼 하나의 봉에서 여러 신호가 발생한다면
설정한 각 조건이 하나의 봉에서 동시에 만족하기 때문입니다.
이는 매수조건과 매도조건이 겹쳐지는게 있는지 확인하실 필요가 있습니다.
atlimit이나 atstop을 사용해도 해당 내용은 마찬가지 입니다.
두 타입모두 현재봉에서 조건만족하면 가격을 셋팅하여
다음봉의 시세를 감시하므로 해당 부분을 제어하시기 위해서는 따로 조건이 필요합니다.
아래와 같은 식을 이용해 보시기 바랍니다.
var : cnt(0),C1(0),xx(0);
c1 = 0 ;
for cnt = 0 to 10 {
if sdate == EntryDate(cnt) Then
c1 = c1+1;
}
XX = 0;
If c1 < 1 and dayindex > 0 and MarketPosition == 0 Then {
If 조건1 and XX == 0 Then{
Buy("매수1",atlimit,c-1);
XX = 1;
}
If 조건2 and XX == 0 Then{
Buy("매수2",atlimit,c-1);
XX = 1;
}
If 조건3 and XX == 0 Then{
Sell("매도2",atlimit,c+1);
XX = 1;
}
if 조건4 and XX == 0 then{
buy("매수3",atlimit,c-1);
XX = 1;
}
if 조건5 and XX == 0 then{
sell("매도3",atlimit,c+1);
XX = 1;
}
}
SetStopEndofday(1445);
동일하게 조건이 만족할 경우 코딩상 제일 상단의 내용만 만족하게 됩니다.
즐거운 하루되세요
> alswoxod 님이 쓴 글입니다.
> 제목 : 문의드립니다
> 좋은 프로그램 항상 감사드립니다.
선물 분봉에서 다음과 같은 식을 사용할 때요
c1 = 0 ;
for cnt = 0 to 10 {
if sdate == EntryDate(cnt) Then{
if IsEntryName("매수1",cnt)==true or IsEntryName("매도1",cnt)==true or IsEntryName("매수2",cnt)==true or IsEntryName("매도2",cnt)==true
or IsEntryName("매수3",cnt)==true or IsEntryName("매도3",cnt) == true Then{c1 = c1+1;}
If c1 < 1 and dayindex > 0 Then {
If 조건1 Then Buy("매수1");
If 조건2 Then Buy("매수2");
If 조건3 Then Sell("매도2");
if 조건4 then buy("매수3");
if 조건5 then sell("매도3");}
SetStopEndofday(1445);
조건을 만족했을때 종가에 매수와 매도가 바로 들어가지 않고 종가보다 1포인트가 떨어지거나 올랐을때 atlimit으로 매수나 매도를 하고 싶슾니다 그리고 만약 조건을 만족했더라도 하루가 끝나도록 atlimit주문이 안나가면 무효가 되게 하고 싶습니다.
위 식을 어떻게 변형시켜야 하나요,
if 조건 then var1=c; buy("매수1",atlimit,var1-1);
이런 식으로 변형했더니 문제가 생기네요
하루에 한번만 주문이 나가길 원하는데 세번째 분봉에 주문이 무더기로 나오네요
도움 좀 부탁드리겠습니다.
alswoxod
2011-03-14 20:19:06
alswoxod 님에 의해 삭제된 답변입니다.
다음글