커뮤니티
질문있습니다
2010-06-30 16:59:01
755
글번호 30692
Input: Capital(1000000000), alpha(10), beta(2), Unit(1);
Var: NN(0), TotalCapital(0), diff(0), Unit2(0);
diff = high - Low;
Condition1 = Open[1] > Low[1] + diff * 0.8;
Condition3 = Close[0] < low[1] + diff * 0.2;
Condition5 = open[0] < low[1] - alpha * Ticks;
Condition2 = Open[0] < low[1] + diff * 0.2;
Condition4 = close[1] > low[1] + diff * 0.8;
Condition6 = open[0] > high[1] + alpha * Ticks;
condition7 = condition1 && Condition3 && Condition5;
Condition8 = condition2 && Condition4 && Condition6;
If Condition7 == True and condition8 == false Then Buy("매수", Atstop, LowD[1], unit);
If Condition8 == True and condition7 == false then Sell("매도", Atstop, HighD[1], unit);
If MarketPosition < 0 Then
{
ExitLong("손절매 매수청산", Atstop, LowD);
Exitlong("추적 매수청산", Atstop, Highest(high, BarsSinceEntry + 1) - beta * Ticks);
}
if MarketPosition < 0 Then
{
ExitShort("손절매 매도청산", Atstop, HighD);
Exitshort("추적 매도청산", Atstop, Lowest(low, BarsSinceEntry + 1) + beta * Ticks);
}
If date[1] <> date Then
{
Exitlong("종가 매수청산", Onclose);
Exitshort("종가 매도청산", Onclose);
}
이렇게 작성했는데요..
오류로 "외부함수의 입력값이 1개 필요합니다"
라고 나옵니다.. 아마 LowD, HighD 를 의미하는거 같은데..
input: HighD(Numeric), lowD(Numeric);
으로 썼더니
"함수의 입력변수 선언시에만 쓸 수 있습니다"
라고 나오네요 ㅠㅠ
제가 사용자함수를 쓰는 법을 잘 모르겠는데..
어떻게 쓰는지좀 가르쳐주시면 감사하겠습니다
답변 2
캐빈이야
2010-06-30 23:41:17
LowD는 일기준으로 저가를 가져오는 값으로 당일인지, 전날인지 값을 꼭 넣어줘야 합니다.
LowD(0) = 당일 저가
LowD(1) = 전날 저가
LowD(2) = 전전날 저가
HighD(0) = 당일 고가
HighD(1) = 전날 고가
HighD(2) = 전전날 고가
이렇게 바꾸시면 되고 input으로 LowD,HighD 설정을 빼셔야 합니다. LowD자체가 함수이므로 사용할수 없습니다.
LowD -- > LowD(0)
HighD -- > HighD(0)
> 구구주녀 님이 쓴 글입니다.
> 제목 : 질문있습니다
>
Input: Capital(1000000000), alpha(10), beta(2), Unit(1);
Var: NN(0), TotalCapital(0), diff(0), Unit2(0);
diff = high - Low;
Condition1 = Open[1] > Low[1] + diff * 0.8;
Condition3 = Close[0] < low[1] + diff * 0.2;
Condition5 = open[0] < low[1] - alpha * Ticks;
Condition2 = Open[0] < low[1] + diff * 0.2;
Condition4 = close[1] > low[1] + diff * 0.8;
Condition6 = open[0] > high[1] + alpha * Ticks;
condition7 = condition1 && Condition3 && Condition5;
Condition8 = condition2 && Condition4 && Condition6;
If Condition7 == True and condition8 == false Then Buy("매수", Atstop, LowD[1], unit);
If Condition8 == True and condition7 == false then Sell("매도", Atstop, HighD[1], unit);
If MarketPosition < 0 Then
{
ExitLong("손절매 매수청산", Atstop, LowD);
Exitlong("추적 매수청산", Atstop, Highest(high, BarsSinceEntry + 1) - beta * Ticks);
}
if MarketPosition < 0 Then
{
ExitShort("손절매 매도청산", Atstop, HighD);
Exitshort("추적 매도청산", Atstop, Lowest(low, BarsSinceEntry + 1) + beta * Ticks);
}
If date[1] <> date Then
{
Exitlong("종가 매수청산", Onclose);
Exitshort("종가 매도청산", Onclose);
}
이렇게 작성했는데요..
오류로 "외부함수의 입력값이 1개 필요합니다"
라고 나옵니다.. 아마 LowD, HighD 를 의미하는거 같은데..
input: HighD(Numeric), lowD(Numeric);
으로 썼더니
"함수의 입력변수 선언시에만 쓸 수 있습니다"
라고 나오네요 ㅠㅠ
제가 사용자함수를 쓰는 법을 잘 모르겠는데..
어떻게 쓰는지좀 가르쳐주시면 감사하겠습니다
예스스탁 예스스탁 답변
2010-07-01 09:18:22
안녕하세요
예스스탁입니다.
Input: Capital(1000000000), alpha(10), beta(2), Unit(1);
Var: NN(0), TotalCapital(0), diff(0), Unit2(0);
diff = high - Low;
Condition1 = Open[1] > Low[1] + diff * 0.8;
Condition3 = Close[0] < low[1] + diff * 0.2;
Condition5 = open[0] < low[1] - alpha * Ticks;
Condition2 = Open[0] < low[1] + diff * 0.2;
Condition4 = close[1] > low[1] + diff * 0.8;
Condition6 = open[0] > high[1] + alpha * Ticks;
condition7 = condition1 && Condition3 && Condition5;
Condition8 = condition2 && Condition4 && Condition6;
If Condition7 == True and condition8 == false Then Buy("매수", Atstop, LowD(1), unit);
If Condition8 == True and condition7 == false then Sell("매도", Atstop, HighD(1), unit);
If MarketPosition < 0 Then
{
ExitLong("손절매 매수청산", Atstop, LowD(0));
Exitlong("추적 매수청산", Atstop, Highest(high, BarsSinceEntry + 1) - beta * Ticks);
}
if MarketPosition < 0 Then
{
ExitShort("손절매 매도청산", Atstop, HighD(0));
Exitshort("추적 매도청산", Atstop, Lowest(low, BarsSinceEntry + 1) + beta * Ticks);
}
If date[1] <> date Then
{
Exitlong("종가 매수청산", Onclose);
Exitshort("종가 매도청산", Onclose);
}
Opnd,HighD,LowD,CloseD함수는
당일값은 (0), 전일은 (1), 전전일은(2)로 작성하셔야 합니다.
만약
HighD[1]와 같이 작성하시면 전봉기준 당일최고값이라는
내용이 되므로 작성시 유의하시기 바랍니다.
즐거운 하루되세요
> 구구주녀 님이 쓴 글입니다.
> 제목 : 질문있습니다
>
Input: Capital(1000000000), alpha(10), beta(2), Unit(1);
Var: NN(0), TotalCapital(0), diff(0), Unit2(0);
diff = high - Low;
Condition1 = Open[1] > Low[1] + diff * 0.8;
Condition3 = Close[0] < low[1] + diff * 0.2;
Condition5 = open[0] < low[1] - alpha * Ticks;
Condition2 = Open[0] < low[1] + diff * 0.2;
Condition4 = close[1] > low[1] + diff * 0.8;
Condition6 = open[0] > high[1] + alpha * Ticks;
condition7 = condition1 && Condition3 && Condition5;
Condition8 = condition2 && Condition4 && Condition6;
If Condition7 == True and condition8 == false Then Buy("매수", Atstop, LowD[1], unit);
If Condition8 == True and condition7 == false then Sell("매도", Atstop, HighD[1], unit);
If MarketPosition < 0 Then
{
ExitLong("손절매 매수청산", Atstop, LowD);
Exitlong("추적 매수청산", Atstop, Highest(high, BarsSinceEntry + 1) - beta * Ticks);
}
if MarketPosition < 0 Then
{
ExitShort("손절매 매도청산", Atstop, HighD);
Exitshort("추적 매도청산", Atstop, Lowest(low, BarsSinceEntry + 1) + beta * Ticks);
}
If date[1] <> date Then
{
Exitlong("종가 매수청산", Onclose);
Exitshort("종가 매도청산", Onclose);
}
이렇게 작성했는데요..
오류로 "외부함수의 입력값이 1개 필요합니다"
라고 나옵니다.. 아마 LowD, HighD 를 의미하는거 같은데..
input: HighD(Numeric), lowD(Numeric);
으로 썼더니
"함수의 입력변수 선언시에만 쓸 수 있습니다"
라고 나오네요 ㅠㅠ
제가 사용자함수를 쓰는 법을 잘 모르겠는데..
어떻게 쓰는지좀 가르쳐주시면 감사하겠습니다