예스스탁
예스스탁 답변
2020-11-19 16:03:06
안녕하세요
예스스탁입니다.
수식에 {}사용에 에러가 있었습니다.
Vars : tf(5), firstBar(0), dayIdx(0);
Vars : mPos(0), buyCnt(0), sellCnt(0), bseIdx(0), ehh(0), ell(0), ehc(0), elc(0);
Arrays: bSetup[10](false), sSetup[10](false), cSetup[10](false);
Arrays: trTime[10](false);
Arrays: rangeD[10](0);
Arrays: r1[2](0), r2[2](0), pp[2](0), s1[2](0), s2[2](0);
Vars : stretch(0), vma(0);
if CurrentBar<=0 || (CurrentBar>0 && Date>Date[1]) then
{
firstBar = CurrentBar;
buyCnt = 0;
sellCnt = 0;
}
dayIdx = CurrentBar - firstBar;
mPos = MarketPosition(0);
if mPos==1 && mPos<>mPos[1] then
buyCnt = buyCnt + 1;
if mPos==-1 && mPos<>mPos[1] then
sellCnt = sellCnt + 1;
bseIdx = BarsSinceEntry(0);
ehh = Highest(h, bseIdx+1);
ell = Lowest(l, bseIdx+1);
ehc = Highest(c, bseIdx+1);
elc = Lowest(c, bseIdx+1);
for value1=1 to 10
{
rangeD[value1] = DayHigh(value1)-DayLow(value1);
}
pp[1] = (DayHigh(1)+DayLow(1)+DayClose(1)*2)/4;
r1[1] = 2*pp[1] - DayLow(1);
s1[1] = 2*pp[1] - DayHigh(1);
r2[1] = pp[1] + (r1[1] - s1[1]);
s2[1] = pp[1] - (r1[1] - s1[1]);
if DayOpen(0)>DayClose(1) then
pp[2] = (DayHigh(1)+DayClose(1)+2*DayLow(1))/2;
else
if DayOpen(0)<DayClose(1) then
pp[2] = (2*DayHigh(1)+DayClose(1)+DayLow(1))/2;
else
pp[2] = (DayHigh(1)+2*DayClose(1)+DayLow(1))/2;
r1[2] = pp[2] - DayLow(1);
s1[2] = pp[2] - DayHigh(1);
vma = Ma(c,260);
trTime[1] = dayIdx<=(120/tf); #당일 봉수가 24개봉 이하
trTime[2] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[3] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[4] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[5] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[6] = dayIdx==3; #당일 3번째봉
cSetup[1] = (buyCnt+sellCnt)<2 && trTime[1]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 24개봉 이하
cSetup[2] = (buyCnt+sellCnt)<2 && trTime[2]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 60개봉 이하
cSetup[3] = (buyCnt+sellCnt)<1 && trTime[3]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[4] = (buyCnt+sellCnt)<1 && trTime[4]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[5] = (buyCnt+sellCnt)<1 && trTime[5]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 60개봉 이하
cSetup[6] = (buyCnt+sellCnt)<1 && trTime[6]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 3번째봉
# 종가가중 피봇 : 리버스 허용
bSetup[1] = Bids>Asks*1.5 && c>r2[1];
sSetup[1] = Bids<Asks/1.5 && c<s2[1];
bSetup[2] = Bids>Asks && DayLow<s1[1] && CrossUp(c,s1[1]);
sSetup[2] = Bids<Asks && DayHigh>r1[1] && CrossDown(c,r1[1]);
# 디마크 : 리버스 불허
stretch = (DayHigh(1)-DayLow(1))/3;
bSetup[3] = c>(DayOpen + stretch) && DayOpen>r1[2];
sSetup[3] = c<(DayOpen - stretch) && DayOpen<s1[2];
bSetup[4] = DayOpen<s1[2] && c>s1[2] && DayLow>(DayOpen - stretch) && h<DayHigh;
sSetup[4] = DayOpen>r1[2] && c<r1[2] && DayHigh<(DayOpen + stretch) && l>DayLow;
# 이평 돌파
bSetup[5] = (DayOpen<vma && c>vma[1]);
sSetup[5] = (DayOpen>vma && c<vma[1]);
# 갭필
bSetup[6] = DayOpen<DayClose(1)*0.99 && Bids>Asks*1.5 && c>DayOpen;
sSetup[6] = DayOpen>DayClose(1)*1.01 && Bids<Asks/1.5 && c<DayOpen;
/*************************** Entry ********************************************/
if cSetup[1] then
{
if bSetup[1] then buy("3.2.le");
// if sSetup[1] then Sell("3.2.se");
}
if cSetup[2] then
{
if bSetup[2] then Sell("4.1.le");
if sSetup[2] then buy("4.1.se");
}
if cSetup[3] then
{
if bSetup[3] then Buy("3.0.le");
if sSetup[3] then buy("3.0.se");
}
if cSetup[4] then
{
if bSetup[4] then Buy("4.0.le");
if sSetup[4] then Sell("4.0.se");
}
if cSetup[5] then
{
if bSetup[5] then sell("2.0.le");
if sSetup[5] then Sell("2.0.se");
}
/*
if cSetup[6] then {
if bSetup[6] then Buy("6.0.le");
if sSetup[6] then Sell("6.0.se");
}
*/
Input : Period(12), Period1(5), Period2(5);
Value1 = StochasticsD(Period,Period1,Period2);
/*
if value1 < 20 Then
sell("과열권매도");
if marketposition == -1 then
buy("",atstop,entryprice+pricescale*20);
*/
if value1 > 90 Then
buy("과열권매수");
// if marketposition == 1 then
// sell("",atstop,entryprice-pricescale*20);
//-----------------------------------------------------------------
input : Period3(14), emaPeriod2(10);
var : P이평(0), M이평(0);
P이평 = ema(DIPlus(Period3), emaPeriod2); //PDI의 10일 이평
M이평 = ema(DIMinus(Period3), emaPeriod2); //MDI의 10일 이평
If (stime > 91000 and stime < 100000 ) THEN
{
if crossup(P이평, M이평) then
buy();
}
Input : SPeriod(10),DNSim(25),Upsim(80);
var3 = Simrido(SPeriod);
//---------------------------------------------
If (stime > 90000 and stime < 150000) THEN
{
if var3 <= DNSim Then
Sell("Simrido");
if var3 >= Upsim Then
buy("투자심리");
}
//------------------------------------------------------
Inputs: Length(5), NBars(3);
//Description : Bearish Engulfing Pattern
If CountIF(BullishEngulfing(Length), NBars) > 0 Then
sell ("BE_LE", AtStop, High);
//Description : Bullish Engulfing Pattern
If CountIF(BearishEngulfing(Length), NBars) > 0 Then
buy("BE_SE", AtStop, Low);
//-----------------------------------------------
Inputs: Length1(5), ATRs(1.5), Pval(0.05);
Variables: KLower(0), SellSetup(False), SellBase(0);
KLower = KeltnerChannel(Close, Length1, -ATRs);
Condition1 = CrossDown(Close, KLower[1]);
If (stime >= 94000 and stime < 133000) THEN
{
If MarketPosition() == -1 OR Close > MA(Close, Length1) Then
SellSetup = False;
Else If Condition1 Then Begin
SellSetup = True;
SellBase = Low;
End;
If SellSetup Then
Sell ("Kltr", AtStop, SellBase - Pval);
}
//---------------------------------------------
if dayindex == 1 Then{
if C > O Then
buy("시초매수");
if C < O Then
sell("시초매도");
}
//-------------------------------------------------------------
var : O_Price(0);
O_Price = (Dayopen+Dayopen(1)+Dayopen(2)+Dayopen(3)+Dayopen(4))/5;
if CrossUp(C, O_Price) Then
{
buy("5일이동평균d");
}
//---------------------------------------------------------------------
Inputs: RSILength1(9), OverBought1(70);
input : shortPeriod9(6), longPeriod9(26), Period9(9);
var : MACDV(0),MACDS(0),Gval(0),MACDval(0);
MACDV = MACD(shortPeriod9, longPeriod9);//MACD
MACDS = ema(MACD(shortPeriod9, longPeriod9), Period9);//MACD signal
If (stime > 100000 and stime < 130000) THEN
{
If CrossDown(RSI(RSILength1), OverBought1) Then
Sell ("RSI30봉내청산");
}
If (stime > 100000 and stime < 130000) THEN
{
if CrossDown(MACDV, MACDS) then
{
var11 = MACDV; #데드시 MACD값
var12 = var11[1]; #직전 데드시 MACD값
var13 = index; #데드시 Index
var14 = var13[1]; #직전 데드시 Index
if var12 > 0 and var11 < var12 and var13 <= var14+40 Then
Sell("데드시");
}
}
Input : Period4(19), Period41(10), Period42(12);
value91 = StochasticsK(Period4,Period41);
value92 = StochasticsD(Period4,Period41,Period42);
If CrossDown(value91, value92) Then
{
var1 = C;#데드크로스시 발생시 초기값
var2 = var1[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value1 < value2 Then
{
if C < var1 Then
var1 = C;
}
if CrossUp(value91,value92)
Then{
var3 = value91; #골든크로스시 value1값
var4 = var3[1];#직전골든크로스시 value1값
if var3 > var4 and var1 < var2 Then
buy("다이버젼스");
}
즐거운 하루되세요
> 엉덩공주 님이 쓴 글입니다.
> 제목 : 문의
> 아래의 식을 검증하니 에러가 뜹니다.
고쳐주셔요
그리고 무슨의미인지 알려주셨으면 합니다.
//--------------------------------------------------------------
Vars : tf(5), firstBar(0), dayIdx(0);
Vars : mPos(0), buyCnt(0), sellCnt(0), bseIdx(0), ehh(0), ell(0), ehc(0), elc(0);
Arrays: bSetup[10](false), sSetup[10](false), cSetup[10](false);
Arrays: trTime[10](false);
Arrays: rangeD[10](0);
Arrays: r1[2](0), r2[2](0), pp[2](0), s1[2](0), s2[2](0);
Vars : stretch(0), vma(0);
if CurrentBar<=0 || (CurrentBar>0 && Date>Date[1]) then {
firstBar = CurrentBar;
buyCnt = 0;
sellCnt = 0;
}
dayIdx = CurrentBar - firstBar;
mPos = MarketPosition(0);
if mPos==1 && mPos<>mPos[1] then
buyCnt = buyCnt + 1;
if mPos==-1 && mPos<>mPos[1] then
sellCnt = sellCnt + 1;
bseIdx = BarsSinceEntry(0);
ehh = Highest(h, bseIdx+1);
ell = Lowest(l, bseIdx+1);
ehc = Highest(c, bseIdx+1);
elc = Lowest(c, bseIdx+1);
for value1=1 to 10 {
rangeD[value1] = DayHigh(value1)-DayLow(value1);
}
pp[1] = (DayHigh(1)+DayLow(1)+DayClose(1)*2)/4;
r1[1] = 2*pp[1] - DayLow(1);
s1[1] = 2*pp[1] - DayHigh(1);
r2[1] = pp[1] + (r1[1] - s1[1]);
s2[1] = pp[1] - (r1[1] - s1[1]);
if DayOpen(0)>DayClose(1) then
pp[2] = (DayHigh(1)+DayClose(1)+2*DayLow(1))/2;
else
if DayOpen(0)<DayClose(1) then
pp[2] = (2*DayHigh(1)+DayClose(1)+DayLow(1))/2;
else
pp[2] = (DayHigh(1)+2*DayClose(1)+DayLow(1))/2;
r1[2] = pp[2] - DayLow(1);
s1[2] = pp[2] - DayHigh(1);
vma = Ma(c,260);
trTime[1] = dayIdx<=(120/tf); #당일 봉수가 24개봉 이하
trTime[2] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[3] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[4] = dayIdx<=(180/tf); #당일 봉수가 36개봉 이하
trTime[5] = dayIdx<=(300/tf); #당일 봉수가 60개봉 이하
trTime[6] = dayIdx==3; #당일 3번째봉
cSetup[1] = (buyCnt+sellCnt)<2 && trTime[1]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 24개봉 이하
cSetup[2] = (buyCnt+sellCnt)<2 && trTime[2]==true; #매수진입횟수+매도진입횟수가 2 미만이고 당일 봉수가 60개봉 이하
cSetup[3] = (buyCnt+sellCnt)<1 && trTime[3]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[4] = (buyCnt+sellCnt)<1 && trTime[4]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 36개봉 이하
cSetup[5] = (buyCnt+sellCnt)<1 && trTime[5]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 봉수가 60개봉 이하
cSetup[6] = (buyCnt+sellCnt)<1 && trTime[6]==true; #매수진입횟수+매도진입횟수가 1 미만이고 당일 3번째봉
# 종가가중 피봇 : 리버스 허용
bSetup[1] = Bids>Asks*1.5 && c>r2[1];
sSetup[1] = Bids<Asks/1.5 && c<s2[1];
bSetup[2] = Bids>Asks && DayLow<s1[1] && CrossUp(c,s1[1]);
sSetup[2] = Bids<Asks && DayHigh>r1[1] && CrossDown(c,r1[1]);
# 디마크 : 리버스 불허
stretch = (DayHigh(1)-DayLow(1))/3;
bSetup[3] = c>(DayOpen + stretch) && DayOpen>r1[2];
sSetup[3] = c<(DayOpen - stretch) && DayOpen<s1[2];
bSetup[4] = DayOpen<s1[2] && c>s1[2] && DayLow>(DayOpen - stretch) && h<DayHigh;
sSetup[4] = DayOpen>r1[2] && c<r1[2] && DayHigh<(DayOpen + stretch) && l>DayLow;
# 이평 돌파
bSetup[5] = (DayOpen<vma && c>vma[1]);
sSetup[5] = (DayOpen>vma && c<vma[1]);
# 갭필
bSetup[6] = DayOpen<DayClose(1)*0.99 && Bids>Asks*1.5 && c>DayOpen;
sSetup[6] = DayOpen>DayClose(1)*1.01 && Bids<Asks/1.5 && c<DayOpen;
/*************************** Entry ********************************************/
if cSetup[1] then {
if bSetup[1] then buy("3.2.le");
// if sSetup[1] then Sell("3.2.se");
}
if cSetup[2] then {
if bSetup[2] then Sell("4.1.le");
if sSetup[2] then buy("4.1.se");
}
if cSetup[3] then {
if bSetup[3] then Buy("3.0.le");
if sSetup[3] then buy("3.0.se");
}
if cSetup[4] then {
if bSetup[4] then Buy("4.0.le");
if sSetup[4] then Sell("4.0.se");
}
if cSetup[5] then {
if bSetup[5] then sell("2.0.le");
if sSetup[5] then Sell("2.0.se");
}
/*
if cSetup[6] then {
if bSetup[6] then Buy("6.0.le");
if sSetup[6] then Sell("6.0.se");
}
*/
Input : Period(12), Period1(5), Period2(5);
Value1 = StochasticsD(Period,Period1,Period2);
/*
if value1 < 20 Then
sell("과열권매도");
if marketposition == -1 then
buy("",atstop,entryprice+pricescale*20);
*/
if value1 > 90 Then
buy("과열권매수");
// if marketposition == 1 then
// sell("",atstop,entryprice-pricescale*20);
}
//-----------------------------------------------------------------
If (stime > 91000 and stime < 100000 ) THEN {
input : Period3(14), emaPeriod2(10);
var : P이평(0), M이평(0);
P이평 = ema(DIPlus(Period3), emaPeriod2); //PDI의 10일 이평
M이평 = ema(DIMinus(Period3), emaPeriod2); //MDI의 10일 이평
if crossup(P이평, M이평) then
buy();
}
//---------------------------------------------
If (stime > 90000 and stime < 150000) THEN {
Input : SPeriod(10),DNSim(25),Upsim(80);
var3 = Simrido(SPeriod);
if var3 <= DNSim Then
Sell("Simrido");
if var3 >= Upsim Then
buy("투자심리");
}
//------------------------------------------------------
Inputs: Length(5), NBars(3);
//Description : Bearish Engulfing Pattern
If CountIF(BullishEngulfing(Length), NBars) > 0 Then
sell ("BE_LE", AtStop, High);
//Description : Bullish Engulfing Pattern
If CountIF(BearishEngulfing(Length), NBars) > 0 Then
buy("BE_SE", AtStop, Low);
//-----------------------------------------------
If (stime >= 94000 and stime < 133000) THEN {
Inputs: Length1(5), ATRs(1.5), Pval(0.05);
Variables: KLower(0), SellSetup(False), SellBase(0);
KLower = KeltnerChannel(Close, Length1, -ATRs);
Condition1 = CrossDown(Close, KLower[1]);
If MarketPosition() == -1 OR Close > MA(Close, Length1) Then
SellSetup = False;
Else
If Condition1 Then Begin
SellSetup = True;
SellBase = Low;
End;
If SellSetup Then
Sell ("Kltr", AtStop, SellBase - Pval);
}
//---------------------------------------------
if dayindex == 1 Then{
if C > O Then
buy("시초매수");
if C < O Then
sell("시초매도");
}
}
//-------------------------------------------------------------
var :O_Price(0);
O_Price = (Dayopen+Dayopen(1)+Dayopen(2)+Dayopen(3)+Dayopen(4))/5;
if CrossUp(C, O_Price) Then
{
buy("5일이동평균d");
}
}
//---------------------------------------------------------------------
If (stime > 100000 and stime < 130000) THEN {
Inputs: RSILength1(9), OverBought1(70);
If CrossDown(RSI(RSILength1), OverBought1) Then
Sell ("RSI30봉내청산");
}
If (stime > 100000 and stime < 130000) THEN {
input : shortPeriod9(6), longPeriod9(26), Period9(9);
var : MACDV(0),MACDS(0),Gval(0),MACDval(0);
MACDV = MACD(shortPeriod9, longPeriod9);//MACD
MACDS = ema(MACD(shortPeriod9, longPeriod9), Period9);//MACD signal
if CrossDown(MACDV, MACDS) then {
var11 = MACDV; #데드시 MACD값
var12 = var11[1]; #직전 데드시 MACD값
var13 = index; #데드시 Index
var14 = var13[1]; #직전 데드시 Index
if var12 > 0 and var11 < var12 and var13 <= var14+40 Then
Sell("데드시");
}
}
Input : Period4(19), Period41(10), Period42(12);
value91 = StochasticsK(Period4,Period41);
value92 = StochasticsD(Period4,Period41,Period42);
If CrossDown(value91, value92) Then {
var1 = C;#데드크로스시 발생시 초기값
var2 = var1[1]; # 직전 데드크로스 구간의 종가 중 최저가
}
#가장 최근 데드크로스 구간의 종가중 최저가 계산
if value1 < value2 Then{
if C < var1 Then
var1 = C;
}
if CrossUp(value91,value92) Then{
var3 = value91; #골든크로스시 value1값
var4 = var3[1];#직전골든크로스시 value1값
if var3 > var4 and var1 < var2 Then
buy("다이버젼스");
}