커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1637
글번호 230811
답변완료
79357 번 수식의뢰 에서
작성해주신 수식에서
스토캐스틱RSI 값이
79310번 글에서 요청하여 작성해주신 수식의 값과 다른데
타주스스토캐스틱RSI(14,3,3) 와
현 설정챠트 스토캐스틱RSI(14,3,3) 동일수식 변수입니다.
수정부탁드립니다
사용자함수로 StoRsi StoK StoD 를 작성해두었으니 참고 바랍니다.
/////////////
input : RSIPeriod(NumericSimple),Period(NumericSimple),K(NumericSimple),D(NumericSimple);
var : RSIV(0);
RSIv = RSI(RSIPeriod);
StoRsi = (RSIv- lowest(RSIv,Period)) / ( highest(RSIv,Period)-lowest(RSIv,Period) ) *100 ;
///////////
input : RSIPeriod(NumericSimple),Period(NumericSimple),K(NumericSimple),D(NumericSimple);
var : RSIV(0),StoRsi(0);
RSIv = RSI(RSIPeriod);
StoRsi = (RSIv- lowest(RSIv,Period)) / ( highest(RSIv,Period)-lowest(RSIv,Period) ) *100 ;
StoK = ma(StoRsi,K);
//////////////
input : RSIPeriod(NumericSimple),Period(NumericSimple),K(NumericSimple),D(NumericSimple);
var : RSIV(0),StoRsi(0),StoK(0);
RSIv = RSI(RSIPeriod);
StoRsi = (RSIv- lowest(RSIv,Period)) / ( highest(RSIv,Period)-lowest(RSIv,Period) ) *100 ;
StoK = ma(StoRsi,K);
StoD = ma(StoK,D);
//////////////////
===========
안녕하세요
예스스탁입니다.
Input : 타주기분(15), RSIPeriod(14),Period(14),K(3),D(3);
var : cnt(0),S1(0),D1(0),TM(0),TF(0);
var : SigSum(0),count2(0),RSIsig(0);
Var : Counter(0), DownAmt(0), UpAmt(0), UpSum(0), DownSum(0), UpAvg(0), DownAvg(0);
var : idx(0), PreUpAvg(0), preDownAvg(0),HH(0),LL(0),sum1(0),sum2(0);
Array : C1[100](0),RSIV[100](-1),StoRsi[100](-1),Stok[100](-1),StoD[100](-1);
if Bdate != Bdate[1] Then
{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(stime)-S1;
Else
TM = TimeToMinutes(stime)+1440-S1;
TF = TM%타주기분;
if Bdate != Bdate[1] or
(Bdate == Bdate[1] and 타주기분 > 1 and TF < TF[1]) or
(Bdate == Bdate[1] and 타주기분 > 1 and TM >= TM[1]+타주기분) or
(Bdate == Bdate[1] and 타주기분 == 1 and TM > TM[1]) Then
{
for cnt = 1 to 99
{
C1[cnt] = C1[cnt-1][1];
RSIv[cnt] = RSIv[cnt-1][1];
StoRsi[cnt] = StoRsi[cnt-1][1];
Stok[cnt] = Stok[cnt-1][1];
Stod[cnt] = Stod[cnt-1][1];
}
PreUpAvg = UpAvg[1];
preDownAvg = DownAvg[1];
idx = idx + 1;
}
C1[0] = C;
If idx == RSIPeriod+2 Then
{
UpSum = 0;
DownSum = 0;
For Counter = 0 To RSIPeriod - 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 / RSIPeriod;
DownAvg = DownSum / RSIPeriod;
}
If idx > RSIPeriod+2 Then {
UpAmt = C1[0] - C1[1];
If UpAmt >= 0 Then
DownAmt = 0;
Else {
DownAmt = -UpAmt;
UpAmt = 0;
}
UpAvg = (PreUpAvg * (RSIPeriod - 1) + UpAmt) / RSIPeriod;
DownAvg = (preDownAvg * (RSIPeriod - 1) + DownAmt) / RSIPeriod;
}
If UpAvg + DownAvg <> 0 Then
RSIv[0] = 100 * UpAvg / (UpAvg + DownAvg);
Else
RSIv[0] = 0;
if RSIV[Period-1] >= 0 Then
{
hh = RSIV[0];
LL = RSIV[0];
For cnt = 0 to Period-1
{
if RSIV[cnt] > hh Then
hh = RSIV[cnt];
if RSIV[cnt] < ll Then
ll = RSIV[cnt];
}
StoRsi[0] = (RSIv[0]- LL) / (HH-LL) *100 ;
}
if StoRsi[K-1] >= 0 Then
{
sum1 = 0;
For cnt = 0 to K-1
{
sum1 = sum1 + StoRsi[cnt];
}
stok[0] = sum1/K;
plot1(stok[0],"stoRSIK");
}
if Stok[D-1] >= 0 Then
{
sum2 = 0;
For cnt = 0 to D-1
{
sum2 = sum2 + StoK[cnt];
}
stod[0] = sum2/d;
plot2(stoD[0],"stoRSID");
}
PlotBaseLine1(20, "기준선 20");
PlotBaseLine2(80, "기준선 80");
PlotBaseLine3(50, "기준선 50");
}
2022-10-28
957
글번호 163359
답변완료
부탁드립니다.
문의드립니다.
전에 한번 문의드렸는데
누락된 수식이 있어서 재 문의 드립니다.
키움조건식인데
1. 첫번째
B = sum(if(c>o,v,if(c<o,-v,0)));
B2 = valueWhen(1, date(1)!=date, B(1) );
B - B2
2. 두번째는 분봉피보나치 지표인데
커뮤니티에 답변된 수식과 아래의 수식의 지표선과 다르네요.
---..23.6---
AH=dayhigh();
AL=daylow();
B1=BarsSince(AH==H);
B2=BarsSince(AL==L);
B3=AH-AL;
P1=if(B1>B2,AL+B3*0.236,AH-B3*0.236);
P2=if(B1>B2,AL+B3*0.382,AH-B3*0.382);
P1
---38.2
AH=dayhigh();
AL=daylow();
B1=BarsSince(AH==H);
B2=BarsSince(AL==L);
B3=AH-AL;
P1=if(B1>B2,AL+B3*0.236,AH-B3*0.236);
P2=if(B1>B2,AL+B3*0.382,AH-B3*0.382);
P2
--- 50
AH=dayhigh();
AL=daylow();
B1=BarsSince(AH==H);
B2=BarsSince(AL==L);
B3=AH-AL;
P3=if(B1>B2,AL+B3*0.5,AH-B3*0.5);
P4=if(B1>B2,AL+B3*0.618,AH-B3*0.618);
P3
--61.8
B1=BarsSince(AH==H);
B2=BarsSince(AL==L);
B3=AH-AL;
P3=if(B1>B2,AL+B3*0.5,AH-B3*0.5);
P4=if(B1>B2,AL+B3*0.618,AH-B3*0.618);
P4
변환 부탁드립니다.
수고하세요
2022-10-28
1119
글번호 163357
답변완료
당일 청산 실매매 질문드립니다.
1.분봉 or 일봉 시스템 적용시 당일청산 시간(03:29:00 PM) 적용시 동시호가 매매가 가능한가요?
2. 불가능시 매도만 수동으로 하고 싶을 경우 강제청산 03:29:00 PM 적용하고 수동으로 당일 종가 매도나 다음날 시가 매도하면 시스템은 정상 작동하나요? 시스템은 종가나 시가로 매도하는 시스템은 아닐 경우를 말합니다.
3. 2의 방법이 불가능하다면 가능한 방법은 있을까요?
4. 일봉에서 Nextbaropen으로 돌파매수 사용시 Nextbaropen이 다음봉 시가이기 때문에
매수 당일의 저가 고가 등은 수식에 사용하면 안되는게 맞는건가요?
항상 감사합니다.
2022-10-28
1003
글번호 163354
답변완료
문의드립니다.
질문1)
HH=Highest(H,240)[1] ;
1) HH대비 저가의 하락률이 30%보다 크고 (하락률을 조정할 수 있도록 INPUT변수로)
2) 이 때의 봉의 저가를 기준으로 한 봉 또는 여러 봉을 합쳐서 위의 하락률의 1/3이상의 상승(10%)이 있고 난 후에
3) 다시 하락하여 봉의 종가가 2)번의 봉의 저가를 완전 이탈하여 내려 가고
4) 위의 조건이 모두 순서대로 만족되면 2)번봉의 저가를 "첫번째저가"로
10%이상 상승한 한 봉 또는 여러 봉들의 최고가를 "첫번째고가"로, 그리고 HH대비 2)번봉의 저가까지의 하락률을 "첫번째하락률"로 정한다.
a) "첫번째고가"대비 저가의 하락률이 30%보다 크고
b) 이 때의 봉의 저가를 기준으로 한 봉 또는 여러 봉을 합쳐서 위의 하락률의 1/3이상의 상승(10%)이 있고 난 후에
c) 다시 하락하여 봉의 종가가 b)의 봉의 저가를 완전 이탈하여 내려 가고
d) 위의 조건이 모두 순서대로 만족되면 b)의 봉의 저가를 "두번째저가"로
10%이상 상승한 한 봉 또는 여러 봉들의 최고가를 "두번째고가"로, 그리고 "첫번째고가"대비 b)봉의 저가까지의 하락률을 "두번째하락률"로 정한다.
그리고 첫번째하락률과 두번째하락률 중에서 큰 값을 AA로 작은 값을 BB로 한다.
이상 "두번째저가" 까지 만들어진 종목들 중에서 다시 하락하여
"두번째고가"대비 현재봉 저가의 하락률 즉 "세번째하락률"이 BB보다 크고 AA보다 작은 종목을 찾는 검색식
질문2)
HH2= 25%이상의 장대양봉의 고가
장대양봉출현후 N봉 이내에서
질문1)의 HH대신 HH2로 교체하고
그 외의 모든 조건은 질문1)과 같은 조건을 충족하는 종목을 찾는 검색식
위의 종목검색식을 뼈대로 하여 여러조건들을 추가하고자 하오니 주석을 가급적 상세하게 달아 주시면 감사하겠습니다.
수식 작성 실력이 모자르다 보니 여러 가지로 성가시게 해 드려 죄송하고 항상 귀찮은 질문에도 친절히 답변해 주셔서 감사드립니다.
2022-10-28
949
글번호 163350
답변완료
추세선 동그라미 위치
input : Period(12),선두께(1),pt(0.35);
Var: 상승색(red), 하락색(blue);
Var:j(0),T(0),txx(0);
Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0),
date21(0),date22(0),time21(0),time22(0),
date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0);
Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/;
Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0);
r[0] = 0;
r[1] = 2;
r[2] = 3.;
r[3] = -1;
r[4] = -2.;
r[5] = 1;
r[6] = 0.5;
For j = 0 To 19
{
HiBar[j] = HiBar[j] + 1;
LoBar[j] = LoBar[j] + 1;
}
if crossup(c,highest(H,Period)[1]) Then
T = 1;
if CrossDown(c,Lowest(L,Period)[1]) Then
T = -1;
If T == -1 Then
{
If T[1] != -1 Then
{
For j = 18 DownTo 0
{
LoVal[j+1] = LoVal[j];
LoBar[j+1] = LoBar[j];
//ZZ[j+1] = ZZ[j];
}
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date11 = date[HiBar[0]];
time11 = stime[HiBar[0]];
Value11 = HiVal[0];
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,하락색);
Tx = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 빨강
Text_SetColor(Tx,Blue);
Text_SetStyle(Tx,2,2);
Text_SetSize(tx,6);
//tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine);
//Text_SetStyle(tx,2,1);
date21 = date[HiBar[0]];
time21 = stime[HiBar[0]];
date22 = date[0];
time22 = stime[0];
for j = 0 to 6
{
fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]);
}
#TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]);
#TL_SetColor(TL2[1],RED);
#TL_SetStyle(TL2[1], 3);
#TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]);
#TL_SetColor(TL2[2],RED);
#TL_SetSize(TL2[2],1);
#TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2));
#Text_SetColor(Tx2[2],BWHITE);
#Text_SetStyle(TX2[2],1,1);
#TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]);
#TL_SetColor(TL2[3],RED);
#TL_SetStyle(TL2[3], 3);
#TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]);
#TL_SetColor(TL2[4],RED);
#TL_SetSize(TL2[4],1);
#TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2));
#Text_SetColor(Tx2[4],BWHITE);
#Text_SetStyle(TX2[4],1,0);
}
If LoVal[0] > L Then
{
LoVal[0] = L;
LoBar[0] = 0;
//ZZ[0] = L;
date12 = date[LoBar[0]];
time12 = stime[LoBar[0]];
Value12 = LoVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date22 = date[0];
time22 = stime[0];
TL_SetEnd(TL2[0],date22,time22,fr[0]);
TL_SetEnd(TL2[1],date22,time22,fr[1]);
TL_SetEnd(TL2[2],date22,time22,fr[2]);
Text_SetLocation(TX2[2],date22,time22,fr[2]);
TL_SetEnd(TL2[3],date22,time22,fr[3]);
TL_SetEnd(TL2[4],date22,time22,fr[4]);
Text_SetLocation(TX2[4],date22,time22,fr[4]);
TL_SetEnd(TL2[5],date22,time22,fr[5]);
TL_SetEnd(TL2[6],date22,time22,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
If T == 1 Then
{
If T[1] != 1 Then
{
For j = 18 DownTo 0
{
HiVal[j+1] = HiVal[j];
HiBar[j+1] = HiBar[j];
//ZZ[j+1] = ZZ[j];
}
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date11 = date[LoBar[0]];
time11 = stime[LoBar[0]];
Value11 = LoVal[0];
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
TL1 = TL_New(date11,time11,Value11,date12,time12,Value12);
TL_SetColor(TL1,상승색);
Tx1 = Text_New(date11,time11,Value11,"●");
#동그라미 색상, 파랑
Text_SetColor(Tx1,Red);
Text_SetStyle(Tx1,2,2);
Text_SetSize(tx1,6);
//tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2));
//Text_SetStyle(tx,2,0);
date31 = date[LoBar[0]];
time31 = stime[LoBar[0]];
date32 = date[0];
time32 = stime[0];
for j = 0 to 5
{
fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]);
}
if LoVal[2] > 0 and max(LoVal[0],LoVal[1],LoVal[2]) <= min(LoVal[0],LoVal[1],LoVal[2])+pt Then
{
txx = Text_New(sDate[LoBar[0]],sTime[LoBar[0]],Loval[0],"●");
Text_SetSize(txx,20);
Text_SetStyle(Txx,2,2);
Text_SetColor(txx,Red);
}
}
If HiVal[0] < H Then
{
HiVal[0] = H;
HiBar[0] = 0;
//ZZ[0] = H;
date12 = date[HiBar[0]];
time12 = stime[HiBar[0]];
Value12 = HiVal[0];
TL_SetEnd(TL1, date12,time12,Value12);
date32 = date[0];
time32 = stime[0];
//Tx = Text_New_Self(date12,time12,Value12,NumToStr(abs(value11-value12)/PriceScale,0)+" ");
#동그라미 색상, 빨강
//Text_SetColor(Tx,RED);
//Text_SetStyle(Tx,1,1);
TL_SetEnd(TL3[0],date32,time32,fr[0]);
TL_SetEnd(TL3[1],date32,time32,fr[1]);
TL_SetEnd(TL3[2],date32,time32,fr[2]);
Text_SetLocation(TX3[2],date32,time32,fr[2]);
TL_SetEnd(TL3[3],date32,time32,fr[3]);
TL_SetEnd(TL3[4],date32,time32,fr[4]);
Text_SetLocation(TX3[4],date32,time32,fr[4]);
TL_SetEnd(TL3[5],date32,time32,fr[5]);
TL_SetEnd(TL3[6],date32,time32,fr[6]);
TL_Delete(tl);
TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen);
}
}
TL_SetSize(TL1,선두께);
쓰리바닥 동그라미 위치를 위로 5틱 올려주세요. 감사합니다.
2022-10-28
874
글번호 163349
답변완료
수식 의뢰드립니다.
안녕하세요!
항상 도움을 주셔서 감사합니다!
매매에 도움을 받고져 수식을 의뢰드립니다!
Data1) 연결선물
Data2) 콜 + Data3) 풋 ===> 교차차트 된 상태
콜이 풋의 월고를 돌파하여 완성봉이 만들어지면 또는
풋이 콜의 월고를 돌파하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 파랑수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
마찬가지로
콜이 풋의 월저를 하락하여 완성봉이 만들어지면 또는
풋이 콜의 월저를 하락하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 빨강수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
----------------------------------
Data1) 연결선물
Data2) 콜 + Data3) 풋 ===> 교차차트 된 상태
콜이 풋의 전고를 돌파하여 완성봉이 만들어지면 또는
풋이 콜의 전고를 돌파하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 녹색수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
마찬가지로
콜이 풋의 전저를 하락하여 완성봉이 만들어지면 또는
풋이 콜의 전저를 하락하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 녹색수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
----------------------------------
Data1) 연결선물
Data2) 콜 + Data3) 풋 ===> 교차차트 된 상태
콜이 풋의 2일전고를 돌파하여 완성봉이 만들어지면 또는
풋이 콜의 2일전고를 돌파하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 녹색수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
마찬가지로
콜이 풋의 2일전저를 하락하여 완성봉이 만들어지면 또는
풋이 콜의 2일전저를 하락하여 완성봉이 만들어지면 같은 시각 (data1)선물챠트에 녹색수평선(두께2)이 우측으로 발생하는 수식을 부탁드립니다.
2022-10-28
1189
글번호 163348
답변완료
문의 드립니다
input : N(8),진입Per(-23.6),청산Per(61.8);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),hh(0),ll(0),cnt(0),EP(0),XP(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
if Year > 0 Then
{
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
ExitLong();
hh = 0;
ll = 0;
For cnt = 0 to N-1
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if NextBarOpen < EP Then
Buy("b1",AtStop,EP);
Else
Buy("b1.",AtLimit,EP);
}
Else
{
hh = 0;
ll = 0;
For cnt = 1 to N
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if H < EP Then
Buy("b2",AtStop,EP);
if L > EP Then
Buy("b2.",AtLimit,EP);
}
if MarketPosition == 1 Then
{
if MarketPosition != MarketPosition[1] Then
XP = ll[BarsSinceEntry]+(hh[BarsSinceEntry]-ll[BarsSinceEntry])*(청산Per/100);
ExitLong("bx",AtLimit,XP);
}
}
-----------------
청산이 당일신호로 나옵니다.
수식어에서 진입 N값은 8일입니다.
청산 N값을 진입 N값하고 기간을 다르게 숫자로 표기 하고 싶습니다.
예를들면 8일 기간값에서 진입신호후 청산은 10일중에 청산값에 도달하면
되는걸 말합니다.
익절 200 손절 40 포함해 주셨으면 합니다.
------------------------
input : N(8),진입Per(38.2),청산Per(61.8);
var : DD(0),Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : ST(0),ET(0),hh(0),ll(0),cnt(0),EP(0),XP(0);
if NextBarSdate != sDate Then
{
DD = DayOfWeek(NextBarSdate);
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = Sdate > (10000 * Year) + (100 * 3) + v2 and Sdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
{
ST = 70000;
ET = 55000;
}
Else
{
ST = 80000;
ET = 65000;
}
}
if Year > 0 Then
{
IF ET > ST Then
SetStopEndofday(ET);
Else
{
if NextBarSdate != sDate Then
SetStopEndofday(ET);
}
if ((NextBarSdate != sDate and NextBarStime >= ST) or
(NextBarSdate == sDate and NextBarStime >= ST and sTime < ST)) Then
{
SetStopEndofday(0);
hh = 0;
ll = 0;
For cnt = 0 to N-1
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if NextBarOpen < EP Then
Buy("b1",AtStop,EP);
Else
Buy("b1.",AtLimit,EP);
}
Else
{
hh = 0;
ll = 0;
For cnt = 1 to N
{
if hh == 0 or (hh > 0 and DayHigh(cnt) > hh) Then
hh = DayHigh(cnt);
if ll == 0 or (ll > 0 and DayLow(cnt) < ll) Then
ll = DayLow(cnt);
}
EP = ll+(hh-ll)*(진입Per/100);
if H < EP Then
Buy("b2",AtStop,EP);
if L > EP Then
Buy("b2.",AtLimit,EP);
}
if MarketPosition == 1 Then
{
if MarketPosition != MarketPosition[1] Then
XP = ll[BarsSinceEntry]+(hh[BarsSinceEntry]-ll[BarsSinceEntry])*(청산Per/100);
ExitLong("bx",AtLimit,XP);
}
}
---------------
위 수식어를 익절150 손절 40을 포함한 당일청산이 아닌 식으로 부탁드립니다.
2022-10-28
1046
글번호 163347
답변완료
수식부탁드립니다
이평선 10이 20를 교차하여 오를때 매수, 그러다 다시 교차하여 내려갈 때 매수청산,
이평선 10이 20을 교차하여 내려갈 때 매도, 그러다 다시 교차하여 올라갈때 매도청산을
무한 반복하고 싶습니다.
그리고 차트상에서 진입은 매수든 매도든 무엇이 먼저든 상관없이 이루어졌으면하고, 매수를 가지고 있을 때 매수청산, 매도를 가지고 있을 때 매도청산이 이루어지도록 구현하고 싶습니다
2022-10-28
999
글번호 163346
끝까지 님에 의해서 삭제되었습니다.
2022-10-28
0
글번호 163345