커뮤니티
문의 (PY2)
2013-12-07 12:50:43
176
글번호 70220
1. 아래식같이 표현하면 M1 > M2가 만족하는 100개의 봉중에 50개 이상만 만족하면 PrevAC가 TRUE가 되는건지요?
PrevAC = (Countif(M1 > M2, 100) >= 50);
2. 33769 답변주신 내용입니다.
조건A,B,C 중에 하나가 만족하면 B1, B2, B31 모두 시간차를 두고 한꺼번에 진입되는게 아닌가요?
#다른진입신호만 허용
if MarketPosition <= 0 and
(진입조건A or 진입조건B or 진입조건C) Then{
buy("B1");
buy("B2",AtLimit,c-PriceScale*2);
buy("B31",AtLimit,c-PriceScale*2);
}
아래부분에서 이해가 안되서 그러는데 한줄한줄 설명좀 부탁드립니다.
****************************************************
if MarketPosition == 1 and MaxEntries < 3 Then{
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then
buy("B2.",AtLimit,EntryPrice-PriceScale*2);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then
buy("B31.",AtLimit,EntryPrice-PriceScale*4);
if CurrentEntries == 2 then
buy("B32",AtStop,H[BarsSinceEntry]+PriceScale);
}
3. 120일봉선이 표시가 안되는데 아래 수식 검증부탁드립니다. 그리고 500일봉선도 표시하려고 하니까 로딩속도가 엄청 저하되는데 문제가 있는건가요?
VARS: M60DPL(60), M120DP(120);
VARS: M60DL(0, DATA3), M120D(0, DATA3);
VARS: M60DL.SUM(0, DATA3), M120D.SUM(0, DATA3), CNTL(0);
ARRAY: CCL[100](0, DATA3);
//----------------------------------------------------------------------------------------------------------------------------------------------------------
if ( DATA3(Date <> Date[1]) ) Then
{
for CNTL = 0 to 99
{
CCL[CNTL] = CCL[CNTL - 1][1];
}
}
CCL[0] = d3CLOSE;
M60DL.SUM = 0; M120D.SUM = 0;
for CNTL = 0 to M120DPL - 1
{
if ( (CNTL < M60DPL) AND (CCL[M60DPL - 1] > 0) ) Then M60DL.SUM = M60DL.SUM + CCL[CNTL];
if ( (CNTL < M120DP) AND (CCL[M120DP - 1] > 0) ) Then M120D.SUM = M120D.SUM + CCL[CNTL];
}
M60DL = (M60DL.SUM / M60DPL);
M120D = (M120D.SUM / M120DP);
// PLOTTING
//
Plot11(M60DL, "M60D", RGB(0,255,0), DEF, 1);
Plot12(M120D, "M120D", RGB(0,255,255), DEF, 1);
4. 10분봉 기준으로 전략실행차트에서 최대 몇일선까지 표시가 가능한지요??
계산해보니까 10분 * 6 * 6시간 = 하루 36봉
36봉 * 120일 = 4320봉이 필요한데, 최대 5000봉이니까 120일선 이상은 안된다고 보면 맞는건가요?
늘 감사드립니다.
답변 1
예스스탁 예스스탁 답변
2013-12-09 11:25:16
안녕하세요
예스스탁입니다.
1.
PrevAC = (Countif(M1 > M2, 100) >= 50);
최근 100개 봉중 M1이 M2보다 큰봉이 50개 이상이면 true 아니면 false입니다.
2.
우선 아래 내용에서 B31은 C-PriceScale*4입니다.
if MarketPosition <= 0 and
(진입조건A or 진입조건B or 진입조건C) Then{
buy("B1");
buy("B2",AtLimit,c-PriceScale*2);
buy("B31",AtLimit,c-PriceScale*4);
}
진입조건 A,B,C중에 하나가 만족하면
봉완성시 B1진입을 하고 다음봉에서
조건만족봉의 종가보다 2틱 낮으면 b2발생,
4틱 낮은 시세 발생하면 b31이 발생합니다.
만약 다음봉에서 b2,b31이 발생하지 않으면
아래 내용으로 추가진입합니다.
if MarketPosition == 1 and MaxEntries < 3 Then{
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then
buy("B2.",AtLimit,EntryPrice-PriceScale*2);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then
buy("B31.",AtLimit,EntryPrice-PriceScale*4);
if CurrentEntries == 2 then
buy("B32",AtStop,H[BarsSinceEntry]+PriceScale);
}
진입이후 최저가가 진입가 대비 2틱이상 낮지 않으면(B2가 발생하지 않으면)
다음봉에서 진입가-2틱의 시세가 발생하면 진입(B2.)
진입이후 최저가가 진입가 대비 4틱이상 낮지 않으면(B31가 발생하지 않으면)
다음봉에서 진입가-4틱의 시세가 발생하면 진입(B31.)
진입횟수가 2회인 상태에서 첫진입봉의 고가를 상향하면 매수(B32)
3.
CCL배열변수가 100으로 지정되어 있습니다.
필요한 수만큰 늘리셔야 하며 늘린만큰 for문에서도 값을 늘려주셔야 합니다
ARRAY: CCL[100](0, DATA3); <-- 배열크기 변경
//----------------------------------------------------------------------------------------------------------------------------------------------------------
if ( DATA3(Date <> Date[1]) ) Then
{
for CNTL = 0 to 99 <-- 배열크기만큼 최종값 변경
{
CCL[CNTL] = CCL[CNTL - 1][1];
}
}
기간이 길수록 for문이 증가되므로
속도는 더 느려지게 됩니다.
4.
차트의 주종목은 차트 첫봉의 날짜+99일치의 일간데이터(dayhigh,daylow,dayopen,dayclose)가 사용하실수 있게
되어 있습니다. 그러므로 주종목이면 120이평이 계산이 가능합니다.
참조데이터의 경우에는 차트에 있는 데이터 안에서만 계산할수가 있습니다.
일수는 아래 지표로 확인하시기 바랍니다.
var : idx(0,data2);
if data2(date != date[1]) Then
idx = idx+1;
plot1(idx);
참조데이터에서는 분봉데이터로 일봉을 계산할 필요가 없습니다.
일봉이 필요하시면 해당데이터 일봉을 또 추가하시고 이용하시면 됩니다.
즐거운 하루되세요
> TRF 님이 쓴 글입니다.
> 제목 : 문의 (PY2)
> 1. 아래식같이 표현하면 M1 > M2가 만족하는 100개의 봉중에 50개 이상만 만족하면 PrevAC가 TRUE가 되는건지요?
PrevAC = (Countif(M1 > M2, 100) >= 50);
2. 33769 답변주신 내용입니다.
조건A,B,C 중에 하나가 만족하면 B1, B2, B31 모두 시간차를 두고 한꺼번에 진입되는게 아닌가요?
#다른진입신호만 허용
if MarketPosition <= 0 and
(진입조건A or 진입조건B or 진입조건C) Then{
buy("B1");
buy("B2",AtLimit,c-PriceScale*2);
buy("B31",AtLimit,c-PriceScale*2);
}
아래부분에서 이해가 안되서 그러는데 한줄한줄 설명좀 부탁드립니다.
****************************************************
if MarketPosition == 1 and MaxEntries < 3 Then{
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*2 Then
buy("B2.",AtLimit,EntryPrice-PriceScale*2);
if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*4 Then
buy("B31.",AtLimit,EntryPrice-PriceScale*4);
if CurrentEntries == 2 then
buy("B32",AtStop,H[BarsSinceEntry]+PriceScale);
}
3. 120일봉선이 표시가 안되는데 아래 수식 검증부탁드립니다. 그리고 500일봉선도 표시하려고 하니까 로딩속도가 엄청 저하되는데 문제가 있는건가요?
VARS: M60DPL(60), M120DP(120);
VARS: M60DL(0, DATA3), M120D(0, DATA3);
VARS: M60DL.SUM(0, DATA3), M120D.SUM(0, DATA3), CNTL(0);
ARRAY: CCL[100](0, DATA3);
//----------------------------------------------------------------------------------------------------------------------------------------------------------
if ( DATA3(Date <> Date[1]) ) Then
{
for CNTL = 0 to 99
{
CCL[CNTL] = CCL[CNTL - 1][1];
}
}
CCL[0] = d3CLOSE;
M60DL.SUM = 0; M120D.SUM = 0;
for CNTL = 0 to M120DPL - 1
{
if ( (CNTL < M60DPL) AND (CCL[M60DPL - 1] > 0) ) Then M60DL.SUM = M60DL.SUM + CCL[CNTL];
if ( (CNTL < M120DP) AND (CCL[M120DP - 1] > 0) ) Then M120D.SUM = M120D.SUM + CCL[CNTL];
}
M60DL = (M60DL.SUM / M60DPL);
M120D = (M120D.SUM / M120DP);
// PLOTTING
//
Plot11(M60DL, "M60D", RGB(0,255,0), DEF, 1);
Plot12(M120D, "M120D", RGB(0,255,255), DEF, 1);
4. 10분봉 기준으로 전략실행차트에서 최대 몇일선까지 표시가 가능한지요??
계산해보니까 10분 * 6 * 6시간 = 하루 36봉
36봉 * 120일 = 4320봉이 필요한데, 최대 5000봉이니까 120일선 이상은 안된다고 보면 맞는건가요?
늘 감사드립니다.
다음글
이전글