답변완료
글 번호-58459 수식에 관한 자세한 주석을 부탁드립니다
안녕하세요.
항상 수고가 많으십니다.
질문드립니다 -----------------------------------------------------------------------
아래 수식은 글 번호 58459 수식입니다.
죄송하지만 각각의 수식에 대해 자세한 주석을 달아 주시면 감사하겠습니다.
Input:length(12);
Var:j(0),lastHiVal(0),lastLoVal(0),sBar(0),eBar(0),TL1(0),
Text1(0),처리구분("");
Array:고점[10,2](0),저점[10,2](0); //가격,위치
처리구분 = "";
If Highest(H,length) == H and lastHiVal <> H and
Lowest(L,length) == L and lastLoVal <> L Then
{
If 저점[1,1] > L Then 처리구분 = "저점처리";
If 고점[1,1] < H Then 처리구분 = "고점처리";
}
Else If Highest(H,length) == H and lastHiVal <> H Then
처리구분 = "고점처리";
Else If Lowest(L,length) == L and lastLoVal <> L Then
처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
lastHiVal = H;
If 고점[1,2] < 저점[1,2] Then
{
For j = 10 DownTo 2
{
고점[j,1] = 고점[j-1,1];
고점[j,2] = 고점[j-1,2];
}
}
If 고점[1,2] < 저점[1,2] or 고점[1,1] < H Then
{
고점[1,1] = H;
고점[1,2] = Index;
sBar = Index - 저점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],저점[1,1],
sDate[eBar],sTime[eBar],고점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],고점[1,1],NumToStr(고점[1,1],2)
+NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 2, 1);
}
}
If 처리구분 == "저점처리" Then
{
lastLoVal = L;
If 저점[1,2] < 고점[1,2] then
{
For j = 10 DownTo 2
{
저점[j,1] = 저점[j-1,1];
저점[j,2] = 저점[j-1,2];
}
}
If 저점[1,2] < 고점[1,2] or 저점[1,1] > L then
{
저점[1,1] = L;
저점[1,2] = Index;
sBar = Index - 고점[1,2];
eBar = 0;
If TL_GetBeginDate(TL1) == sDate[sBar] and
TL_GetBeginTime(TL1) == sTime[sBar] Then
{
TL_Delete(TL1);
Text_Delete(Text1);
}
TL1 = TL_New(sDate[sBar],sTime[sBar],고점[1,1],
sDate[eBar],sTime[eBar],저점[1,1]);
Text1 = Text_New(sDate[eBar],sTime[eBar],저점[1,1],NumToStr(저점[1,1],2)
+NewLine+"진폭"+NumToStr((고점[1,1]-저점[1,1]),2));
Text_SetStyle(Text1, 2, 0);
}
}
//
TL_SetSize(TL1,2);
TL_SetColor(TL1,BLACk);
//
----------------------------------------------------------------------------------
다시 한번 감사드립니다.
2020-11-15
558
글번호 143890
지표
답변완료
시스템 수식 문의드립니다.
안녕하세요~ 수고 많으십니다.
지표수식을 시스템으로 바꾸려고 하니 어렵네요ㅠ
도움 부탁드립니다.
감사합니다.
Input : period1(5),period2(20);
var : a1(0), a2(0);
//highestsince (1,CrossUp(ma(c,period1,가중),ma(c,period2,가중)),ma(c,period2,가중));
//lowestsince(1,CrossUp(ma(c,period1,가중),ma(c,period2,가중)),ma(c,period2,가중));
var1 = wma((H+L)/2,period1);
var2 = wma((H+L)/2,period2);
if crossup(var1,var2) Then
value1 = var1;
if var2 > value1 Then
value1 = var2;
if CrossDown(var1,var2) Then
value2 = var1;
if var2 < value2 Then
value2 = var2;
a1 = plot1(value1);
a2 = plot2(value2);
// 매수진입
//plot2(value2) < var2
If a2 < var2
then
Begin
Buy();
end;
// 매도진입
// plot1(value1) > var2
If a1 > var2
then
Begin
Sell();
end;
2020-11-14
569
글번호 143886
시스템
답변완료
현재 있는 수식에서 분할매도 기능 추가 부탁드려요~~
제가 사용하고 있는 수식인데요....
매도 되는 수식이 두개가 있는데
1) 전체 진입 매수 평균가에 10% 수익시 일괄 청산
2) 기타 보조지수 를 충족시 분할 청산
거기에서
2번의 경우는 분할매도로 청산되는데
1번의 조건을 만족시에도 분할 매도 되게 수식 부탁드림니다.~~
input : 시작일(19000101);
input : 일봉RSI기간(30);
input : 일봉RSI값1(52),일봉RSI값2(36),일봉RSI값3(30);
input : 최대투자금액(1500);
input : 진입금액1(5);
input : 진입금액2(15);
input : 진입금액3(20);
input : 진입금액4(25);
input : 진입금액5(30);
input : 진입금액6(35);
input : 진입금액7(40);
input : 진입금액8(50);
input : 진입금액9(60);
input : 진입금액10(70);
input : 이차진입금액(100);
input : 삼차진입금액(200);
input : MFI기간(15),MFI값(90);
input : 심리도기간(15),심리도값(80);
# 보조지수 충족시
input : 분할매도횟수(25);
input : 분할매도퍼센트(10);
input: 청산수익률(1.09);
var : mav(0,data2),MM(0,Data3),SS(0,Data3);
var : MMM(0,Data2),SSS(0,Data2),Xcnt(0,Data2),Xvol(0,data1);
MM = Data3(mfi(MFI기간));
SS = Data3(Simrido(심리도기간));
MMM = Data2(mfi(MFI기간));
SSS = Data2(Simrido(심리도기간));
var : vol(0);
var : RSI2(0,Data2);
RSI2 = Data2(RSI(일봉RSI기간));
if Data1(sDate) >= 시작일 Then
{
if MarketPosition == 0 or (MarketPosition == 1 and AvgEntryPrice*CurrentContracts < 최대투자금액*10000 ) Then
{
if data1(sTime == 93000 or sTime == 120000 ) Then # or sTime == 123000
{
if Data2(RSI2 > 일봉RSI값1) Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C >= AvgEntryPrice*0.98) Then
vol = Floor(진입금액1*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.98 and C >= AvgEntryPrice*0.96 Then
vol = Floor(진입금액2*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.96 and C >= AvgEntryPrice*0.94 Then
vol = Floor(진입금액3*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.94 and C >= AvgEntryPrice*0.92 Then
vol = Floor(진입금액4*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.92 and C >= AvgEntryPrice*0.90 Then
vol = Floor(진입금액5*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.90 and C >= AvgEntryPrice*0.88 Then
vol = Floor(진입금액6*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.88 and C >= AvgEntryPrice*0.86 Then
vol = Floor(진입금액7*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.86 and C >= AvgEntryPrice*0.84 Then
vol = Floor(진입금액8*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.84 and C >= AvgEntryPrice*0.82 Then
vol = Floor(진입금액9*10000/c);
if MarketPosition == 1 and C < AvgEntryPrice*0.82 and C >= AvgEntryPrice*0.80 Then
vol = Floor(진입금액10*10000/c);
Buy("불타기매매1",OnClose,DEf,vol);
}
if Data2(RSI2 < 일봉RSI값2 and RSI2 > 일봉RSI값3 ) Then
{
Buy("하락과도매매1",OnClose,DEf,Floor(이차진입금액*10000/c));
}
if Data2(RSI2 < 일봉RSI값3) Then
{
Buy("폭락과도매매1",OnClose,DEf,Floor(삼차진입금액*10000/c));
}
}
}
}
if MarketPosition == 1 Then
{
ExitLong("bx",AtLimit,AvgEntryPrice*청산수익률);
}
if MM > MFI값 or SS > 심리도값 or MMM > MFI값 or SSS > 심리도값 Then
{
xcnt = xcnt+1;
if Xcnt <= (분할매도횟수-1) Then
Xvol = Floor(MaxContracts*분할매도퍼센트/100);
else
Xvol = CurrentContracts;
if Xcnt <= 분할매도횟수 Then
exitlong("청산",atlimit,C,"",Xvol,2);
}
Else
xcnt = 0;
2020-11-14
526
글번호 143884
시스템
답변완료
주종목(Data1) 시스템과 참조종목(Data2) 시스템의 합성
안녕하세요.
간단히 말씀드리면 파라볼릭 시스템과 주가 이평선 골드크로스 시스템을 AND 조건으로 합성하고자 합니다.
1. 아래 로직을 시스템으로 작성하고 싶습니다.
1-1. 매수 진입
(1) 주종목(Data1)은 3분봉이고, 주종목의 파라볼릭(0.02, 0.2) 시스템에서 매수 신호가 발생하거나 매수 신호가 유지된다.
(2) 참조종목(Data2, 정확하게는 타주기)은 5분봉이고, 참조종목은 종가가 20봉 이평선을 상향 돌파하거나 상향 돌파가 유지된다.
(3) 위 (1), (2) 조건을 모두 만족하면, 매수 진입하라.
1-2. 매수 청산
(1) 주종목(Data1)의 파라볼릭(0.02, 0.2) 시스템에서 매도 신호가 발생하면 매수 청산하라.
<매도 진입, 매도 청산: 위에 있는 매수 진입, 매수 청산과 반대 조건입니다>
1-3. 매도 진입
(1) 주종목(Data1)은 3분봉이고, 주종목의 파라볼릭(0.02, 0.2) 시스템에서 매도 신호가 발생하거나 매도 신호가 유지된다.
(2) 참조종목(Data2)은 5분봉이고, 참조종목은 종가가 20봉 이평선을 하향 이탈하거나 하향 이탈이 유지된다.
(3) 위 (1), (2) 조건을 모두 만족하면, 매도 진입하라.
1-4. 매도 청산
(1) 주종목(Data1)의 파라볼릭(0.02, 0.2) 시스템에서 매수 신호가 발생하면 매도 청산하라.
2. 주의 사항
2-1. 위 진입(매수, 매도)은 파라볼릭 시스템과 주가 이평선 골드크로스(데드크로스) 시스템을 AND 조건으로 합성한 것입니다. 그런데, 주가 이평선의 진입 신호를 참조종목(같은 종목의 타주기)에서 가져오겠다는 것이 핵심인데, 작성한 시스템의 결과가 예상과 다르게 나타납니다.
2-2. 아래는 매수 진입, 매수 청산의 경우에 한정한 시스템입니다. 그러나 아래 시스템을 적용했더니 첨부화일 1(그림 1)에 있듯이 매수신호가 발생해야 하는 봉에서 매수신호가 전혀 없네요. 첨부화일 2(그림 2)에는 예상과 다른 봉에서 매수신호가 발생합니다. 예상과 다르게 신호가 나오게 어디가 잘못되서 그런지 모르겠네요.
Input : af(0.02), maxAF(0.2);
Input : shortPeriod(20), longPeriod(50);
Var : value(0);
Var : mav(0), sarv(0), Bcond(false), Scond(false);
Var : mav1(0,Data1),mav2(0,Data1);
Var : avg1(0,Data2),avg2(0,Data2);
mav = Ema(c,shortPeriod);
sarv = csar(af,maxAF);
mav1 = Data1(Ema(C,shortPeriod));
mav2 = Data1(Ema(C,longPeriod));
avg1 = Data2(Ema(C,shortPeriod));
avg2 = Data2(Ema(C,longPeriod));
Bcond = Data2(C) > avg1 and Data1(C) > sarv;
# 매수 진입
If MarketPosition<=0 and Bcond == true and Bcond[1] == false Then
{
Buy();
}
# 매수 청산
If MarketPosition==1 and C < sarv Then
{
ExitLong();
}
많은 도움에 대단히 감사합니다.
2020-11-14
519
글번호 143883
시스템