커뮤니티
IsEntryname 함수 문의
2005-05-20 10:21:27
1522
글번호 7432
안녕하세요 수고하십니다. 3514번시스템 추가 질문에 답이 없으셔서 다시한번 문의 드립니다. 일단 좋은 답변을 주셨는데,청산 부분에서 제가 원하는 답이 안나오는것 같습니다.
시스템식에서 제가 의도하는 바는 추가 진입후에는 청산적략또한 다르게 가져가고 싶습니다.(profittarget)
시스템 식 적용결과 청산전략이 따로적용되는 사례가 없는거 같습니다.
코딩논리상에서는 marketposition()==1 and is Entryname("매수1") 이런식으로 하면 집입에 대한 청산이 이루어져야 할것같은데.. 어디가 잘못됐는지 바로 잡아 주시기 바랍니다.
/그림 설명
그림1 :marketposition()==1 and is Entryname("매수1")로 청산을지정
그림2 : marketposition()==1 and is Entryname("매수1") 와 내장함수
Setprofittarget함수로 이익확정
그림3 : 별도의 논리판단으로 청산 결정
==> 현재 저의 짧은 소견으논 함수가 문제가있지 않나 싶기도하지만, 명쾌한 답변기다립니다.
///////////////////////시스템 식
//////////////////////////////////////////////////////////////////////////////
Input : shortPeriod(12), longPeriod(26), Period(9),profit(0.5);
var: Scnt(0),cnt(0),매수조건1(0),매수조건2(0),매수조건3(0);
Var : value(0) , macdosc(0),MultiContracts(false) ;
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
var1 = marketposition();
if date!=date[1] then {
var2=0;
scnt=0;
cnt=0;
}
매수조건1=crossup(c,ma(c,40));
매수조건2=crossup(value,0);
매수조건3=entryprice()+0.5;
if stime < 150000 then{
if marketposition() == 0 and 매수조건1 and var2< 2 then {
buy("매수1",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 0 and 매수조건2 and var2 < 2 then {
buy("매수2",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 1 and 매수조건3 and var2 == 1 and cnt<1 then{
buy("매수3",c);
cnt=cnt+1;
MultiContracts=true;
}
}
if var1[1] == 0 and var1 == 1 then // 전포지션이 없고,현재 포지션이 매수라면 누적하라
var2 = var2+1;
//청산
If marketposition() == 1 and (isEntryname("매수1") or isentryname("매수2")) Then {
exitlong("청산1",Atstop,highest(high,barssinceentry()+1)-atr(20)*3);
}
/*
if marketposition() == 1 and isEntryname("매수3") and c>=Entryprice()+profit then {
Exitlong("청산2",atstop,c);
multiContracts=false;
}
*/
// 내장함수 사용시
if /*marketposition()==1 and isEntryname("매수3") */MultiContracts==true then
SetStopProfittarget(0.5,pointstop);
multiContracts=false;
답변 2
선물투자
2005-05-20 15:16:09
그림1과 2에서의 문제는 포지션이 없는 상태에서 매수진입할때
매수1 또는 매수2가 진입된 후에 매수3이 진입되는 순서가 되게 되면
청산이 나올 수 없게 되어 있는 조건입니다.
왜냐하면.....
포지션이 없는 상태에서 매수1(또는 매수2)로 진입후에 추가로 매수3로 진입할경우
그때의 진입이름은 첫번째 진입의 이름인 "매수1"로 됩되는것 같습니다.
그래서 아래처럼 청산식을 써준 이유입니다.
/////////////////////////////////////////////////////////////////////////////
if marketposition() == 1 and (isEntryname("매수3") or multicontracts) and c>=Entryprice()+profit then {
Exitlong("청산2",atstop,c);
multiContracts=false;
}
/////////////////////////////////////////////////////////////////////////////
하지만 더욱 중요한것이 있는데 entryprice()값입니다.
저 개인적인 생각입니다만
entryprice()값이 적절하지 않은 값이 나올 때가 있는듯 합니다.
print()함수를 통해서 매 분봉마다 entrypirce()값이 실제 진입한것과 다르게 값을 보일때가 있습니다.
(어떤땐 맞고 그렇지 않을때도 있고-저의 실수일수 있으므로 예스스탁에서도 함 확인해보시면 좋을듯)
만약 entryprice()값이 틀리다면 위의식에서
c>=Entryprice()+profit
이부분이 틀리수 있기때문에 적절한 청산이 나오지 않을 수 있다고 생각이 듭니다.
꼭 entryprice()함수를 확인해 주셨음 좋겠네요..(예스스탁에 요청합니다.)
별로 도움이 못되는거 같네요...^^
> 히말라야 님이 쓴 글입니다.
> 제목 : IsEntryname 함수 문의
> 안녕하세요 수고하십니다. 3514번시스템 추가 질문에 답이 없으셔서 다시한번 문의 드립니다. 일단 좋은 답변을 주셨는데,청산 부분에서 제가 원하는 답이 안나오는것 같습니다.
시스템식에서 제가 의도하는 바는 추가 진입후에는 청산적략또한 다르게 가져가고 싶습니다.(profittarget)
시스템 식 적용결과 청산전략이 따로적용되는 사례가 없는거 같습니다.
코딩논리상에서는 marketposition()==1 and is Entryname("매수1") 이런식으로 하면 집입에 대한 청산이 이루어져야 할것같은데.. 어디가 잘못됐는지 바로 잡아 주시기 바랍니다.
/그림 설명
그림1 :marketposition()==1 and is Entryname("매수1")로 청산을지정
그림2 : marketposition()==1 and is Entryname("매수1") 와 내장함수
Setprofittarget함수로 이익확정
그림3 : 별도의 논리판단으로 청산 결정
==> 현재 저의 짧은 소견으논 함수가 문제가있지 않나 싶기도하지만, 명쾌한 답변기다립니다.
///////////////////////시스템 식
//////////////////////////////////////////////////////////////////////////////
Input : shortPeriod(12), longPeriod(26), Period(9),profit(0.5);
var: Scnt(0),cnt(0),매수조건1(0),매수조건2(0),매수조건3(0);
Var : value(0) , macdosc(0),MultiContracts(false) ;
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
var1 = marketposition();
if date!=date[1] then {
var2=0;
scnt=0;
cnt=0;
}
매수조건1=crossup(c,ma(c,40));
매수조건2=crossup(value,0);
매수조건3=entryprice()+0.5;
if stime < 150000 then{
if marketposition() == 0 and 매수조건1 and var2< 2 then {
buy("매수1",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 0 and 매수조건2 and var2 < 2 then {
buy("매수2",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 1 and 매수조건3 and var2 == 1 and cnt<1 then{
buy("매수3",c);
cnt=cnt+1;
MultiContracts=true;
}
}
if var1[1] == 0 and var1 == 1 then // 전포지션이 없고,현재 포지션이 매수라면 누적하라
var2 = var2+1;
//청산
If marketposition() == 1 and (isEntryname("매수1") or isentryname("매수2")) Then {
exitlong("청산1",Atstop,highest(high,barssinceentry()+1)-atr(20)*3);
}
/*
if marketposition() == 1 and isEntryname("매수3") and c>=Entryprice()+profit then {
Exitlong("청산2",atstop,c);
multiContracts=false;
}
*/
// 내장함수 사용시
if /*marketposition()==1 and isEntryname("매수3") */MultiContracts==true then
SetStopProfittarget(0.5,pointstop);
multiContracts=false;
예스스탁 예스스탁 답변
2005-05-20 17:16:36
안녕하세요
예스스탁입니다.
우선 식으로 확이해본 결과 포지션이 관련된 시스템의 함수의 경우에
이상한 점을 발견하지 못했습니다.
피라미딩 진입의 경우 해당포지션에 처음 진입했을때의 값이 entryprice()에 할당되게 됩니다. 즉 포지션의 최초 진입가를 가져옵니다.
그러므로 모든 수익확보를 못하는 이유도 매수2까지 진입했는데
매수 1의 값들을 가져옵니다.
만약 entryprice()값에 이상이 있다고 생각되는 부분이 계시면 전화주시기 바랍니다.
if /*marketposition()==1 and isEntryname("매수3") */MultiContracts==true then {
SetStopProfittarget(0.5,pointstop);
multiContracts=false;
}
MultiContracts==true 일 경우 목표수익 조건이 되지 않은 상황에서
multiContracts=false;가 할당 될수 있습니다.
즉 청산과는 관계없은 if 조건만으로 multiContracts에 false가 할당 될수 있으니
참고하시기 바랍니다.
즐거운 하루되세요
> 히말라야 님이 쓴 글입니다.
> 제목 : IsEntryname 함수 문의
> 안녕하세요 수고하십니다. 3514번시스템 추가 질문에 답이 없으셔서 다시한번 문의 드립니다. 일단 좋은 답변을 주셨는데,청산 부분에서 제가 원하는 답이 안나오는것 같습니다.
시스템식에서 제가 의도하는 바는 추가 진입후에는 청산적략또한 다르게 가져가고 싶습니다.(profittarget)
시스템 식 적용결과 청산전략이 따로적용되는 사례가 없는거 같습니다.
코딩논리상에서는 marketposition()==1 and is Entryname("매수1") 이런식으로 하면 집입에 대한 청산이 이루어져야 할것같은데.. 어디가 잘못됐는지 바로 잡아 주시기 바랍니다.
/그림 설명
그림1 :marketposition()==1 and is Entryname("매수1")로 청산을지정
그림2 : marketposition()==1 and is Entryname("매수1") 와 내장함수
Setprofittarget함수로 이익확정
그림3 : 별도의 논리판단으로 청산 결정
==> 현재 저의 짧은 소견으논 함수가 문제가있지 않나 싶기도하지만, 명쾌한 답변기다립니다.
///////////////////////시스템 식
//////////////////////////////////////////////////////////////////////////////
Input : shortPeriod(12), longPeriod(26), Period(9),profit(0.5);
var: Scnt(0),cnt(0),매수조건1(0),매수조건2(0),매수조건3(0);
Var : value(0) , macdosc(0),MultiContracts(false) ;
value = MACD(shortPeriod, longPeriod);
macdosc = value-ema(value,Period);
var1 = marketposition();
if date!=date[1] then {
var2=0;
scnt=0;
cnt=0;
}
매수조건1=crossup(c,ma(c,40));
매수조건2=crossup(value,0);
매수조건3=entryprice()+0.5;
if stime < 150000 then{
if marketposition() == 0 and 매수조건1 and var2< 2 then {
buy("매수1",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 0 and 매수조건2 and var2 < 2 then {
buy("매수2",atstop,highest(h,3));
multicontracts=false;
}
if marketposition() == 1 and 매수조건3 and var2 == 1 and cnt<1 then{
buy("매수3",c);
cnt=cnt+1;
MultiContracts=true;
}
}
if var1[1] == 0 and var1 == 1 then // 전포지션이 없고,현재 포지션이 매수라면 누적하라
var2 = var2+1;
//청산
If marketposition() == 1 and (isEntryname("매수1") or isentryname("매수2")) Then {
exitlong("청산1",Atstop,highest(high,barssinceentry()+1)-atr(20)*3);
}
/*
if marketposition() == 1 and isEntryname("매수3") and c>=Entryprice()+profit then {
Exitlong("청산2",atstop,c);
multiContracts=false;
}
*/
// 내장함수 사용시
if /*marketposition()==1 and isEntryname("매수3") */MultiContracts==true then
SetStopProfittarget(0.5,pointstop);
multiContracts=false;