커뮤니티
수식 문의
2013-06-18 13:40:54
252
글번호 64415
재매수 재매도시 시가 종가가 같은 봉(십자봉이나 망치봉)은 봉갯수에 포함이 안되던데 색깔에 따라 포함이 되게 할순 없나요?
그리고 재매수 재매도는 횟수 조정이 안되는거 같구요 봉갯수 카운터를 할때는
무조건 신호 나온 다음봉부터 계산이 되어 지게 부탁 드립니다
최초매수 이후 청산선이나 정해진 익절이 되기전에 아래식에서 좀 더 추가하고 싶은게
있습니다
최초매수후 하나는 아래식에 있는 음봉연속갯수를 가지고 청산 하고 싶구요
또하나는 양봉연속갯수를 가지고 청산을 하고 싶구요
두가지 조건중에 하나만 만족하면 반복매도가 되게 할려구요
위 두가지 조건으로 반복매도가 된 이후에 반복매수 진입시
조건도 두가지 조건중 하나만 만족하면 반복매수를 하고 싶습니다
반복매도이후 봉 부터해서 하나는 양봉연속갯수로 반복매수를 하고 싶구요
또하나는 연속음봉갯수를 가지로 반복매수를 하고 싶습니다
이 모든 변수값은 외부변수로 와야 하구요
그리고 아래식으로 하면 봉갯수를 카운터 하는게 매수신호 이후부터가 아니고
부탁 드립니다 다 되면 매도식도 부탁 드립니다
> 안녕하세요
예스스탁입니다.
식을 수정했습니다.
변수에 잘못된 값이 저장되어 있었습니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3),반복재매수횟수(3),반복재매도횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0);
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
rebuy = 0;
resell = 0;
for cnt = 20 downto 0{
if sdate == EntryDate(cnt) and IsEntryName("재매수",cnt) == true Then
rebuy = rebuy+1;
Else
rebuy = 0;
if cnt > 0 Then{
if sdate == ExitDate(cnt) and IsExitName("재매도",cnt) == true Then
resell = resell+1;
Else
resell = 0;
}
}
if date != date[1] Then
Condition1 = false;
if Condition1 == false and
MarketPosition == 0
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& C > MAv1
Then
{
Buy("매수", OnClose, DEF);
if Condition1 == false Then{
Condition1 = true;
var1 = c;
}
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
if Condition1 == true Then{
if C < mav4 or L <= var1-LossPoint or H >= var1+ProfitPoint Then
Condition1 = false;
}
if count >= 1 and condition1 == true Then{
if IsExitName("매도",1) == true and Countif(C>O,양봉갯수) == 양봉갯수 and rebuy < 반복재매수횟수 Then
buy("재매수");
if Countif(C<O,음봉갯수) == 음봉갯수 and resell < 반복재매도횟수 Then
ExitLong("매도");
}
답변 5
예스스탁 예스스탁 답변
2013-06-18 15:03:37
> 난정욱 님이 쓴 글입니다.
> 제목 : 수식 문의
> 재매수 재매도시 시가 종가가 같은 봉(십자봉이나 망치봉)은 봉갯수에 포함이 안되던데 색깔에 따라 포함이 되게 할순 없나요?
그리고 재매수 재매도는 횟수 조정이 안되는거 같구요 봉갯수 카운터를 할때는
무조건 신호 나온 다음봉부터 계산이 되어 지게 부탁 드립니다
최초매수 이후 청산선이나 정해진 익절이 되기전에 아래식에서 좀 더 추가하고 싶은게
있습니다
최초매수후 하나는 아래식에 있는 음봉연속갯수를 가지고 청산 하고 싶구요
또하나는 양봉연속갯수를 가지고 청산을 하고 싶구요
두가지 조건중에 하나만 만족하면 반복매도가 되게 할려구요
위 두가지 조건으로 반복매도가 된 이후에 반복매수 진입시
조건도 두가지 조건중 하나만 만족하면 반복매수를 하고 싶습니다
반복매도이후 봉 부터해서 하나는 양봉연속갯수로 반복매수를 하고 싶구요
또하나는 연속음봉갯수를 가지로 반복매수를 하고 싶습니다
이 모든 변수값은 외부변수로 와야 하구요
그리고 아래식으로 하면 봉갯수를 카운터 하는게 매수신호 이후부터가 아니고
부탁 드립니다 다 되면 매도식도 부탁 드립니다
> 안녕하세요
예스스탁입니다.
식을 수정했습니다.
변수에 잘못된 값이 저장되어 있었습니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3),반복재매수횟수(3),반복재매도횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0);
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
rebuy = 0;
resell = 0;
for cnt = 20 downto 0{
if sdate == EntryDate(cnt) and IsEntryName("재매수",cnt) == true Then
rebuy = rebuy+1;
Else
rebuy = 0;
if cnt > 0 Then{
if sdate == ExitDate(cnt) and IsExitName("재매도",cnt) == true Then
resell = resell+1;
Else
resell = 0;
}
}
if date != date[1] Then
Condition1 = false;
if Condition1 == false and
MarketPosition == 0
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& C > MAv1
Then
{
Buy("매수", OnClose, DEF);
if Condition1 == false Then{
Condition1 = true;
var1 = c;
}
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
if Condition1 == true Then{
if C < mav4 or L <= var1-LossPoint or H >= var1+ProfitPoint Then
Condition1 = false;
}
if count >= 1 and condition1 == true Then{
if IsExitName("매도",1) == true and Countif(C>O,양봉갯수) == 양봉갯수 and rebuy < 반복재매수횟수 Then
buy("재매수");
if Countif(C<O,음봉갯수) == 음봉갯수 and resell < 반복재매도횟수 Then
ExitLong("매도");
}
예스스탁 예스스탁 답변
2013-06-18 16:06:45
안녕하세요
예스스탁입니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3);
var : 재매수횟수(3),재매수청산횟수(3),재매도횟수(3),재매도청산횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0),ReEL(0),ReES(0);
var : cond1(false),cond2(false);
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if date != date[1] Then{
Rebuy = 0;
ReEL = 0;
ReSell = 0;
ReES = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매수") == true Then{
Rebuy = 0;
ReEL = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("재매수") == true Then
Rebuy = Rebuy+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매수청산4",1) == true Then
ReEL = ReEL+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매도") == true Then{
ReSell = 0;
ReES = 0;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("재매도") == true Then
ReSell = ReSell+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매도청산4",1) == true Then
ReES = ReES+1;
cond1 = C > O or (C==O and C >= C[1]);
cond2 = C < O or (C==O and C < C[1]);
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매수청산4",1) == false) or
(count > 0 and countif(C < mav4,BarsSinceExit(1)) >= 1)) and
MAv1 > MAv2 and
MAv2 > MAv3 and
MAv3 > MAv4 and
C > MAv1 Then{
Buy("최초매수", OnClose, DEF);
}
if MarketPosition == 1 Then{
ExitLong("매수청산2",AtStop,EntryPrice-Losspoint);
ExitLong("매수청산3",AtLimit,EntryPrice+Profitpoint);
}
if MarketPosition == 1 and C < MAv4 Then
Exitlong("매수청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매수",1) == true or IsEntryName("재매수",1) == true) and
IsExitName("매수청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
rebuy < 재매수횟수 and
countif(C < mav4,BarsSinceExit(1)) < 1 Then
buy("재매수");
}
if MarketPosition == 1 and BarsSinceEntry >= 3 and ReEL < 재매수청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitLong("매수청산4");
}
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매도청산4",1) == false) or
(count > 0 and countif(C > mav4,BarsSinceExit(1)) >= 1)) and
MAv1 < MAv2 and
MAv2 < MAv3 and
MAv3 < MAv4 and
C < MAv1 Then{
Sell("최초매도");
}
if MarketPosition == -1 Then{
ExitShort("매도청산2",AtStop,EntryPrice+Losspoint);
ExitShort("매도청산3",AtLimit,EntryPrice-Profitpoint);
}
if MarketPosition == -1 and C > MAv4 Then
ExitShort("매도청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매도",1) == true or IsEntryName("재매도",1) == true) and
IsExitName("매도청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
reSell < 재매도횟수 and
countif(C > mav4,BarsSinceExit(1)) < 1 Then
Sell("재매도");
}
if MarketPosition == -1 and BarsSinceEntry >= 3 and ReES < 재매도청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitShort("매도청산4");
}
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 전화주시기 바랍니다.(02-3453-1060)
>
> 난정욱 님이 쓴 글입니다.
> 제목 : 수식 문의
> 재매수 재매도시 시가 종가가 같은 봉(십자봉이나 망치봉)은 봉갯수에 포함이 안되던데 색깔에 따라 포함이 되게 할순 없나요?
그리고 재매수 재매도는 횟수 조정이 안되는거 같구요 봉갯수 카운터를 할때는
무조건 신호 나온 다음봉부터 계산이 되어 지게 부탁 드립니다
최초매수 이후 청산선이나 정해진 익절이 되기전에 아래식에서 좀 더 추가하고 싶은게
있습니다
최초매수후 하나는 아래식에 있는 음봉연속갯수를 가지고 청산 하고 싶구요
또하나는 양봉연속갯수를 가지고 청산을 하고 싶구요
두가지 조건중에 하나만 만족하면 반복매도가 되게 할려구요
위 두가지 조건으로 반복매도가 된 이후에 반복매수 진입시
조건도 두가지 조건중 하나만 만족하면 반복매수를 하고 싶습니다
반복매도이후 봉 부터해서 하나는 양봉연속갯수로 반복매수를 하고 싶구요
또하나는 연속음봉갯수를 가지로 반복매수를 하고 싶습니다
이 모든 변수값은 외부변수로 와야 하구요
그리고 아래식으로 하면 봉갯수를 카운터 하는게 매수신호 이후부터가 아니고
부탁 드립니다 다 되면 매도식도 부탁 드립니다
> 안녕하세요
예스스탁입니다.
식을 수정했습니다.
변수에 잘못된 값이 저장되어 있었습니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3),반복재매수횟수(3),반복재매도횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0);
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
rebuy = 0;
resell = 0;
for cnt = 20 downto 0{
if sdate == EntryDate(cnt) and IsEntryName("재매수",cnt) == true Then
rebuy = rebuy+1;
Else
rebuy = 0;
if cnt > 0 Then{
if sdate == ExitDate(cnt) and IsExitName("재매도",cnt) == true Then
resell = resell+1;
Else
resell = 0;
}
}
if date != date[1] Then
Condition1 = false;
if Condition1 == false and
MarketPosition == 0
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& C > MAv1
Then
{
Buy("매수", OnClose, DEF);
if Condition1 == false Then{
Condition1 = true;
var1 = c;
}
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
if Condition1 == true Then{
if C < mav4 or L <= var1-LossPoint or H >= var1+ProfitPoint Then
Condition1 = false;
}
if count >= 1 and condition1 == true Then{
if IsExitName("매도",1) == true and Countif(C>O,양봉갯수) == 양봉갯수 and rebuy < 반복재매수횟수 Then
buy("재매수");
if Countif(C<O,음봉갯수) == 음봉갯수 and resell < 반복재매도횟수 Then
ExitLong("매도");
}
난정욱
2013-06-18 17:07:38
안녕하세요
매수식 매도식을 따로 쓰고 있어서요
96번째 여기서 부터 짜르면 되는건가요?
if MarketPosition <= 0 and
아니네요 자세히 보니깐 매수식 매도식이 합쳐져 있는거 같네요
매수 매도 이평선값들이 달라서 매수수식따로 매도 수식따로
하고 싶은데 어쩌죠?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : 전화주시기 바랍니다.(02-3453-1060)
> 안녕하세요
예스스탁입니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3);
var : 재매수횟수(3),재매수청산횟수(3),재매도횟수(3),재매도청산횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0),ReEL(0),ReES(0);
var : cond1(false),cond2(false);
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if date != date[1] Then{
Rebuy = 0;
ReEL = 0;
ReSell = 0;
ReES = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매수") == true Then{
Rebuy = 0;
ReEL = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("재매수") == true Then
Rebuy = Rebuy+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매수청산4",1) == true Then
ReEL = ReEL+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매도") == true Then{
ReSell = 0;
ReES = 0;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("재매도") == true Then
ReSell = ReSell+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매도청산4",1) == true Then
ReES = ReES+1;
cond1 = C > O or (C==O and C >= C[1]);
cond2 = C < O or (C==O and C < C[1]);
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매수청산4",1) == false) or
(count > 0 and countif(C < mav4,BarsSinceExit(1)) >= 1)) and
MAv1 > MAv2 and
MAv2 > MAv3 and
MAv3 > MAv4 and
C > MAv1 Then{
Buy("최초매수", OnClose, DEF);
}
if MarketPosition == 1 Then{
ExitLong("매수청산2",AtStop,EntryPrice-Losspoint);
ExitLong("매수청산3",AtLimit,EntryPrice+Profitpoint);
}
if MarketPosition == 1 and C < MAv4 Then
Exitlong("매수청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매수",1) == true or IsEntryName("재매수",1) == true) and
IsExitName("매수청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
rebuy < 재매수횟수 and
countif(C < mav4,BarsSinceExit(1)) < 1 Then
buy("재매수");
}
if MarketPosition == 1 and BarsSinceEntry >= 3 and ReEL < 재매수청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitLong("매수청산4");
}
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매도청산4",1) == false) or
(count > 0 and countif(C > mav4,BarsSinceExit(1)) >= 1)) and
MAv1 < MAv2 and
MAv2 < MAv3 and
MAv3 < MAv4 and
C < MAv1 Then{
Sell("최초매도");
}
if MarketPosition == -1 Then{
ExitShort("매도청산2",AtStop,EntryPrice+Losspoint);
ExitShort("매도청산3",AtLimit,EntryPrice-Profitpoint);
}
if MarketPosition == -1 and C > MAv4 Then
ExitShort("매도청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매도",1) == true or IsEntryName("재매도",1) == true) and
IsExitName("매도청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
reSell < 재매도횟수 and
countif(C > mav4,BarsSinceExit(1)) < 1 Then
Sell("재매도");
}
if MarketPosition == -1 and BarsSinceEntry >= 3 and ReES < 재매도청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitShort("매도청산4");
}
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 전화주시기 바랍니다.(02-3453-1060)
>
> 난정욱 님이 쓴 글입니다.
> 제목 : 수식 문의
> 재매수 재매도시 시가 종가가 같은 봉(십자봉이나 망치봉)은 봉갯수에 포함이 안되던데 색깔에 따라 포함이 되게 할순 없나요?
그리고 재매수 재매도는 횟수 조정이 안되는거 같구요 봉갯수 카운터를 할때는
무조건 신호 나온 다음봉부터 계산이 되어 지게 부탁 드립니다
최초매수 이후 청산선이나 정해진 익절이 되기전에 아래식에서 좀 더 추가하고 싶은게
있습니다
최초매수후 하나는 아래식에 있는 음봉연속갯수를 가지고 청산 하고 싶구요
또하나는 양봉연속갯수를 가지고 청산을 하고 싶구요
두가지 조건중에 하나만 만족하면 반복매도가 되게 할려구요
위 두가지 조건으로 반복매도가 된 이후에 반복매수 진입시
조건도 두가지 조건중 하나만 만족하면 반복매수를 하고 싶습니다
반복매도이후 봉 부터해서 하나는 양봉연속갯수로 반복매수를 하고 싶구요
또하나는 연속음봉갯수를 가지로 반복매수를 하고 싶습니다
이 모든 변수값은 외부변수로 와야 하구요
그리고 아래식으로 하면 봉갯수를 카운터 하는게 매수신호 이후부터가 아니고
부탁 드립니다 다 되면 매도식도 부탁 드립니다
> 안녕하세요
예스스탁입니다.
식을 수정했습니다.
변수에 잘못된 값이 저장되어 있었습니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3),반복재매수횟수(3),반복재매도횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0);
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
rebuy = 0;
resell = 0;
for cnt = 20 downto 0{
if sdate == EntryDate(cnt) and IsEntryName("재매수",cnt) == true Then
rebuy = rebuy+1;
Else
rebuy = 0;
if cnt > 0 Then{
if sdate == ExitDate(cnt) and IsExitName("재매도",cnt) == true Then
resell = resell+1;
Else
resell = 0;
}
}
if date != date[1] Then
Condition1 = false;
if Condition1 == false and
MarketPosition == 0
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& C > MAv1
Then
{
Buy("매수", OnClose, DEF);
if Condition1 == false Then{
Condition1 = true;
var1 = c;
}
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
if Condition1 == true Then{
if C < mav4 or L <= var1-LossPoint or H >= var1+ProfitPoint Then
Condition1 = false;
}
if count >= 1 and condition1 == true Then{
if IsExitName("매도",1) == true and Countif(C>O,양봉갯수) == 양봉갯수 and rebuy < 반복재매수횟수 Then
buy("재매수");
if Countif(C<O,음봉갯수) == 음봉갯수 and resell < 반복재매도횟수 Then
ExitLong("매도");
}
예스스탁 예스스탁 답변
2013-06-18 17:14:56
1. 매수
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3);
var : 재매수횟수(3),재매수청산횟수(3),재매도횟수(3),재매도청산횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0),ReEL(0),ReES(0);
var : cond1(false),cond2(false);
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if date != date[1] Then{
Rebuy = 0;
ReEL = 0;
ReSell = 0;
ReES = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매수") == true Then{
Rebuy = 0;
ReEL = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("재매수") == true Then
Rebuy = Rebuy+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매수청산4",1) == true Then
ReEL = ReEL+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매도") == true Then{
ReSell = 0;
ReES = 0;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("재매도") == true Then
ReSell = ReSell+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매도청산4",1) == true Then
ReES = ReES+1;
cond1 = C > O or (C==O and C >= C[1]);
cond2 = C < O or (C==O and C < C[1]);
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매수청산4",1) == false) or
(count > 0 and countif(C < mav4,BarsSinceExit(1)) >= 1)) and
MAv1 > MAv2 and
MAv2 > MAv3 and
MAv3 > MAv4 and
C > MAv1 Then{
Buy("최초매수", OnClose, DEF);
}
if MarketPosition == 1 Then{
ExitLong("매수청산2",AtStop,EntryPrice-Losspoint);
ExitLong("매수청산3",AtLimit,EntryPrice+Profitpoint);
}
if MarketPosition == 1 and C < MAv4 Then
Exitlong("매수청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매수",1) == true or IsEntryName("재매수",1) == true) and
IsExitName("매수청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
rebuy < 재매수횟수 and
countif(C < mav4,BarsSinceExit(1)) < 1 Then
buy("재매수");
}
if MarketPosition == 1 and BarsSinceEntry >= 3 and ReEL < 재매수청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitLong("매수청산4");
}
2. 매도
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3);
var : 재매수횟수(3),재매수청산횟수(3),재매도횟수(3),재매도청산횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0),ReEL(0),ReES(0);
var : cond1(false),cond2(false);
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if date != date[1] Then{
Rebuy = 0;
ReEL = 0;
ReSell = 0;
ReES = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매수") == true Then{
Rebuy = 0;
ReEL = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("재매수") == true Then
Rebuy = Rebuy+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매수청산4",1) == true Then
ReEL = ReEL+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매도") == true Then{
ReSell = 0;
ReES = 0;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("재매도") == true Then
ReSell = ReSell+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매도청산4",1) == true Then
ReES = ReES+1;
cond1 = C > O or (C==O and C >= C[1]);
cond2 = C < O or (C==O and C < C[1]);
if MarketPosition >= 0 and
(count == 0 or
(count > 0 and IsExitName("매도청산4",1) == false) or
(count > 0 and countif(C > mav4,BarsSinceExit(1)) >= 1)) and
MAv1 < MAv2 and
MAv2 < MAv3 and
MAv3 < MAv4 and
C < MAv1 Then{
Sell("최초매도");
}
if MarketPosition == -1 Then{
ExitShort("매도청산2",AtStop,EntryPrice+Losspoint);
ExitShort("매도청산3",AtLimit,EntryPrice-Profitpoint);
}
if MarketPosition == -1 and C > MAv4 Then
ExitShort("매도청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매도",1) == true or IsEntryName("재매도",1) == true) and
IsExitName("매도청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
reSell < 재매도횟수 and
countif(C > mav4,BarsSinceExit(1)) < 1 Then
Sell("재매도");
}
if MarketPosition == -1 and BarsSinceEntry >= 3 and ReES < 재매도청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitShort("매도청산4");
}
즐거운 하루되세요
> 난정욱 님이 쓴 글입니다.
> 제목 : Re : Re : Re : 전화주시기 바랍니다.(02-3453-1060)
> 안녕하세요
매수식 매도식을 따로 쓰고 있어서요
96번째 여기서 부터 짜르면 되는건가요?
if MarketPosition <= 0 and
아니네요 자세히 보니깐 매수식 매도식이 합쳐져 있는거 같네요
매수 매도 이평선값들이 달라서 매수수식따로 매도 수식따로
하고 싶은데 어쩌죠?
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : Re : 전화주시기 바랍니다.(02-3453-1060)
> 안녕하세요
예스스탁입니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3);
var : 재매수횟수(3),재매수청산횟수(3),재매도횟수(3),재매도청산횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0),ReEL(0),ReES(0);
var : cond1(false),cond2(false);
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
if date != date[1] Then{
Rebuy = 0;
ReEL = 0;
ReSell = 0;
ReES = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매수") == true Then{
Rebuy = 0;
ReEL = 0;
}
if MarketPosition == 1 and MarketPosition != MarketPosition[1] and IsEntryName("재매수") == true Then
Rebuy = Rebuy+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매수청산4",1) == true Then
ReEL = ReEL+1;
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("최초매도") == true Then{
ReSell = 0;
ReES = 0;
}
if MarketPosition == -1 and MarketPosition != MarketPosition[1] and IsEntryName("재매도") == true Then
ReSell = ReSell+1;
if BarsSinceExit(1) == 1 and MarketPosition != MarketPosition[1] and IsExitName("매도청산4",1) == true Then
ReES = ReES+1;
cond1 = C > O or (C==O and C >= C[1]);
cond2 = C < O or (C==O and C < C[1]);
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매수청산4",1) == false) or
(count > 0 and countif(C < mav4,BarsSinceExit(1)) >= 1)) and
MAv1 > MAv2 and
MAv2 > MAv3 and
MAv3 > MAv4 and
C > MAv1 Then{
Buy("최초매수", OnClose, DEF);
}
if MarketPosition == 1 Then{
ExitLong("매수청산2",AtStop,EntryPrice-Losspoint);
ExitLong("매수청산3",AtLimit,EntryPrice+Profitpoint);
}
if MarketPosition == 1 and C < MAv4 Then
Exitlong("매수청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매수",1) == true or IsEntryName("재매수",1) == true) and
IsExitName("매수청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
rebuy < 재매수횟수 and
countif(C < mav4,BarsSinceExit(1)) < 1 Then
buy("재매수");
}
if MarketPosition == 1 and BarsSinceEntry >= 3 and ReEL < 재매수청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitLong("매수청산4");
}
if MarketPosition <= 0 and
(count == 0 or
(count > 0 and IsExitName("매도청산4",1) == false) or
(count > 0 and countif(C > mav4,BarsSinceExit(1)) >= 1)) and
MAv1 < MAv2 and
MAv2 < MAv3 and
MAv3 < MAv4 and
C < MAv1 Then{
Sell("최초매도");
}
if MarketPosition == -1 Then{
ExitShort("매도청산2",AtStop,EntryPrice+Losspoint);
ExitShort("매도청산3",AtLimit,EntryPrice-Profitpoint);
}
if MarketPosition == -1 and C > MAv4 Then
ExitShort("매도청산1");
if count >= 1 Then{
if MarketPosition == 0 and
(IsEntryName("최초매도",1) == true or IsEntryName("재매도",1) == true) and
IsExitName("매도청산4",1) == True and
BarsSinceExit(1) >= 3 and
(Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond1 == true,음봉갯수) == 음봉갯수) and
reSell < 재매도횟수 and
countif(C > mav4,BarsSinceExit(1)) < 1 Then
Sell("재매도");
}
if MarketPosition == -1 and BarsSinceEntry >= 3 and ReES < 재매도청산횟수 then{
if Countif(cond1 == true,양봉갯수) == 양봉갯수 or Countif(cond2 == true,음봉갯수) == 음봉갯수 Then
ExitShort("매도청산4");
}
즐거운 하루되세요
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 전화주시기 바랍니다.(02-3453-1060)
>
> 난정욱 님이 쓴 글입니다.
> 제목 : 수식 문의
> 재매수 재매도시 시가 종가가 같은 봉(십자봉이나 망치봉)은 봉갯수에 포함이 안되던데 색깔에 따라 포함이 되게 할순 없나요?
그리고 재매수 재매도는 횟수 조정이 안되는거 같구요 봉갯수 카운터를 할때는
무조건 신호 나온 다음봉부터 계산이 되어 지게 부탁 드립니다
최초매수 이후 청산선이나 정해진 익절이 되기전에 아래식에서 좀 더 추가하고 싶은게
있습니다
최초매수후 하나는 아래식에 있는 음봉연속갯수를 가지고 청산 하고 싶구요
또하나는 양봉연속갯수를 가지고 청산을 하고 싶구요
두가지 조건중에 하나만 만족하면 반복매도가 되게 할려구요
위 두가지 조건으로 반복매도가 된 이후에 반복매수 진입시
조건도 두가지 조건중 하나만 만족하면 반복매수를 하고 싶습니다
반복매도이후 봉 부터해서 하나는 양봉연속갯수로 반복매수를 하고 싶구요
또하나는 연속음봉갯수를 가지로 반복매수를 하고 싶습니다
이 모든 변수값은 외부변수로 와야 하구요
그리고 아래식으로 하면 봉갯수를 카운터 하는게 매수신호 이후부터가 아니고
부탁 드립니다 다 되면 매도식도 부탁 드립니다
> 안녕하세요
예스스탁입니다.
식을 수정했습니다.
변수에 잘못된 값이 저장되어 있었습니다.
input : LossPoint(0.65),양봉갯수(3),음봉갯수(3),반복재매수횟수(3),반복재매도횟수(3);
input : ProfitPoint(3.7);
var : cnt(0),count(0),rebuy(0),resell(0);
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(8);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(16);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(23);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(47);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
count = 0;
for cnt = 0 to 20{
if sdate == EntryDate(cnt) Then
count = count+1;
}
rebuy = 0;
resell = 0;
for cnt = 20 downto 0{
if sdate == EntryDate(cnt) and IsEntryName("재매수",cnt) == true Then
rebuy = rebuy+1;
Else
rebuy = 0;
if cnt > 0 Then{
if sdate == ExitDate(cnt) and IsExitName("재매도",cnt) == true Then
resell = resell+1;
Else
resell = 0;
}
}
if date != date[1] Then
Condition1 = false;
if Condition1 == false and
MarketPosition == 0
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& C > MAv1
Then
{
Buy("매수", OnClose, DEF);
if Condition1 == false Then{
Condition1 = true;
var1 = c;
}
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
if Condition1 == true Then{
if C < mav4 or L <= var1-LossPoint or H >= var1+ProfitPoint Then
Condition1 = false;
}
if count >= 1 and condition1 == true Then{
if IsExitName("매도",1) == true and Countif(C>O,양봉갯수) == 양봉갯수 and rebuy < 반복재매수횟수 Then
buy("재매수");
if Countif(C<O,음봉갯수) == 음봉갯수 and resell < 반복재매도횟수 Then
ExitLong("매도");
}
난정욱
2013-06-18 18:12:24
난정욱 님에 의해 삭제된 답변입니다.
다음글
이전글