커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
7511
글번호 230811
답변완료
수식수정좀 부탁드립니다
Input : Period(5), LPercent(40), SPercent(60);
Var : value(0);
value = RSI(Period);
value1 = (highest(c,7)+lowest(c,7))/2; #전환선
value2 = (highest(c,24)+lowest(c,24))/2; #기준선
# 매수/매도청산
If value1 < value2 && CrossUP(value, SPercent) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value, LPercent) Then
{
Sell();
}
봉 갯수 기준이 있어야 하나요? 봉갯수에 따라 RSI기준값이 틀려진다면 250봉으로 해주시면 됩니다
수식수정할 내용은 일목균형표의 전환선 기준선 값이 RSI 과열 침체를 나타내는 베이스라인값 즉 40선 이하에 있을때 매수 하라는 내용 입니다
매수 진입을 골든크로스에서 하는데 일목균형표의 전환선 기준선이 RSI 침체선인 40선 이하에 있을때를 말합니다
내부변수값을 가져오는와서 그 값보다 아래일때 조건을 지정하면 될거 같은데요
하나 더 요청입니다
검색식에서 일목균형표의 기준선 전환선이 모두 RSI 침체선인 40 이하에 있는 종목 검색하는식도 부탁드려요
RSI는 5일을 기준으로 하시면 됩니다
2014-04-06
160
글번호 74168
답변완료
수식문의 드립니다
선물 5분봉으로
현재 봉이 이전 1시간동안(봉갯수12. 봉 완성 종가기준) 고점돌파면 매수...
같은 기준으로 저점을 하향시 매도하고자 합니다
감사합니다...^^
2014-04-06
153
글번호 74167
답변완료
매수건수와 매도건수의 차이
아래 수식은 봉한개에 매수수량과 매도수량의 차이를 나태낸 수식입니다
그런데 매도건수와 매수건수의 차이를 나타낼 수는 없는지요?
감사합니다
--- 아 래---
Inputs:length1(50),length2(100),length3(150),Range1(0.5),Range2(1),Range3(1.5);
var1=Upticks-Downticks;
If Var1>0 Then
Var2=Var1;
Else
var2=0;
if Var1<0 Then
var3=downticks-Upticks;
Else
var3=0;
/*
if var2>0 and var2<length1 Then
var2=Range1;
if var2>=length1 and var2<length3 Then
var2=Range2;
if var2>=length3 Then
var2=Range3;
if var3>0 and var3<length1 Then
Var3=Range1;
if var3>=length1 and var3<length3 Then
var3=Range2;
if var3>=length3 Then
var3=Range3;
*/
plot1(Var2,"상승형");
plot2(Var3,"하락형");
2014-04-06
178
글번호 74166
답변완료
atstop , atlimit 에 대해서 질문합니다.
if 조건 then
buy();
if MarketPosition == 1 Then
Exitlong("bx",Atstop,entryprice*0.995);
즉 진입가의 0.5% 이탈시 즉시 손절인데요
문제는 진입봉 바로 다음봉이 긴 장대음봉을 내면서 2%넘게 밀렸는데도 손절이
나가지 않고 그(장대음봉)다음봉의 시가에 청산이 됩니다.
반대의 경우인 atlimit도 똑같은 문제가 발생하네요.
즉 살펴본 결과 진입봉의 바로 다음봉에 청산이 필요할때 atstop과 atlimit가 작동하지
않는것 같은데요. 어떻게 해야 합니까?
뭔가 식을 더해줘야 하나요?
이렇게 되면 손절의 의미가 없어지는데요! 어떻게 해결해야 합니까?
도움을 부탁합니다.
2014-04-06
176
글번호 74165
답변완료
[STAD_05] Currency4Day 질문입니다
Input: RSILen(50), Pcnt(0.2);
If DayOfWeek(Date) == 5 then begin
#Long Entry & Exits
If RSI(RSILen) > 50 then
Buy("",atstop,nextbaropen + Pcnt*atr(10));
-------------------------------------------------
If nextbaropen > High then
ExitLong("",atstop,High);
----------------------------------------------
다음봉의시가(b)가 현재봉의고가(a) 보다 크면
현재봉의고가(a)에서 청산 인거 같은데요
이미 (b)가 (a)보다 큰 상태에서 가격이 (a)까지
내려오면 청산한다는 뜻인가요?
부탁드립니다
// ExitLong("",atstop,Low);
#Short Entry & Exits
If RSI(RSILen) < 50 then
Sell("",atstop,nextbaropen - Pcnt*atr(10));
If nextbaropen < Low then
ExitShort("",atstop,Low);
// ExitShort("",atstop,High);
end;
#Exits
/*If MarketPosition <> 0 then Begin
ExitLong("",AtMarket) ;
ExitShort("",AtMarket) ;
end;*/
2014-04-05
192
글번호 74164
답변완료
[STAD_05] Stochastics OverBS 재질문입니다
Inputs: Length(12), OBought(70), OSold(30), SetUpLen(6), EntryPoint(0.1), ExitPoint(1.0);
Vars: KVal(0), DVal(0), BuySetup(0), SellSetup(0), BuyPeriod(99), SellPeriod(99), BuyStop(0), SellStop(0);
var : Factor(0.5);
//Stochastic Line Calculations
if CurrentBar > 1 then {
Kval = Kval[1] + (Factor*(FastK(Length)-Kval[1])); //기본stochasticsk와 다른 방식의 stochasticsk
Dval = ((Dval[1]*2) + Kval)/3; //다른 방식의 StochasticsD
}
//Entry Setups
IF KVal < OSold AND CrossUp( KVal , DVal) Then Begin
BuySetup = Highest(High, 2);
BuyStop = Low;
BuyPeriod = 0;
End;
IF KVal > OBought AND CrossDown( KVal , DVal) Then Begin
SellSetup = Lowest(Low, 2);
SellStop = High;
SellPeriod = 0;
End;
//Counters
IF MarketPosition == 1 Then
BuyPeriod = SetUpLen + 1;
Else
BuyPeriod = BuyPeriod + 1;
IF MarketPosition == -1 Then
SellPeriod = SetUpLen + 1;
Else
SellPeriod = SellPeriod + 1;
//Entry Signals
if EntriesToday(date) < 1 then {
IF BuyPeriod <= SetUpLen Then
Buy("",atstop,BuySetup + EntryPoint);
IF SellPeriod <= SetUpLen Then
Sell("",atstop,SellSetup - EntryPoint);
}
//System Exits
IF CrossDown( KVal , DVal ) AND KVal > OSold Then Begin
-----------------------------------------------------------------
BuyPeriod = SetUpLen;
---------------------------------------------------------
이 부분이 왜들어갔는지 이유를 알고싶습니다 안들어가도 무방한거 아닌가요?
부탁드립니다
ExitLong();
End;
IF CRossUp( Kval , DVal) AND KVal < OBought Then Begin
SellPeriod = SetUpLen;
ExitShort();
End;
//Stops
ExitLong("",atstop, BuyStop-ExitPoint);
ExitShort("",atstop, SellStop+ExitPoint);
태그저장 취소
2014-04-05
203
글번호 74163
답변완료
부탁드립니다
안녕하세요
tradestion 에서 예스로 변환 부탁드립니다.
//+------------------------------------------------------------------+
//| StepMA_v7.1.mq4 |
//| Copyright ?2006, TrendLaboratory |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//| E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, TrendLaboratory"
#property link "http://finance.groups.yahoo.com/group/TrendLaboratory"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Aqua
#property indicator_color2 Blue
#property indicator_color3 Red
//---- input parameters
extern int Length = 10; // Volty Length
extern double Kv = 1.0; // Sensivity Factor
extern int StepSize = 0; // Constant Step Size (if need)
extern int MA_Mode = 0; // Volty MA Mode : 0-SMA, 1-LWMA
extern int Advance = 0; // Offset
extern double Percentage = 0; // Percentage of Up/Down Moving
extern bool HighLow = false; // High/Low Mode Switch (more sensitive)
extern int ColorMode = 0; // Color Mode Switch
extern int BarsNumber = 0;
//---- indicator buffers
double LineBuffer[];
double UpBuffer[];
double DnBuffer[];
double smin[];
double smax[];
double trend[];
double StepMA=0, ATR0=0,ATRmax=-100000,ATRmin=1000000;
int limit;
//---- StepSize Calculation
double StepSizeCalc ( int Len, double Km, int Size, int k)
{
double result;
if( Size==0 )
{
double AvgRange=0;
double Weight = 0;
for (int i=Len-1;i>=0;i--)
{
if(MA_Mode==0) double alfa= 1.0; else alfa= 1.0*(Len-i)/Len;
AvgRange+= alfa*(High[k+i]-Low[k+i]);
Weight += alfa;
}
ATR0 = AvgRange/Weight;
if (ATR0>ATRmax) ATRmax=ATR0;
if (ATR0<ATRmin) ATRmin=ATR0;
result=MathRound(0.5*Km*(ATRmax+ATRmin)/Point);
}
else
result=Km*StepSize;
return(result);
}
//---- StepMA Calculation
double StepMACalc (bool HL, double Size, int k)
{
int counted_bars=IndicatorCounted();
double result;
if (HL)
{
smax[k]=Low[k]+2.0*Size*Point;
smin[k]=High[k]-2.0*Size*Point;
}
else
{
smax[k]=Close[k]+2.0*Size*Point;
smin[k]=Close[k]-2.0*Size*Point;
}
if (counted_bars==0){smax[limit+1]=smax[limit];smin[limit+1]=smin[limit];trend[limit+1]=0;}
trend[k]=trend[k+1];
if (Close[k]>smax[k+1]) trend[k]=1;
if (Close[k]<smin[k+1]) trend[k]=-1;
if(trend[k]>0)
{
if(smin[k]<smin[k+1]) smin[k]=smin[k+1];
result=smin[k]+Size*Point;
}
else
{
if(smax[k]>smax[k+1]) smax[k]=smax[k+1];
result=smax[k]-Size*Point;
}
//Print (" k=",k," trend=",trend[k], " res=",result," Smax=", smax[k], " Smin=", smin[k]);
return(result);
}
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
//---- indicator line
IndicatorBuffers(6);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexArrow(1,159);
SetIndexArrow(2,159);
SetIndexBuffer(0,LineBuffer);
SetIndexBuffer(1,UpBuffer);
SetIndexBuffer(2,DnBuffer);
SetIndexShift(0,Advance);
SetIndexShift(1,Advance);
SetIndexShift(2,Advance);
SetIndexBuffer(3,smin);
SetIndexBuffer(4,smax);
SetIndexBuffer(5,trend);
//---- name for DataWindow and indicator subwindow label
short_name="StepMA("+Length+","+Kv+","+StepSize+")";
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
SetIndexLabel(1,"UpTrend");
SetIndexLabel(2,"DownTrend");
//----
SetIndexDrawBegin(0,Length);
SetIndexDrawBegin(1,Length);
SetIndexDrawBegin(2,Length);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| StepMA_v7.1 |
//+------------------------------------------------------------------+
int start()
{
int shift, counted_bars=IndicatorCounted();
if ( BarsNumber > 0 ) int Nbars=BarsNumber; else Nbars=Bars;
if ( counted_bars > 0 ) limit=Bars-counted_bars;
if ( counted_bars < 0 ) return(0);
if ( counted_bars ==0 ) limit=Nbars-Length-1;
for(shift=limit;shift>=0;shift--)
{
int Step = StepSizeCalc( Length, Kv, StepSize, shift);
Comment (" StepSize= ", Step);
StepMA = StepMACalc ( HighLow, Step, shift)+Percentage/100.0*Step*Point;
if ( ColorMode == 0) LineBuffer[shift]=StepMA;
if ( ColorMode == 1)
{
if ( trend[shift]>0 ) {UpBuffer[shift]=StepMA-Step*Point;DnBuffer[shift]=EMPTY_VALUE;}
else
if ( trend[shift]<0 ) {DnBuffer[shift]=StepMA+Step*Point;UpBuffer[shift]=EMPTY_VALUE;}
}
else
if ( ColorMode == 2)
{
if (trend[shift]>0)
{
UpBuffer[shift]=StepMA;
if ( trend[shift+1] < 0 ) UpBuffer[shift+1] = DnBuffer[shift+1];
DnBuffer[shift]=EMPTY_VALUE;
}
if (trend[shift]<0)
{
DnBuffer[shift]=StepMA;
if ( trend[shift+1] > 0 ) DnBuffer[shift+1] = UpBuffer[shift+1];
UpBuffer[shift]=EMPTY_VALUE;
}
}
else
{
UpBuffer[shift]=EMPTY_VALUE; DnBuffer[shift]=EMPTY_VALUE;
}
}
return(0);
}Share
Share this post on Digg
Del.icio.us
Technorati
Twitter
duhhhh is offline
2014-04-05
820
글번호 74162
답변완료
문의 드립니다.
1.예스차트에 수식을 넣을 수 있나요? 중심가 등을 수식으로 넣고 사용하려 합니다.
2. 보조지표 삽입하여 매수매도 신호 나오게 할 수 있나요?
3. 두개 이상의 보조지표를 복합해서 신호를 나오게 할 수 있나요?(예. 스토케스틱+MACD= 복합신호)
답변 부탁드립니다.
2014-04-05
133
글번호 74161
답변완료
부탁해요
#이평크로스식
Input : shortPeriod(1), longPeriod(76) ;
Var : value(0);
value = OSCP(shortPeriod, longPeriod);
# 매수/매도청산
If CrossUP(value, 0) Then { Buy(); Exitshort(); }
# 매도/매수청산
If CrossDown(value,0)Then { Sell(); Exitlong(); }
#볼린저밴드식
var1 = BollBandUp(20,2);
var2 = BollBandDown(20,2);
Then{ if C > var1 +0.7then ExitShort(); Else buy(); }
Then{ if C < var2 -0.7 Then ExitLong(); Else sell(); }
if MarketPosition == 1 Then
ExitLong("bx",atlimit,var1 +0.7);
if MarketPosition == -1 Then
ExitShort("sx",atlimit,var2 -0.7);
위 이평크로스식이 제되로 작동안되네요
이평크로스와 볼린저밴드 두식이 동시 적용되게 부탁합니다
즉 20일선크로스매매 와 보린저상한선과 하한선 일정밖에서 매수금지와 이익실현입니다.
2014-04-05
165
글번호 74160