예스스탁
예스스탁 답변
2020-04-01 16:31:07
안녕하세요
예스스탁입니다.
문법검증은 문법상 오류를 체크하는 부분입니다.
차트에 적용시 신호가 발생여부와는 관계가 없습니다.
문법검증 통과후에 차트에 원하는 신호가 안나오면 수식내에
조건이나 변수값을 확인하셔야 합니다.
올리신 식에 Condition1,Condition2,var1,var2가 있는데 해당 변수에 저장된 값이 없습니다.
참조데이타를 사용하면서 다른이름(cond1,cond2,v1,v2)의 변수로 모두 변경이 된 상태입니다.
Input : RSIPeriod(7),RSI매수값(65),SimPeriod(7),심리도값(45);
Input : N1(1),초기화(7);
Input : CCI기간(20),CCI값(400);
Input : 하락틱수(5);
Input : 즉시익절1(180),즉시손절1(60);
Input : 분할매수횟수(1),분할매수틱수(50);
Input : RSIPeriod1(8),A(40),B(25);
Input : N2(0.6),N3(0.02);
Input : tr수익(150),tr하락(25);
Input : 거래량1(0),거래량2(14000);
Input : 저점손절틱수(0);
Input : N4(0.6);
Input : 본전생각틱(32);
input : af(0.02),maxaf(0.2);
var : BBup(0,data1),cond1(false,data1),cond2(false,data1),v1(0,data1),v2(0,data1);
var : cnt(0,data1),SigSum(0,data1),count2(0,data1),RSIsig(0,data1);
Var : Counter(0,data1), DownAmt(0,data1), UpAmt(0,data1), UpSum(0,data1), DownSum(0,data1), UpAvg(0,data1), DownAvg(0,data1);
var : idx(0,data1), PreUpAvg(0,data1), preDownAvg(0,data1),RSIVv(0,data1);
var : CCIv(0,data1),RSIv(0,data1),Simri(0,data1),sellSetup(false,data1),DD(0,data1),entry(0,data1);
var : sarv(0,data2);
Array : C1[100](0,data1);
CCIv = data1(CCI(CCI기간));
RSIV = data1(RSI(RSIPeriod));
Simri = data1(Simrido(SimPeriod));
sarv = data2(sar(af,maxaf));
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == RSIPeriod1+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod1 - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod1;
DownAvg = DownSum / RSIPeriod1;
}
If idx > RSIPeriod1+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1;
DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1;
}
If UpAvg + DownAvg <> 0 Then
RSIvv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIvv = 0;
if data1(bdate != bdate[1]) Then
{
Entry = 0;
Cond2 = true;
}
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
if TotalTrades > TotalTrades[1] and
(IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then
Cond2 = false;
Cond1 = RSIv > RSI매수값 and Simri > 심리도값 and RSIVV < A and RSIVV > B and v > 거래량1 and v < 거래량2 ;
if bdate != bdate[1] Then
{
DD = DD+1;
if v2 > 0 and DD == v2+초기화 Then
SellSetup = false;
}
if SellSetup == false and Cond1 == true and Cond1[1] == false Then
{
v1 = data1(C);
v2 = DD;
SellSetup = true;
}
if Cond2 == true and MarketPosition == 0 and SellSetup == true and C > O and entry == 0 and data2(c<sarv) Then
sell("매도",AtStop,v1+PriceScale*하락틱수);
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 알려주신 수식(매수버전)을 매도 버전으로 변경했는데... 수식에는 이상이 없다고 나?
> 알려주신 수식(매수버전)을 매도 버전으로 제가 임의로 변경해 보았는데 ...
수식에는 이상이 없다고 나오는데 거래이력이 나오질 않네요...
어떤것을 바꿨냐면
buySetup --> sellSetup
data2(c>sarv) --> data2(c<sarv)
변경하였는데...또 바꿀게 있나요?
사용은 하고 있는데 잘모르겠어요..맞게 사용하고 있는지..ㅠㅠ
Input : RSIPeriod(7),RSI매수값(65),SimPeriod(7),심리도값(45);
Input : N1(1),초기화(7);
Input : CCI기간(20),CCI값(400);
Input : 하락틱수(5);
Input : 즉시익절1(180),즉시손절1(60);
Input : 분할매수횟수(1),분할매수틱수(50);
Input : RSIPeriod1(8),A(40),B(25);
Input : N2(0.6),N3(0.02);
Input : tr수익(150),tr하락(25);
Input : 거래량1(0),거래량2(14000);
Input : 저점손절틱수(0);
Input : N4(0.6);
Input : 본전생각틱(32);
input : af(0.02),maxaf(0.2);
var : BBup(0,data1),cond1(false,data1),cond2(false,data1),v1(0,data1),v2(0,data1);
var : cnt(0,data1),SigSum(0,data1),count2(0,data1),RSIsig(0,data1);
Var : Counter(0,data1), DownAmt(0,data1), UpAmt(0,data1), UpSum(0,data1), DownSum(0,data1), UpAvg(0,data1), DownAvg(0,data1);
var : idx(0,data1), PreUpAvg(0,data1), preDownAvg(0,data1),RSIVv(0,data1);
var : CCIv(0,data1),RSIv(0,data1),Simri(0,data1),sellSetup(false,data1),DD(0,data1),entry(0,data1);
var : sarv(0,data2);
Array : C1[100](0,data1);
CCIv = data1(CCI(CCI기간));
RSIV = data1(RSI(RSIPeriod));
Simri = data1(Simrido(SimPeriod));
sarv = data2(sar(af,maxaf));
if Bdate != Bdate[1] Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == RSIPeriod1+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod1 - 1
{
UpAmt = C1[Counter] - C1[Counter+1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
}
UpAvg = UpSum / RSIPeriod1;
DownAvg = DownSum / RSIPeriod1;
}
If idx > RSIPeriod1+2 Then
{
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else
{
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod1 - 1) + UpAmt) / RSIPeriod1;
DownAvg = (preDownAvg * (RSIPeriod1 - 1) + DownAmt) / RSIPeriod1;
}
If UpAvg + DownAvg <> 0 Then
RSIvv = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIvv = 0;
if data1(bdate != bdate[1]) Then
{
Entry = 0;
Cond2 = true;
}
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
if TotalTrades > TotalTrades[1] and
(IsExitName("즉시손절1",1) == true or IsExitName("본전청산1",1)) then
Condition2 = false;
Condition1 = RSIv > RSI매수값 and Simri > 심리도값 and RSIVV < A and RSIVV > B and v > 거래량1 and v < 거래량2 ;
if bdate != bdate[1] Then
{
DD = DD+1;
if var2 > 0 and DD == var2+초기화 Then
SellSetup = false;
}
if SellSetup == false and Condition1 == true and Condition1[1] == false Then
{
v1 = data1(C);
v2 = DD;
SellSetup = true;
}
if Condition2 == true and MarketPosition == 0 and SellSetup == true and C > O and entry == 0 and data2(c<sarv) Then
sell("매도",AtStop,var1+PriceScale*하락틱수);