커뮤니티
예스랭귀지 Q&A
답변완료
[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내
안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
2026-02-27
1759
글번호 230811
답변완료
문의드립니다.
안녕하세요~
문의드릴게 있습니다.
제가 적용하고자 하는 수식으로 백테스트를 해보고 싶은데요~
어떻게 하면 되나요??
시스템을 켰을때 실시간진입 구간하고 차이가 나더라고요~
방법을 자세히 알고 싶습니다.
틱봉,분봉을 해보려고 합니다.
2020-12-12
803
글번호 144631
답변완료
수식 결과에 나오는 점이 여러개 일때 안겹치게 하는 방법이 있나요??
수식 결과에 나오는 점이 여러개 일때 안겹치게 하는 방법이 있나요?
검색에서 수식을 여러개 작성하여 plot1~plot9 9개의 검색 수식으로
만족하는 수식이 어떤봉에는 2개 어떤봉에는 5개 어떤봉에는 0개
차이나게 표시될때 plot1의 위치 고정, plot2의 위치 고정, plot3......으로
각각의 위치를 고정하면 경치지 않고 지정된 위치에 표시되겠는데요!!
저가 원하는 것은 고정된 위치가 아닌 순서대로 나란히 나오게 할 수 있을까요??
첨부그림 참고해 주세요!!
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
input : st1(5),st2(5),st3(3),상승(5),하락(-3);
var : stok(0),stod(0),upp(0),dnp(0),avu(0),avd(0),gap(0);
//----------------------------------
//스톡케스틱
stok=StochasticsK(st1,st2);
stod=StochasticsD(st1,st2,st3);
//----------------------------------
//상승률
upp=((c-o)/o)*100;
dnp=((c-o)/o)*100;
//----------------------------------
//검색식 점 간격
gap=(c/100)*1.5;
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
//예제를 위해 수식은 매수와 매도 같은 수식이며 plot1,2의 색깔만 넣었습니다.
//여러개의 검색식이 만족 할때 점이 겹쳐서 이전에 적용된 빨간점은 안 보입니다.
if Crossdown(stok,stod) Then
Plot1(L-gap,"매수",red,DEf,8);
Else
NoPlot(1);
//----------------------------------
if Crossdown(stok,stod) Then
Plot2(L-gap,"매도",blue,DEf,8);
Else
NoPlot(2);
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
2020-12-12
767
글번호 144630
답변완료
안녕하세요 질문드립니다.
안녕하세요 시스템에서 "매도"부분만 약간 수정하고 싶어서 글남깁니다
아래는 제가 사용하는 시스템인데요
#A진입은 제외하고
#"B진입 1~6부분"만 수정하고싶습니다
각 진입마다 매도식은
1매도는 매수가 대비 12프로상승시 매도
2매도는 매수가 대비 1프로상승 후 7프로 하락시 매도
3매도는 매수가 대비 6프로 하락시 매도
이렇게 3개로 똑같습니다.
여기서 3매도 부분만 C[4]부분을 참고하고 싶은데요
"6프로 하락시 매도"가아닌 "C[4] 대비 1프로 하락"시 매도로 식좀 수정해주시면 고맙겠습니다.
var : VV(0);
var : A1(False),A2(False),A3(False),A4(False),A5(False),A6(False),A7(False),A8(False),A9(False),A10(False),A11(False),A12(False),A13(False),A14(False),A15(False);
var : B1(False),B2(False),B3(False),B4(False),B5(False),B6(False),B7(False),B8(False),B9(False),B10(False),B11(False);
VV = AccumN(DownVol,1)[1]/AccumN(Volume,1)[1];
A1 = C[4]<Lowest(L,2)[1];
A2 = Highest(H,2)[2] >= C[4]*1.06;
A3 = Accumn(H-O,1)[3] > Accumn(H-O,1)[2];
A4 = Highest(H,2)[2] > Highest(H,1)[1];
A5 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.25 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.30;
A6 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.20 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.25;
A7 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.15 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.20;
A8 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.10 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.15;
A9 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.05 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.10;
A10 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.01 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.05;
A11 = AccumN(V,1)[2] > AccumN(V,1)[1] and AccumN(V,1)[2] > AccumN(V,1)[3]*0.1;
A12 = C[1] <= C[2]*1.01 and C[1] >= C[2]*0.99;
A13 = 0.60 >= VV and VV >= 0.40;
A14 = (Accumn(DownVol,3)[1]/Accumn(Volume,3)[1])/(Accumn(DownVol,2)[2]/Accumn(Volume,2)[2])<1.1;
A15 = (Accumn(Volume,2)[2]/Accumn(Volume,2)[4] >= 8 Or
Accumn(Volume,2)[2]/Accumn(Volume,4)[4] >= 8 Or
Accumn(Volume,2)[2]/Accumn(Volume,6)[4] >= 8 Or
Accumn(Volume,2)[2]/Accumn(Volume,8)[4] >= 8 Or
Accumn(Volume,2)[2]/Accumn(Volume,10)[4] >= 8);
B1 = C[1] < C[4]*1.06;
B2 = Highest(H,2)[2] >= C[4]*1.06;
B3 = Accumn(H-O,1)[3] > Accumn(H-O,1)[2];
B4 = Highest(H,2)[2] > Highest(H,1)[1];
B5 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.25 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.30;
B6 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.20 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.25;
B7 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.15 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.20;
B8 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.10 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.15;
B9 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.05 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.10;
B10 = AccumN(v,1)[1] >= AccumN(v,2)[2]*0.01 and AccumN(v,1)[1] <= AccumN(v,2)[2]*0.05;
B11 = AccumN(V,1)[2] > AccumN(V,1)[1] and AccumN(V,1)[2] > AccumN(V,1)[3]*0.1;
if A1 and A2 and A3 and A4 and A5 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A6");
if A1 and A2 and A3 and A4 and A6 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A5");
if A1 and A2 and A3 and A4 and A7 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A4");
if A1 and A2 and A3 and A4 and A8 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A3");
if A1 and A2 and A3 and A4 and A9 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A2");
if A1 and A2 and A3 and A4 and A10 and A11 and (A12 or A13 or A14) and A15 Then
Buy("A1");
if B1 and B2 and B3 and B4 and B5 and B11 Then
Buy("B6");
if B1 and B2 and B3 and B4 and B6 and B11 Then
Buy("B5");
if B1 and B2 and B3 and B4 and B7 and B11 Then
Buy("B4");
if B1 and B2 and B3 and B4 and B8 and B11 Then
Buy("B3");
if B1 and B2 and B3 and B4 and B9 and B11 Then
Buy("B2");
if B1 and B2 and B3 and B4 and B10 and B11 Then
Buy("B1");
var : A1Price(0),A1high(0);
var : A2Price(0),A2high(0);
var : A3Price(0),A3high(0);
var : A4Price(0),A4high(0);
var : A5Price(0),A5high(0);
var : A6Price(0),A6high(0);
var : B1Price(0),B1high(0);
var : B2Price(0),B2high(0);
var : B3Price(0),B3high(0);
var : B4Price(0),B4high(0);
var : B5Price(0),B5high(0);
var : B6Price(0),B6high(0);
if MarketPosition == 1 Then
{
#A1진입 발생
#보유수량이 증가하고 최근 발생한 진입명이 A1이면
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A1" Then
{
#진입가 저장
A1Price = LatestEntryPrice(0);
#진입이후 최고가의 초기값으로 현재봉 고가저장
A1high = H;
}
#새로운 고가가 발생하면 변수의 값을 새로운 고가를 변경
if A1high > 0 and H > A1high Then
A1high = H;
if A1Price > 0 Then #추가된 if문
{
#12% 수익이면 청산
ExitLong("A1-1",AtLimit,A1Price*1.12,"A1");
#1% 이상 수익이후에 7% 하락하면 청산
if A1high >= A1Price*1.01 Then
ExitLong("A1-2",AtStop,A1high*0.93,"A1");
#6% 손실시 청산
ExitLong("A1-3",AtStop,A1Price*0.94,"A1");
}
#A2진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A2" Then
{
A2Price = LatestEntryPrice(0);
A2high = H;
}
if A2high > 0 and H > A2high Then
A2high = H;
if A2Price > 0 Then
{
ExitLong("A2-1",AtLimit,A2Price*1.12,"A2");
if A2high >= A2Price*1.01 Then
ExitLong("A2-2",AtStop,A2high*0.93,"A2");
ExitLong("A2-3",AtStop,A2Price*0.94,"A2");
}
#A3진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A3" Then
{
A3Price = LatestEntryPrice(0);
A3high = H;
}
if A3high > 0 and H > A3high Then
A3high = H;
if A3Price > 0 Then
{
ExitLong("A3-1",AtLimit,A3Price*1.12,"A3");
if A3high >= A3Price*1.01 Then
ExitLong("A3-2",AtStop,A3high*0.93,"A3");
ExitLong("A3-3",AtStop,A3Price*0.94,"A3");
}
#A4진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A4" Then
{
A4Price = LatestEntryPrice(0);
A4high = H;
}
if A4high > 0 and H > A4high Then
A4high = H;
if A4Price > 0 Then
{
ExitLong("A4-1",AtLimit,A4Price*1.12,"A4");
if A4high >= A4Price*1.01 Then
ExitLong("A4-2",AtStop,A4high*0.93,"A4");
ExitLong("A4-3",AtStop,A4Price*0.94,"A4");
}
#A5진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A5" Then
{
A5Price = LatestEntryPrice(0);
A5high = H;
}
if A5high > 0 and H > A5high Then
A5high = H;
if A5Price > 0 Then
{
ExitLong("A5-1",AtLimit,A5Price*1.12,"A5");
if A5high >= A5Price*1.01 Then
ExitLong("A5-2",AtStop,A5high*0.93,"A5");
ExitLong("A5-3",AtStop,A5Price*0.94,"A5");
}
#A6진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A6" Then
{
A6Price = LatestEntryPrice(0);
A6high = H;
}
if A6high > 0 and H > A6high Then
A6high = H;
if A6Price > 0 Then
{
ExitLong("A6-1",AtLimit,A6Price*1.12,"A6");
if A6high >= A6Price*1.01 Then
ExitLong("A6-2",AtStop,A6high*0.93,"A6");
ExitLong("A6-3",AtStop,A6Price*0.94,"A6");
}
#B1진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B1" Then
{
B1Price = LatestEntryPrice(0);
B1high = H;
}
if B1high > 0 and H > B1high Then
B1high = H;
if B1Price > 0 Then
{
ExitLong("B1-1",AtLimit,B1Price*1.12,"B1");
if B1high >= B1Price*1.01 Then
ExitLong("B1-2",AtStop,B1high*0.93,"B1");
ExitLong("B1-3",AtStop,B1Price*0.94,"B1");
}
#B2진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B2" Then
{
B2Price = LatestEntryPrice(0);
B2high = H;
}
if B2high > 0 and H > B2high Then
B2high = H;
if B2Price > 0 Then
{
ExitLong("B2-1",AtLimit,B2Price*1.12,"B2");
if B2high >= B2Price*1.01 Then
ExitLong("B2-2",AtStop,B2high*0.93,"B2");
ExitLong("B2-3",AtStop,B2Price*0.94,"B2");
}
#B3진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B3" Then
{
B3Price = LatestEntryPrice(0);
B3high = H;
}
if B3high > 0 and H > B3high Then
B3high = H;
if B3Price > 0 Then
{
ExitLong("B3-1",AtLimit,B3Price*1.12,"B3");
if B3high >= B3Price*1.01 Then
ExitLong("B3-2",AtStop,B3high*0.93,"B3");
ExitLong("B3-3",AtStop,B3Price*0.94,"B3");
}
#B4진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B4" Then
{
B4Price = LatestEntryPrice(0);
B4high = H;
}
if B4high > 0 and H > B4high Then
B4high = H;
if B4Price > 0 Then
{
ExitLong("B4-1",AtLimit,B4Price*1.12,"B4");
if B4high >= B4Price*1.01 Then
ExitLong("B4-2",AtStop,B4high*0.93,"B4");
ExitLong("B4-3",AtStop,B4Price*0.94,"B4");
}
#B5진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B5" Then
{
B5Price = LatestEntryPrice(0);
B5high = H;
}
if B5high > 0 and H > B5high Then
B5high = H;
if B5Price > 0 Then
{
ExitLong("B5-1",AtLimit,B5Price*1.12,"B5");
if B5high >= B5Price*1.01 Then
ExitLong("B5-2",AtStop,B5high*0.93,"B5");
ExitLong("B5-3",AtStop,B5Price*0.94,"B5");
}
#B6진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "B6" Then
{
B6Price = LatestEntryPrice(0);
B6high = H;
}
if B6high > 0 and H > B6high Then
B6high = H;
if B6Price > 0 Then
{
ExitLong("B6-1",AtLimit,B6Price*1.12,"B6");
if B6high >= B6Price*1.01 Then
ExitLong("B6-2",AtStop,B6high*0.93,"B6");
ExitLong("B6-3",AtStop,B6Price*0.94,"B6");
}
}
Else
{
A1Price = 0;
A1high = 0;
A2Price = 0;
A2high = 0;
A3Price = 0;
A3high = 0;
A4Price = 0;
A4high = 0;
A5Price = 0;
A5high = 0;
A6Price = 0;
A6high = 0;
B1Price = 0;
B1high = 0;
B2Price = 0;
B2high = 0;
B3Price = 0;
B3high = 0;
B4Price = 0;
B4high = 0;
B5Price = 0;
B5high = 0;
B6Price = 0;
B6high = 0;
}
2020-12-14
667
글번호 144629
요타 님에 의해서 삭제되었습니다.
2020-12-11
8
글번호 144628
답변완료
전략 문의드립니다
시스템 전략 문의드립니다
최근 20개 캔들의 최고 종가 상향 돌파시 매수
최근 20개 캔들의 최저 종가 하향 돌파시 매도
감사합니다
2020-12-11
790
글번호 144622
답변완료
질문드림니다.
** 오늘도 수고가 많으십니다. **
1)볼린저 밴드 상,하 차이가 20틱이상 20일 이동평균선 완성봉으로 돌파 하고 상단 터치시 현재가격으로 매수진입
1.볼린저 밴드 상,하 차이가 15틱 이하 이면 현재가격으로 매수 청산
2)볼린저 밴드 상.하 차이가 20틱이상 20일 이동평균선 완성봉으로 돌파 하고 하단 터치시 현재가격으로 매도 진입
2.볼린저 밴드 상,하 차이가 15틱이하이면 현재가격으로 매도 청산
** 언제나 행복한 마음이 가득하세요. 행복하세요.**
2020-12-11
825
글번호 144619
답변완료
수식 부탁드립니다.
안녕하세요?
수식한가지 부탁드립니다.
이평선2개 (외부변수)
***진입
정배열에서 양봉(몸통길이 외부변수)+음봉(몸통길이 외부변수의 이상일시) 매도
역배열에서 음봉(몸통길이 외부변수)+양봉(몸통길이 외부변수의 이상일시) 매수
각각 외부변수로 해주시고, 매도와 매수의 진입봉의 몸통길이(외부변수) 이상일시에만 작동되도록 부탁드립니다.
***기타
진입후 익절또는 손절까지 재진입x
매매횟수 (외부변수)
***청산
손절(외부변수)
익절(외부변수)
감사합니다.
부탁드립니다.
2020-12-11
882
글번호 144614
답변완료
전략식 변환 부탁드립니다.
안녕하세요. 하기전략을 예스랭귀지로 전환부탁드립니다.
수고하세요.
param : SSTIME(070001), EETIME(182000);
Vars : TCOND(False);
If SSTIME < EETIME Then
Begin
If SSTIME <= TIME And TIME <= EETIME Then TCOND = True
Else TCOND = False;
End
Else
Begin
If SSTIME <= TIME Or TIME <= EETIME Then TCOND = True
Else TCOND = False;
End;
If TCOND Then
Begin
// 분봉 기준의 40 이평 및 120 이평
Vars : Period1(14), Period2(179);
Vars : ST_Ma1(0), ST_Ma2(0);
ST_Ma1 = AvgFast((O+H+L+C)/4, Period1);
ST_Ma2 = AvgFast((O+H+L+C)/4, Period2);
// 일봉 기준 파란색
Vars : vShortP7(14), vLongP7(173), vSigP7(1);
Vars : vMACD7(0), vSignal7(0);
vMACD7 = MACD(C, vShortP7, vLongP7);
vSignal7 = XAverage(vMACD7, vSigP7);
/////////////////////////////////////////////////////////
param : BuyA_ShortLeng(7) // 단기 이동평균 기간
, BuyA_LongLeng(40) // 장기 이동평균 기간
;
var : BuyA_V1(0), BuyA_V2(0), BuyA_Result(FALSE);
BuyA_V1 = SMA(Volume, BuyA_ShortLeng);
BuyA_V2 = SMA(Volume, BuyA_LongLeng);
BuyA_Result = FALSE;
IF BuyA_V1 >= BuyA_V2 Then
BuyA_Result = TRUE;
Vars : vDn (102), vUp (1000);
If BuyA_V1 > vDN And BuyA_V1 < vUp And vMACD7 < 0 And CrossDown(ST_Ma1, ST_Ma2) Then Sell("V매도");
If BuyA_V1 > vDN And BuyA_V1 < vUp And vMACD7 > 0 And CrossUp(ST_Ma1, ST_Ma2) Then Buy("V매수");
// 익절 및 손절
Vars : Exit_P(0), Exit_L(0);
Vars : SP(0), TickSize(0);
SP = SignalPosition;
TickSize = OneTick * PriceScale;
SetStopLoss(Exit_L * TickSize * CurrentContracts);
SetProfitTarget(Exit_P * TickSize * CurrentContracts);
End;
///////////////////////////////////////////////////////////////////////////////////////////////
Params : SSTIME1(183500), EETIME1(192600);
Vars : TCOND1(False);
If SSTIME1 < EETIME1 Then
Begin
If SSTIME1 <= TIME And TIME <= EETIME1 Then TCOND1 = True
Else TCOND1 = False;
End
Else
Begin
If SSTIME1 <= TIME Or TIME <= EETIME1 Then TCOND1 = True
Else TCOND1 = False;
End;
If TCOND1 Then
Begin
Vars : SP12(0), TickSize12(0);
SP12 = SignalPosition;
TickSize12 = OneTick * PriceScale;
Params : Period(10);
V0 = Lowest(L, Period)[1]; // Price Ch Lower
V1 = Highest(H, Period)[1]; // Price Ch Upper
Params : vP1(5), vP2(21);
Vars : vM1(0), vM2(0);
vM1 = AvgFast(C, vP1);
vM2 = AvgFast(C, vP2);
If SP12 = 0 Then
Begin
If vM1 > vM2 And C < v0 Then Buy("B", Atlimit, v0);
If vM1 < vM2 And C > v1 Then Sell("S", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P12(121), Exit_L12(50);
SP12 = SignalPosition;
TickSize12 = OneTick * PriceScale;
SetStopLoss(Exit_L12 * TickSize12 * CurrentContracts);
SetProfitTarget(Exit_P12 * TickSize12 * CurrentContracts);
Params : exitP(65), trailA(1);
SetStopTrailing(trailA * TIckSize12 * CurrentContracts, exitP * TIckSIze12 * CurrentContracts);
End;
////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// ///////////////////////////////////////
param : SSTIME3(193200), EETIME3(211200);
Vars : TCOND3(False);
If SSTIME1 < EETIME1 Then
Begin
If SSTIME3 <= TIME And TIME <= EETIME3 Then TCOND3 = True
Else TCOND3 = False;
End
Else
Begin
If SSTIME3 <= TIME Or TIME <= EETIME3 Then TCOND = True
Else TCOND3 = False;
End;
If TCOND3 Then
Begin
Vars : SP1(0), TickSize1(0);
SP1 = SignalPosition;
TickSize1 = OneTick * PriceScale;
Params : Period13(4);
V0 = Lowest(L, Period13)[1]; // Price Ch Lower
V1 = Highest(H, Period13)[1]; // Price Ch Upper
Params : vP11(19), vP22(42);
Vars : vM11(0), vM22(0);
vM11 = AvgFast(C, vP11);
vM22 = AvgFast(C, vP22);
If SP1 = 0 Then
Begin
If vM11 > vM22 And C < v0 Then Buy("Bb", Atlimit, v0);
If vM11 < vM22 And C > v1 Then Sell("Ss", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P1(148), Exit_L1(46);
Vars : SP111(0), TickSize111(0);
SP111 = SignalPosition;
TickSize111 = OneTick * PriceScale;
SetStopLoss(Exit_L1 * TickSize111 * CurrentContracts);
SetProfitTarget(Exit_P1 * TickSize111 * CurrentContracts);
Params : exitP1(101), trailA1(1);
SetStopTrailing(trailA1 * TIckSize111 * CurrentContracts, exitP1 * TIckSIze111 * CurrentContracts);
End;
///////////////////////////////// ///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
param : SSTIME33(203100), EETIME33(060000);
Vars : TCOND33(False);
If SSTIME33 < EETIME33 Then
Begin
If SSTIME33 <= TIME And TIME <= EETIME33 Then TCOND33 = True
Else TCOND33 = False;
End
Else
Begin
If SSTIME33 <= TIME Or TIME <= EETIME33 Then TCOND33 = True
Else TCOND33 = False;
End;
If TCOND33 Then
Begin
Vars : SP11(0), TickSize11(0);
SP11 = SignalPosition;
TickSize11 = OneTick * PriceScale;
Params : Period133(5);
V0 = Lowest(L, Period133)[1]; // Price Ch Lower
V1 = Highest(H, Period133)[1]; // Price Ch Upper
Params : vP111(9), vP222(39);
Vars : vM111(0), vM222(0);
vM111 = AvgFast(C, vP111);
vM222 = AvgFast(C, vP222);
If SP11 = 0 Then
Begin
If vM111 > vM222 And C < v0 Then Buy("Bbb", Atlimit, v0);
If vM11 < vM222 And C > v1 Then Sell("Sss", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P11(400), Exit_L11(82);
Vars : SP1111(0), TickSize1111(0);
SP1111 = SignalPosition;
TickSize1111 = OneTick * PriceScale;
SetStopLoss(Exit_L11 * TickSize1111 * CurrentContracts);
SetProfitTarget(Exit_P11 * TickSize1111 * CurrentContracts);
Params : exitP12(44), trailA12(1);
SetStopTrailing(trailA12 * TIckSize1111 * CurrentContracts, exitP12 * TIckSIze1111 * CurrentContracts);
End;
///////////////////////////////////////////////////////////////////////////////////////////////
param : SSTIME2(234960), EETIME2(022200);
Vars : TCOND2(False);
If SSTIME2 < EETIME2 Then
Begin
If SSTIME2 <= TIME And TIME <= EETIME2 Then TCOND = True
Else TCOND = False;
End
Else
Begin
If SSTIME2 <= TIME Or TIME <= EETIME2 Then TCOND = True
Else TCOND = False;
End;
If TCOND Then
Begin
// 분봉 기준의 40 이평 및 120 이평
Vars : Period5(17), Period6(171);
Vars : ST_Ma5(0), ST_Ma6(0);
ST_Ma5 = AvgFast((O+H+L+C)/4, Period5);
ST_Ma6 = AvgFast((O+H+L+C)/4, Period6);
// 일봉 기준 파란색
//////////////////////////////////////////////////
Params : BuyA_ShortLeng12(7), BuyA_LongLeng12(24) ;
var : BuyA_V123(0), BuyA_V234(0), BuyA_Result123(FALSE);
BuyA_V123 = SMA(Volume, BuyA_ShortLeng12);
BuyA_V234 = SMA(Volume, BuyA_LongLeng12);
BuyA_Result123 = FALSE;
IF BuyA_V123 >= BuyA_V234 Then
BuyA_Result123 = TRUE;
if ( BuyA_Result123 )
Then
Begin
If BuyA_V123 > 140 And BuyA_V123 < 8000 And CrossDown(ST_Ma5, ST_Ma6) Then Sell("A매도");
If BuyA_V123 > 140 And BuyA_V123 < 8000 And CrossUp(ST_Ma5, ST_Ma6) Then Buy("A매수");
End;
// 익절 및 손절
Params : Exit_P2(200), Exit_L2(106);
Vars : SP2(0), TickSize2(0);
SP2 = SignalPosition;
TickSize2 = OneTick * PriceScale;
SetStopLoss(Exit_L2 * TickSize2 * CurrentContracts);
SetProfitTarget(Exit_P2 * TickSize2 * CurrentContracts);
Params : exitP2(38), trailA2(1);
SetStopTrailing(trailA2 * TIckSize2 * CurrentContracts, exitP2 * TIckSIze2 * CurrentContracts);
End;
2020-12-11
800
글번호 144610
답변완료
크로스 지점 누적해서 수직선 표시
차트에서 macd가 시그널선을 골든크로스한 부분들을 모두 수직선으로 표시하는 코드를 부탁드립니다.
우선 봉차트에 표시해 주시고, 가능하다면 MACD 차트에도 수직선을 그렸으면 좋겠습니다.
2020-12-11
688
글번호 144601