커뮤니티
시스템에서 아래의 산식을 넣으니 "수식에서 참조할 첫번째 종목데이터가 없습니다" 라고 나오
2017-04-05 16:56:56
280
글번호 108503
아래의 산식을 넣으니 "수식에서 참조할 첫번째 종목데이터가 없습니다" 라고 나옵니다 왜그런지 알려주세용
var : intCBuy(0), intStop(18); // intCBuy (buy band), intCSell (Sell band) ; intStop : 손절 틱수 --->>>>>>>>>>>>>>>>>>>>
var : intCSell(0);
var : intPft(100); // 익절 틱수
var : NoTick(2); // /* 매직넘버 라인 몇틱 앞에서 청산할지를 알려주는 변수 : 1틱 */
var : sngMx(295.05), sngDt(0.90) ; // 매직넘버라인의 제일 큰 숫자와 그 사이 간격을 저장할 변수: 278.85: 0.9 | 278.85 : 1.8 | 277.95 : 1.8
var : WH(0), WL(0); // WH : 연중 최고점, WL : 연중 최저점
var : i(0), j(0), intN(0); // 임시변수
var : sngNum(5); // 매직넘버라인의 갯수
var : sngNo(0); // sngNo = sngNum -1
var : sngT(100), sngPos(0); // 현재봉과 가장 가까운 매직넘버라인을 찾기 위해 사용하는 임시 변수, sngPos : 현재봉과 가장 가까운 라인의 배열상의 위치
var : intBB(0), intSB(0); // 스위칭을 피하기 위해 손절을 늘리는 변수 추가 : intBB = intCBuy* onetick, intSB = intCSell * onetick --->>>>>>>>>>>>>>>>>>>>
var : sngC1(0, data2); // 당일 첫봉일때, C[1] 을 O 로 바꾸기 위한 변수
array : MagicNum[5](0); // 랜덤 라인값을 저장할 변수
array : MNPos[2](0); // 매직넘버라인의 위치 저장 변수 : queue 개념 도입
// 주문의 조건을 판단하는 과정에서 쓰이는 변수 : 주문 결정이 되면,
// 1) MNPos[0] -> MNPos[1]
// 2) i -> MNPos[0]
// 매직넘버라인 최신값이 항상 MNPos[0], 직전값은 MNPos[1] 에 저장됨
array : sngMN[70](0); // 매직넘버라인 값을 저장할 변수
var : cond0(false), cond1(false); // 선부근 매수 : cond1(True), 선부근 매도 : cond2(True) (2017/04/01)
input: sngA(-2), sngB(-4); // 지지선 간격 조정 변수 <<<<<<<<<<<<<<<<<<<<<<<<<------------------------------------>>>>
input : sngC(-1); // 지지선 간격 조정 변수 <<<<<<<<<<<<<<<<<<<<<<<<<------------------------------------>>>>
input : sngD(2), sngE(3); // 지지선 간격 조정 변수 <<<<<<<<<<<<<<<<<<<<<<<<<------------------------------------>>>>
// future
// 매직넘버라인의 제일 큰 숫자와 그 사이 간격
sngNum = 60 ; // 매직넘버라인 갯수
sngNo = sngNum - 1; // 매직넘버라인 갯수 - 1
// 초기화할 변수
intCSell = intCBuy;
intBB = intCBuy * PriceScale;
intSB = intCSell * PriceScale;
// 매직넘버라인 값들을 배열에 모두 저장
for intN = 0 to sngNo
{
sngMN[intN] = sngMx -sngDt * intN;
}
// 매직넘버라인들 간격을 조정해서 배열에 저장(5개)
MagicNum[0] = sngMN[0] - sngDt * sngA;
MagicNum[1] = MagicNum[0] - sngDt * sngB;
MagicNum[2] = MagicNum[1] - sngDt * sngC;
MagicNum[3] = MagicNum[2] - sngDt * sngD;
MagicNum[4] = MagicNum[3] - sngDt * sngE;
// 0,0,0,9,10
// 당일 첫봉일 때 조건 삭제
sngC1 = data2(C[1]); // sngC1 = data2(O);
// 손절매(자동 손절) : 10 tick
SetStopLoss(intStop * pricescale, Pointstop);
// 손절매(자동 익절) : 106 - 1385 tick
SetStopProfittarget(intPft * pricescale, Pointstop);
for i = 0 to sngNo
{
if(MarketPosition == 0 ) then
{
// >>> 매수 <<<
// 1분전의 1분봉 종가가 매직넘버선(18틱 간격의 지지선) 밑에 있다가 현재 1분봉의 종가가 파란선(매직넘버선) 위로 올라온 경우에는 buy()
// if (C[1] <= MagicNum[i] ) and ( C > MagicNum[i]) then ( 원본) >>>>>>>>>>>>>>>>>>>>
if (sngC1 <= MagicNum[i]) and ( data2(C) > MagicNum[i] ) then
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
cond0 = True;
cond1 = False;
}
// >>> 매도 <<<
// 1분전의 1분봉 종가가 매직 넘버선 위에 있다가 종가가 매직넘버선 아래로 내려간 경우 sell()
// if(C[1] >= MagicNum[i]) and ( C < MagicNum[i]) then >>>>>>>>> 원본
if(sngC1 >= MagicNum[i] ) and ( data2(C) < MagicNum[i]) then
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
cond0 = False;
cond1 = True;
}
if cond0 and (C <= MagicNum[i] + NoTick * PriceScale) and (C >= MagicNum[i]) Then
{
buy("buy_UV"); // , Atstop, MagicNum[i] + NoTick * PriceScale); // "buy_UV" 라는 이름으로 트레이딩 시스템 차트에 표출되도록 합니다.
}
if cond1 and (C >= MagicNum[i] - NoTick * PriceScale) and (C <= MagicNum[i]) Then
{
sell("sell_UV"); // , Atstop, MagicNum[i] - NoTick * PriceScale);
}
// >>> 지지선 매수 <<<
// 매직넘버선 1틱 위까지에 지금봉의 저가가 있고 지금봉의 종가와 시가가 매직넘버선 위인 경우 buy() ----->>>>>>>>>>>>>>>>>>>>>
if(L >= MagicNum[i] + Notick * pricescale) and (L >= MagicNum[i]) and ( data2(C) > MagicNum[i] ) and ( data2(O) > MagicNum[i] ) then
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
buy("counter_buy_UV");
}
// >>> 저항선 매도 <<<
// 매직넘버선 1틱 아래에까지 고가가 있고 종가와 시가가 매직넘버선 아래인 경우 sell()
if (H >= MagicNum[i] - Notick * pricescale) and (H <= MagicNum[i]) and ( data2(C) < MagicNum[i]) and ( data2(O) < MagicNum[i]) then
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
sell("counter_sell_UV");
}
}
if(MarketPosition == 1) then
{
// >>> 매수 청산 <<<
// 매직넘버선이 이전 진입시 보다 위에 있으면서
// 현재봉의 고점이 매직넘버선 보다 한틱아래까지 터치하면 매수 청산
if (MNPos[0] > i) and (H >= MagicNum[i] - Notick * pricescale) and (H <= MagicNum[i]) then // MNPOS[0] -> MNPOS[1] (2017/04/02)
{
ExitLong("exit_buy_UV_NoSW");
cond0 = False;
}
// >>> 스위칭 매도 <<<
// 매직넘버선이 이전 진입시와 같고
// 1분전의 1분봉 종가가 매직 넘버선 위에 있다가 종가가 매직넘버선 아래로 내려간 경우 sell()
if (MNPos[0] == i) and (sngC1 >= MagicNum[i] - intSB) and (data2(C) < MagicNum[i] - intSB) then // MNPOS[0] -> MNPOS[1] (2017/04/02)
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
cond0 = False;
cond1 = True;
}
if cond1 and (C == MagicNum[i] - NoTick * PriceScale) Then
{
sell("SW_to_sell"); // , Atstop, MagicNum[i] - NoTick * PriceScale);
}
}
if (MarketPosition == -1) then
{
// >>> 매도 청산 <<<
// 매직넘버선이 이전 진입시 보다 아래에 있으면서
// 현재봉의 저점이 매직넘버선 보다 한틱위까지 터치하면 매수 청산
if (MNPos[0] < i) and (L == MagicNum[i] + Notick * pricescale) then // MNPOS[0] -> MNPOS[1] (2017/04/02)
{
ExitShort("exit_sell_UV_NoSW");
cond1 = false;
}
// >>> 스위칭 매수 <<<
// 매직넘버선이 이전 진입시와 같고
// 1분전의 1분봉 종가가 매직 넘버선 아래에 있다가 종가가 매직넘버선 위로 올라간 경우 sell()
if (MNPos[0] == i) and (sngC1 <= MagicNum[i] + intBB) and (data2(C) > MagicNum[i] + intBB) then // MNPOS[0] -> MNPOS[1] (2017/04/02)
{
MNPos[1] = MNPos[0]; // queue 개념 사용
MNPos[0] = i;
cond0 = True;
cond1 = False;
}
if cond0 and (C <= MagicNum[i] + NoTick * PriceScale) and (C >= MagicNum[i]) Then
{
buy("SW_to_buy");
}
}
}
// MessageLog("pos1 : %.2f pos0 : %.2f i : %.2f" , MNPos[1], MNPos[0], i);
// 주간장 마감 1630분 5분 전 1625분 청산
//if ((marketposition == 1) or (MarketPosition == -1)) and (stime == 162500) then
//{
// SetStopEndofday(1530); // 2016.8월 이후 1530
답변 1
예스스탁 예스스탁 답변
2017-04-06 10:36:42
안녕하세요
예스스탁입니다.
수식에 참조데이터(data2)를 이용하는 내용이 있습니다.
그러므로 차트에 첨부된 그림과 같이 기본차트와 함께 참조데이터 data2가 설정되어 있어야 합니다.
수식내용만으로는 어떤 데이터를 사용하는지 알수가 없습니다.
해당 수식을 구하신 곳에서 어떤 데이터를 참조로 사용하는지 아셔야 맞게
차트를 셋팅해고 수식을 적용할수가 있습니다
차트의 참조데이터 추가는
차트 왼족 상단의 종목선택버튼 중 오른쪽 클릭하면 추가할수 있습니다.
즐거운 하루되세요
> ds2335 님이 쓴 글입니다.
> 제목 : 시스템에서 아래의 산식을 넣으니 "수식에서 참조할 첫번째 종목데이터가 없습니다" ?