커뮤니티
수식 문의
2013-05-28 19:14:54
216
글번호 63679
늘 감사드립니다.
답변 1
예스스탁 예스스탁 답변
2013-05-28 18:56:29
안녕하세요
예스스탁입니다.
1.
식을 잘목 판단했습니다.
사용자분이 지정한 봉수까지의 최고가나 최저가를 리턴하는 식인걸로 판단했습니다.
문의하신 내용과 같이는 출력되게 작성할수 없습니다.
예를 들어 20이동평균을 차트에 그리시면
처음 값이 나오는 것은 차트상 20번째 봉부터입니다.
20이평을 그리기 위해 최소 필요한 봉갯수가 20이기 때문입니다.
문의하신 내용을 작성하고 기간을 100으로 지정하면
차트상 100번재 봉부터는 100개봉의 최고가와 최저가를 리턴하는데
이부분을 함수에 넣게 되면
해당 함수에 필요한 봉갯수가 최소 100개로 산정이 되어
출력 자체가 100개 부터 진행되어 1~99번째 봉까지의 값이 리턴되지가 않습니다.
해당 부분은 모든 수식에 동일하게 적용되게 됩니다.
아래 지표식 적용해 보시면
위식에서 ##1과 ##2 사이를 지우시면
첫봉부터 그려지고 지우지 않고 적용하면
100번째 부터 값이 리턴되는 것을 확인하실 수가 있습니다.
input : N(100);
var : cnt(0);
if index == 0 Then
value1= H;
if index > 0 and index < 100 Then{
if H > value1 Then
value1 = H;
}
##1
if index >= 100 Then{
value1 = H;
for cnt = 0 to N-1{
if H[cnt] > value1 Then
value1 = H[cnt];
}
}
##2
plot1(value1);
2.
input : 투입금액(10000000);
var : VV(0),ww(0),sw1(0),sw2(0),bw1(0),bw2(0),Vol(0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then #기준가 5만원 미만
Vol = int(int(투입금액/C)/10)*10;
Else #5만원 이상
Vol = int(투입금액/C);
}
#kosdoq
if CodeCategory == 2 Then
Vol = int(투입금액/C);
#option
if CodeCategory == 6 or CodeCategory == 8 Then
Vol = int((투입금액)/(C*BigPointValue));
if crossup(vv,90) Then{
sw1 = ww;
Condition1 = true;
}
if MarketPosition == 0 and WW >= sW1*1.10 Then
sell("s",OnClose,def,Vol);
if MarketPosition == -1 Then{
Condition1 = false;
Condition2 = false;
sW2 = WW[BarsSinceEntry];
if MaxEntries == 1 and ww >= sW2*1.10 Then
sell("ss",OnClose,def,vol);
if MaxEntries == 1 and WW <= sW2*0.85 Then
ExitShort("sx1");
if MaxEntries == 2 and WW <= (sW1+sW2)*0.90 Then
ExitShort("sx2");
}
if CrossDown(vv,10) Then{
bw1 = ww;
Condition2 = true;
}
if MarketPosition == 0 and WW >= bW1*0.90 Then
Buy("b",OnClose,def,Vol);
if MarketPosition == 1 Then{
Condition1 = false;
Condition2 = false;
bW2 = WW[BarsSinceEntry];
if MaxEntries == 1 and ww <= bW2*0.90 Then
Buy("bb",OnClose,def,vol);
if MaxEntries == 1 and WW >= bW2*1.15 Then
ExitLong("bx1");
if MaxEntries == 2 and WW >= (sW1+sW2)*1.10 Then
ExitLong("bx2");
}
3.
해당 내용은 청산함수의 갯수가 부족하기 때문입니다.
특정 시점부터 더이상 신호가 안나오면 청산식을 늘려가셔야 합니다.
해당 내용 지표로 보시기는 어렵고 시스템 적용하신 후에
리포트를 보셔야 합니다.
매수
input : Imoney(10000000);
var : vol(0),diff(0),Xcnt(0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
vol = int(int(Imoney/C)/10)*10;
Else
vol = int(Imoney/C);
}
if CodeCategory == 2 Then
vol = int(Imoney/C);
if CodeCategory == 6 or CodeCategory == 8 Then
vol = int((Imoney)/(C*BigPointValue));
if MarketPosition == 0 and stime == 140000 Then
buy("b",OnClose,def,vol);
if MarketPosition == 1 Then{
if CurrentContracts < CurrentContracts[1] Then
Xcnt = Xcnt+1;
if stime == 140000 Then{
var1 = abs(Vol-CurrentContracts);
if vol > CurrentContracts Then
buy("bb",OnClose,def,var1);
if vol < CurrentContracts Then{
if Xcnt == 0 Then ExitLong("bx1",OnClose,def,"",var1,1);
if Xcnt == 1 Then ExitLong("bx2",OnClose,def,"",var1,1);
if Xcnt == 2 Then ExitLong("bx3",OnClose,def,"",var1,1);
if Xcnt == 3 Then ExitLong("bx4",OnClose,def,"",var1,1);
if Xcnt == 4 Then ExitLong("bx5",OnClose,def,"",var1,1);
if Xcnt == 5 Then ExitLong("bx6",OnClose,def,"",var1,1);
if Xcnt == 6 Then ExitLong("bx7",OnClose,def,"",var1,1);
if Xcnt == 7 Then ExitLong("bx8",OnClose,def,"",var1,1);
if Xcnt == 8 Then ExitLong("bx9",OnClose,def,"",var1,1);
if Xcnt == 9 Then ExitLong("bx10",OnClose,def,"",var1,1);
if Xcnt == 10 Then ExitLong("bx11",OnClose,def,"",var1,1);
if Xcnt == 11 Then ExitLong("bx12",OnClose,def,"",var1,1);
if Xcnt == 12 Then ExitLong("bx13",OnClose,def,"",var1,1);
if Xcnt == 13 Then ExitLong("bx14",OnClose,def,"",var1,1);
if Xcnt == 14 Then ExitLong("bx15",OnClose,def,"",var1,1);
if Xcnt == 15 Then ExitLong("bx16",OnClose,def,"",var1,1);
if Xcnt == 16 Then ExitLong("bx17",OnClose,def,"",var1,1);
if Xcnt == 17 Then ExitLong("bx18",OnClose,def,"",var1,1);
if Xcnt == 18 Then ExitLong("bx19",OnClose,def,"",var1,1);
if Xcnt == 19 Then ExitLong("bx20",OnClose,def,"",var1,1);
if Xcnt == 20 Then ExitLong("bx21",OnClose,def,"",var1,1);
if Xcnt == 21 Then ExitLong("bx22",OnClose,def,"",var1,1);
if Xcnt == 22 Then ExitLong("bx23",OnClose,def,"",var1,1);
if Xcnt == 23 Then ExitLong("bx24",OnClose,def,"",var1,1);
if Xcnt == 24 Then ExitLong("bx25",OnClose,def,"",var1,1);
if Xcnt == 25 Then ExitLong("bx26",OnClose,def,"",var1,1);
if Xcnt == 26 Then ExitLong("bx27",OnClose,def,"",var1,1);
if Xcnt == 27 Then ExitLong("bx28",OnClose,def,"",var1,1);
if Xcnt == 28 Then ExitLong("bx29",OnClose,def,"",var1,1);
if Xcnt == 29 Then ExitLong("bx30",OnClose,def,"",var1,1);
if Xcnt == 30 Then ExitLong("bx31",OnClose,def,"",var1,1);
if Xcnt == 31 Then ExitLong("bx32",OnClose,def,"",var1,1);
if Xcnt == 32 Then ExitLong("bx33",OnClose,def,"",var1,1);
if Xcnt == 33 Then ExitLong("bx34",OnClose,def,"",var1,1);
if Xcnt == 34 Then ExitLong("bx35",OnClose,def,"",var1,1);
if Xcnt == 35 Then ExitLong("bx36",OnClose,def,"",var1,1);
if Xcnt == 36 Then ExitLong("bx37",OnClose,def,"",var1,1);
if Xcnt == 37 Then ExitLong("bx38",OnClose,def,"",var1,1);
if Xcnt == 38 Then ExitLong("bx39",OnClose,def,"",var1,1);
if Xcnt == 39 Then ExitLong("bx40",OnClose,def,"",var1,1);
if Xcnt == 40 Then ExitLong("bx41",OnClose,def,"",var1,1);
if Xcnt == 41 Then ExitLong("bx42",OnClose,def,"",var1,1);
if Xcnt == 42 Then ExitLong("bx43",OnClose,def,"",var1,1);
if Xcnt == 43 Then ExitLong("bx44",OnClose,def,"",var1,1);
if Xcnt == 44 Then ExitLong("bx45",OnClose,def,"",var1,1);
if Xcnt == 45 Then ExitLong("bx46",OnClose,def,"",var1,1);
if Xcnt == 46 Then ExitLong("bx47",OnClose,def,"",var1,1);
if Xcnt == 47 Then ExitLong("bx48",OnClose,def,"",var1,1);
if Xcnt == 48 Then ExitLong("bx49",OnClose,def,"",var1,1);
if Xcnt == 49 Then ExitLong("bx50",OnClose,def,"",var1,1);
if Xcnt == 50 Then ExitLong("bx51",OnClose,def,"",var1,1);
if Xcnt == 51 Then ExitLong("bx52",OnClose,def,"",var1,1);
if Xcnt == 52 Then ExitLong("bx53",OnClose,def,"",var1,1);
if Xcnt == 53 Then ExitLong("bx54",OnClose,def,"",var1,1);
if Xcnt == 54 Then ExitLong("bx55",OnClose,def,"",var1,1);
if Xcnt == 55 Then ExitLong("bx56",OnClose,def,"",var1,1);
if Xcnt == 56 Then ExitLong("bx57",OnClose,def,"",var1,1);
if Xcnt == 57 Then ExitLong("bx58",OnClose,def,"",var1,1);
if Xcnt == 58 Then ExitLong("bx59",OnClose,def,"",var1,1);
if Xcnt == 60 Then ExitLong("bx60",OnClose,def,"",var1,1);
if Xcnt == 60 Then ExitLong("bx61",OnClose,def,"",var1,1);
if Xcnt == 61 Then ExitLong("bx62",OnClose,def,"",var1,1);
if Xcnt == 62 Then ExitLong("bx63",OnClose,def,"",var1,1);
if Xcnt == 63 Then ExitLong("bx64",OnClose,def,"",var1,1);
if Xcnt == 64 Then ExitLong("bx65",OnClose,def,"",var1,1);
if Xcnt == 65 Then ExitLong("bx66",OnClose,def,"",var1,1);
if Xcnt == 66 Then ExitLong("bx67",OnClose,def,"",var1,1);
if Xcnt == 67 Then ExitLong("bx68",OnClose,def,"",var1,1);
if Xcnt == 68 Then ExitLong("bx69",OnClose,def,"",var1,1);
if Xcnt == 69 Then ExitLong("bx70",OnClose,def,"",var1,1);
if Xcnt == 70 Then ExitLong("bx71",OnClose,def,"",var1,1);
if Xcnt == 71 Then ExitLong("bx72",OnClose,def,"",var1,1);
if Xcnt == 72 Then ExitLong("bx73",OnClose,def,"",var1,1);
if Xcnt == 73 Then ExitLong("bx74",OnClose,def,"",var1,1);
if Xcnt == 74 Then ExitLong("bx75",OnClose,def,"",var1,1);
if Xcnt == 75 Then ExitLong("bx76",OnClose,def,"",var1,1);
if Xcnt == 76 Then ExitLong("bx77",OnClose,def,"",var1,1);
if Xcnt == 77 Then ExitLong("bx78",OnClose,def,"",var1,1);
if Xcnt == 78 Then ExitLong("bx79",OnClose,def,"",var1,1);
if Xcnt == 79 Then ExitLong("bx80",OnClose,def,"",var1,1);
if Xcnt == 80 Then ExitLong("bx81",OnClose,def,"",var1,1);
if Xcnt == 81 Then ExitLong("bx82",OnClose,def,"",var1,1);
if Xcnt == 82 Then ExitLong("bx83",OnClose,def,"",var1,1);
if Xcnt == 83 Then ExitLong("bx84",OnClose,def,"",var1,1);
if Xcnt == 84 Then ExitLong("bx85",OnClose,def,"",var1,1);
if Xcnt == 85 Then ExitLong("bx86",OnClose,def,"",var1,1);
if Xcnt == 86 Then ExitLong("bx87",OnClose,def,"",var1,1);
if Xcnt == 87 Then ExitLong("bx88",OnClose,def,"",var1,1);
if Xcnt == 88 Then ExitLong("bx89",OnClose,def,"",var1,1);
if Xcnt == 89 Then ExitLong("bx90",OnClose,def,"",var1,1);
if Xcnt == 90 Then ExitLong("bx91",OnClose,def,"",var1,1);
if Xcnt == 91 Then ExitLong("bx92",OnClose,def,"",var1,1);
if Xcnt == 92 Then ExitLong("bx93",OnClose,def,"",var1,1);
if Xcnt == 93 Then ExitLong("bx94",OnClose,def,"",var1,1);
if Xcnt == 94 Then ExitLong("bx95",OnClose,def,"",var1,1);
if Xcnt == 95 Then ExitLong("bx96",OnClose,def,"",var1,1);
if Xcnt == 96 Then ExitLong("bx97",OnClose,def,"",var1,1);
if Xcnt == 97 Then ExitLong("bx98",OnClose,def,"",var1,1);
if Xcnt == 98 Then ExitLong("bx99",OnClose,def,"",var1,1);
if Xcnt == 99 Then ExitLong("bx100",OnClose,def,"",var1,1);
}
}
}
Else
Xcnt = 0;
매도
input : Imoney(10000000);
var : vol(0),diff(0),Xcnt(0);
#kospi
if CodeCategory == 1 Then{
if BasePrice < 50000 Then
vol = int(int(Imoney/C)/10)*10;
Else
vol = int(Imoney/C);
}
if CodeCategory == 2 Then
vol = int(Imoney/C);
if CodeCategory == 6 or CodeCategory == 8 Then
vol = int((Imoney)/(C*BigPointValue));
if MarketPosition == 0 and stime == 140000 Then
sell("s",OnClose,def,vol);
if MarketPosition == -1 Then{
if CurrentContracts < CurrentContracts[1] Then
Xcnt = Xcnt+1;
if stime == 140000 Then{
var1 = abs(Vol-CurrentContracts);
if vol > CurrentContracts Then
sell("ss",OnClose,def,var1);
if vol < CurrentContracts Then{
if Xcnt == 0 Then ExitShort("sx1",OnClose,def,"",var1,1);
if Xcnt == 1 Then ExitShort("sx2",OnClose,def,"",var1,1);
if Xcnt == 2 Then ExitShort("sx3",OnClose,def,"",var1,1);
if Xcnt == 3 Then ExitShort("sx4",OnClose,def,"",var1,1);
if Xcnt == 4 Then ExitShort("sx5",OnClose,def,"",var1,1);
if Xcnt == 5 Then ExitShort("sx6",OnClose,def,"",var1,1);
if Xcnt == 6 Then ExitShort("sx7",OnClose,def,"",var1,1);
if Xcnt == 7 Then ExitShort("sx8",OnClose,def,"",var1,1);
if Xcnt == 8 Then ExitShort("sx9",OnClose,def,"",var1,1);
if Xcnt == 9 Then ExitShort("sx10",OnClose,def,"",var1,1);
if Xcnt == 10 Then ExitShort("sx11",OnClose,def,"",var1,1);
if Xcnt == 11 Then ExitShort("sx12",OnClose,def,"",var1,1);
if Xcnt == 12 Then ExitShort("sx13",OnClose,def,"",var1,1);
if Xcnt == 13 Then ExitShort("sx14",OnClose,def,"",var1,1);
if Xcnt == 14 Then ExitShort("sx15",OnClose,def,"",var1,1);
if Xcnt == 15 Then ExitShort("sx16",OnClose,def,"",var1,1);
if Xcnt == 16 Then ExitShort("sx17",OnClose,def,"",var1,1);
if Xcnt == 17 Then ExitShort("sx18",OnClose,def,"",var1,1);
if Xcnt == 18 Then ExitShort("sx19",OnClose,def,"",var1,1);
if Xcnt == 19 Then ExitShort("sx20",OnClose,def,"",var1,1);
if Xcnt == 20 Then ExitShort("sx21",OnClose,def,"",var1,1);
if Xcnt == 21 Then ExitShort("sx22",OnClose,def,"",var1,1);
if Xcnt == 22 Then ExitShort("sx23",OnClose,def,"",var1,1);
if Xcnt == 23 Then ExitShort("sx24",OnClose,def,"",var1,1);
if Xcnt == 24 Then ExitShort("sx25",OnClose,def,"",var1,1);
if Xcnt == 25 Then ExitShort("sx26",OnClose,def,"",var1,1);
if Xcnt == 26 Then ExitShort("sx27",OnClose,def,"",var1,1);
if Xcnt == 27 Then ExitShort("sx28",OnClose,def,"",var1,1);
if Xcnt == 28 Then ExitShort("sx29",OnClose,def,"",var1,1);
if Xcnt == 29 Then ExitShort("sx30",OnClose,def,"",var1,1);
if Xcnt == 30 Then ExitShort("sx31",OnClose,def,"",var1,1);
if Xcnt == 31 Then ExitShort("sx32",OnClose,def,"",var1,1);
if Xcnt == 32 Then ExitShort("sx33",OnClose,def,"",var1,1);
if Xcnt == 33 Then ExitShort("sx34",OnClose,def,"",var1,1);
if Xcnt == 34 Then ExitShort("sx35",OnClose,def,"",var1,1);
if Xcnt == 35 Then ExitShort("sx36",OnClose,def,"",var1,1);
if Xcnt == 36 Then ExitShort("sx37",OnClose,def,"",var1,1);
if Xcnt == 37 Then ExitShort("sx38",OnClose,def,"",var1,1);
if Xcnt == 38 Then ExitShort("sx39",OnClose,def,"",var1,1);
if Xcnt == 39 Then ExitShort("sx40",OnClose,def,"",var1,1);
if Xcnt == 30 Then ExitShort("sx41",OnClose,def,"",var1,1);
if Xcnt == 41 Then ExitShort("sx42",OnClose,def,"",var1,1);
if Xcnt == 42 Then ExitShort("sx43",OnClose,def,"",var1,1);
if Xcnt == 43 Then ExitShort("sx44",OnClose,def,"",var1,1);
if Xcnt == 44 Then ExitShort("sx45",OnClose,def,"",var1,1);
if Xcnt == 45 Then ExitShort("sx46",OnClose,def,"",var1,1);
if Xcnt == 46 Then ExitShort("sx47",OnClose,def,"",var1,1);
if Xcnt == 47 Then ExitShort("sx48",OnClose,def,"",var1,1);
if Xcnt == 48 Then ExitShort("sx49",OnClose,def,"",var1,1);
if Xcnt == 49 Then ExitShort("sx50",OnClose,def,"",var1,1);
if Xcnt == 50 Then ExitShort("sx51",OnClose,def,"",var1,1);
if Xcnt == 51 Then ExitShort("sx52",OnClose,def,"",var1,1);
if Xcnt == 52 Then ExitShort("sx53",OnClose,def,"",var1,1);
if Xcnt == 53 Then ExitShort("sx54",OnClose,def,"",var1,1);
if Xcnt == 54 Then ExitShort("sx55",OnClose,def,"",var1,1);
if Xcnt == 55 Then ExitShort("sx56",OnClose,def,"",var1,1);
if Xcnt == 56 Then ExitShort("sx57",OnClose,def,"",var1,1);
if Xcnt == 57 Then ExitShort("sx58",OnClose,def,"",var1,1);
if Xcnt == 58 Then ExitShort("sx59",OnClose,def,"",var1,1);
if Xcnt == 59 Then ExitShort("sx60",OnClose,def,"",var1,1);
if Xcnt == 60 Then ExitShort("sx61",OnClose,def,"",var1,1);
if Xcnt == 61 Then ExitShort("sx62",OnClose,def,"",var1,1);
if Xcnt == 62 Then ExitShort("sx63",OnClose,def,"",var1,1);
if Xcnt == 63 Then ExitShort("sx64",OnClose,def,"",var1,1);
if Xcnt == 64 Then ExitShort("sx65",OnClose,def,"",var1,1);
if Xcnt == 65 Then ExitShort("sx66",OnClose,def,"",var1,1);
if Xcnt == 66 Then ExitShort("sx67",OnClose,def,"",var1,1);
if Xcnt == 67 Then ExitShort("sx68",OnClose,def,"",var1,1);
if Xcnt == 68 Then ExitShort("sx69",OnClose,def,"",var1,1);
if Xcnt == 69 Then ExitShort("sx70",OnClose,def,"",var1,1);
if Xcnt == 60 Then ExitShort("sx71",OnClose,def,"",var1,1);
if Xcnt == 71 Then ExitShort("sx72",OnClose,def,"",var1,1);
if Xcnt == 72 Then ExitShort("sx73",OnClose,def,"",var1,1);
if Xcnt == 73 Then ExitShort("sx74",OnClose,def,"",var1,1);
if Xcnt == 74 Then ExitShort("sx75",OnClose,def,"",var1,1);
if Xcnt == 75 Then ExitShort("sx76",OnClose,def,"",var1,1);
if Xcnt == 76 Then ExitShort("sx77",OnClose,def,"",var1,1);
if Xcnt == 77 Then ExitShort("sx78",OnClose,def,"",var1,1);
if Xcnt == 78 Then ExitShort("sx79",OnClose,def,"",var1,1);
if Xcnt == 79 Then ExitShort("sx80",OnClose,def,"",var1,1);
if Xcnt == 80 Then ExitShort("sx81",OnClose,def,"",var1,1);
if Xcnt == 81 Then ExitShort("sx82",OnClose,def,"",var1,1);
if Xcnt == 82 Then ExitShort("sx83",OnClose,def,"",var1,1);
if Xcnt == 83 Then ExitShort("sx84",OnClose,def,"",var1,1);
if Xcnt == 84 Then ExitShort("sx85",OnClose,def,"",var1,1);
if Xcnt == 85 Then ExitShort("sx86",OnClose,def,"",var1,1);
if Xcnt == 86 Then ExitShort("sx87",OnClose,def,"",var1,1);
if Xcnt == 87 Then ExitShort("sx88",OnClose,def,"",var1,1);
if Xcnt == 88 Then ExitShort("sx89",OnClose,def,"",var1,1);
if Xcnt == 89 Then ExitShort("sx90",OnClose,def,"",var1,1);
if Xcnt == 90 Then ExitShort("sx91",OnClose,def,"",var1,1);
if Xcnt == 91 Then ExitShort("sx92",OnClose,def,"",var1,1);
if Xcnt == 92 Then ExitShort("sx93",OnClose,def,"",var1,1);
if Xcnt == 93 Then ExitShort("sx94",OnClose,def,"",var1,1);
if Xcnt == 94 Then ExitShort("sx95",OnClose,def,"",var1,1);
if Xcnt == 95 Then ExitShort("sx96",OnClose,def,"",var1,1);
if Xcnt == 96 Then ExitShort("sx97",OnClose,def,"",var1,1);
if Xcnt == 97 Then ExitShort("sx98",OnClose,def,"",var1,1);
if Xcnt == 98 Then ExitShort("sx99",OnClose,def,"",var1,1);
if Xcnt == 99 Then ExitShort("sx100",OnClose,def,"",var1,1);
}
}
}
즐거운 하루되세요
> 에구머니 님이 쓴 글입니다.
> 제목 : 수식 문의
> 늘 감사드립니다.