답변완료
76429 글 다시 확인 좀 요청 드립니다.
* 전일 해주신 수식 작성했으나 별표가 안 찍힙니다.
아래 내용 문법에 맞는지 확인 좀 부탁 드립니다.
##매수통합
Condition1 = CrossUp(var55-0.6, mid ) ;
Condition2 = CrossUp(var55-0.6, Lmav) and c > ma(L,5) ;
Condition3 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) and value17 < -20 ;
Condition4 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*14) AND value8 < -0.001 ;
Condition5 = CrossUp(LRLv - PriceScale*23 , var80 - PriceScale*13) ;
Condition6 = CrossUp(LRLv1 - PriceScale*23 ,var93 - PriceScale*16) AND L < MA(C,230) and value17 < -28 ;
Condition7 = CrossUp(LRLv-PriceScale*20,var81-PriceScale*11) AND StoD2<30 AND LRLv92-PriceScale*23 > LRLv91-PriceScale*23 AND StoD4 < 30 AND Value65 > -0.008 ;
Condition8 = CrossUp(LRLv - PriceScale*20 ,var81 - PriceScale*14) AND value8 < -0.001 and value17 < -28 ;
if //dayindex() >= 2 and
CountIf(Condition1==true,bw) >= 1 and
CountIf(Condition2==true,bw) >= 1 and
CountIf(Condition3==true,bw) >= 1 and
CountIf(Condition4==true,bw) >= 1 and
CountIf(Condition5==true,bw) >= 1 and
CountIf(Condition6==true,bw) >= 1 and
CountIf(Condition7==true,bw) >= 1 and
CountIf(Condition8==true,bw) >= 1 and
(Condition1 == true or Condition2 == true or Condition3 == true or Condition4 == true or Condition5 == true or Condition6 == true or Condition7 == true or Condition8 == true ) Then {Tx03 = Text_New(sdate,stime,MA(L,5)-3.0 ,"★"); Text_SetStyle(Tx03,2,2); Text_SetColor(Tx03, RGB(0,50,200) ); Text_SetSize(Tx03,26); }
* 항상 고맙습니다. 수고하십시요.
2022-03-22
874
글번호 157364
강조
답변완료
수식 수정 부탁드립니다.
페어트레이딩 관련 수식인데요, 예스랭귀지 편집기에서 검증을 해보니 수많은 오류가 뜨네요
오류가 뜨는 부분 수정 부탁드립니다.
수식은 아래와 같습니다.
감사합니다.
---아 래----
//===♠페어트레이딩_
INPUT : ※수량이음수이면_매도(0);
INPUT : 진입_일자(20190325), 진입_시간(193000);
INPUT : D1_진입가(2808.25), D2_진입가(25553);
INPUT : D1_수량(1), D2_수량(-1.4); // 실재 매매시는 2개와 3개
INPUT : ※_수수료는_편도(5);
INPUT : D1_수수료(5), D2_수수료(5), 환율(1180);
INPUT : 손익원화환산1(1); // 달러 표시 손익일 경우 환산 여부 지정
INPUT : 손익_상단(1572), 손익_하단(-1914);
//=== 변수 선언 ===
var : D1현재가(0), D2현재가(0);
//=== 현재가 지정 ===
D1현재가 = Data1(c);
D2현재가 = Data2(c);
//=== 틱단위와 틱가치 대입 ===
var : D1틱단위(0), D1틱가치(0);
var : D2틱단위(0), D2틱가치(0);
D1틱단위 = data1(PriceScale);
D2틱단위 = data2(PriceScale);
D1틱가치 = data1(PointValue);
D2틱가치 = data2(PointValue);
//=== 손익 산출 ===
var : D1손익(0), D2손익(0), 손익소계(0), 순손익(0);
var : D1수수료(0), D2수수료(0), 수수료소계(0);
//==== _손익 산출
D1손익 = ((D1현재가 - D1_진입가) / D1틱단위 * D1틱가치 * D1_수량);
D2손익 = ((D2현재가 - D2_진입가) / D2틱단위 * D2틱가치 * D2_수량);
손익소계 = D1손익 + D2손익;
D1수수료 = abs(D1_수량 * D1_수수료 * 2); //왕복
D2수수료 = abs(D2_수량 * D2_수수료 * 2);
수수료소계 = D1수수료 + D2수수료;
순손익 = 손익소계 - 수수료소계;
//===원화 환산. 금액 단위 천원
iF 손익원화환산1 == 1 Then 순손익 = (순손익 * 환율) / 1000;
//===== 손익 이평선 =====
Input : 소이평값(5), 중이평값(20), 대이평값(60);
var : 소이평(0), 중이평(0), 대이평(0);
소이평 = ma(순손익, 소이평값);
중이평 = ma(순손익, 중이평값);
대이평 = ma(순손익, 대이평값);
//=== 손익의 10 구간 계산
var : 중간선(0), 십등분(0);
var : 이부선(0), 사부선(0), 육부선(0), 팔부선(0), 방향색(0);
중간선 = (손익_상단 + 손익_하단) / 2;
십등분 = (손익_상단 - 손익_하단) / 10;
이부선 = 손익_하단 + 십등분*2;
사부선 = 손익_하단 + 십등분*4;
육부선 = 손익_하단 + 십등분*6;
팔부선 = 손익_하단 + 십등분*8;
//==== 방향표시바 색지정
if 순손익 >= 손익_상단 then
방향색 = RGB(0, 0, 217); // 진청
if 순손익 < 손익_상단 and 순손익 >= 팔부선 then
방향색 = RGB(0, 128, 255); // 연청
if 순손익 < 팔부선 and 순손익 >= 육부선 then
방향색 = RGB(0, 230, 230); //하늘색
if 순손익 < 육부선 and 순손익 >= 사부선 then
방향색 = RGB(0, 204, 0); //녹색
if 순손익 < 사부선 and 순손익 >= 이부선 then
방향색 = RGB(255, 128, 0); //주황
if 순손익 < 이부선 and 순손익 >= 손익_하단 then
방향색 = RGB(255, 128, 192); //연핑크
if 순손익 < 손익_하단 then
방향색 = RGB(255, 0, 255); //진핑크
//========지표의 출력 ==============
//--지정일 지정시간 이후 지표 출력을 위한 것
if Condition1 == false and
sDate >= 진입_일자 and
sTime >= 진입_시간 Then Condition1 = true;
if Condition1 == true Then {
plot13(순손익, "순손익");
plot16(소이평, "소이평");
plot17(중이평, "중이평");
plot18(대이평, "대이평");
}
//==== 손익 상단 하단 출력 및 음성 안내 =========
Input : 음성안내ON1(1);
If 손익_상단 <= 순손익 Then {
plot21(손익_상단, "손익_상단선");
If 음성안내ON1 == 1 Then
playsound("C:₩____Mysound₩11₩풀룻Flute.WAV");
}
If 손익_하단 >= 순손익 Then {
plot22(손익_하단, "손익_하단선");
If 음성안내ON1 == 1 Then
playsound("C:₩____Mysound₩11₩풀룻Flute.WAV");
}
if 순손익 >= 이부선 and 순손익 <= 사부선 Then
plot23(중간선, "중간선");
//==== 방향바 출력 =======
plot24(0, "■방향바", 방향색);
/*
//==== 데이터 검증영역 =====
plot41(D1손익, "D1 손익");
plot42(D2손익, "D2 손익");
plot43(손익소계, "손익소계");
plot44(수수료소계, "수수료합계");
Plot51(D1틱단위, "D1틱단위");
Plot52(D1틱가치, "D1틱가치");
Plot53(D2틱단위, "D2틱단위");
Plot54(D2틱가치, "D2틱가치");
Plot61(D1_진입가, "●D1진입가");
Plot62(D2_진입가, "○D2진입가");
Plot63(D1_수량, "■D1수량");
Plot64(D2_수량, "□D2수량");
Plot65(D1_수수료, "▲D1_수수료");
Plot66(D2_수수료, "△D2_수수료");
plot67(손익_상단, "@@손익_상단");
plot68(손익_하단, "@@손익_하단");
2022-03-22
1036
글번호 157363
사용자 함수
답변완료
수식문의 드립니다
아래 지그재그 수식에서 고점저점 가격과 진폭(고저차)수치가 작게보여 크게 볼 수 있는 수식을 첨가 부탁드립니다.
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, 3, 3);
}
}
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, 3, 3);
}
}
TL_SetSize(TL1,3);
TL_SetColor(TL1,lgreen);
2022-03-22
1225
글번호 157361
지표
답변완료
주식 시스템 문의 드립니다.
안녕하세요
아래 코드로 현재 1분봉으로 매매중인데요
원하는 코드가 잘 안만들어져서 수정 부탁드리고자 합니다.
1. #돌파매수 실행시
Condition11 만족하는 봉 발생시 그 봉의 종가를 CC로 리턴하고 다음봉이 음봉이면 매수대기하다가 첫 양봉 출현시 매수하고자 함
(지금 코드는 임시방편입니다.)
Ex) 조건발생 양봉 - 음봉 - 음봉 - 음봉 - 양봉 -매수
조건발생 양봉 - 양봉 - 매수
2. 마지막 분할매도 부분
수익율 3프로 이상발생한 후 var1 이평이 var3 이평을 crossdown하는 경우 전량 매도
(과거에 수익율이 3프로 이상 발생한 적이 한번이라도 있으면 현재 수익율이 얼마인지 관계없이 crossdown시 전량매도)
아래 코드로 적용해보았는데 작동되질 않습니다.
if countif(C >= AvgEntryPrice*1.03, 60) >= 1 and crossdown(var1,Var3) Then
ExitLong("Exit",OnClose,DEf,"",MaxContracts,1);
3. 분할매도시 주식수량 오차
종목당 일정 금액으로 매수를 하는데 분할매도하면 1~2주씩 남게 됩니다.
어찌해결하면 좋을지 부탁드려요
4. 전체적으로 코드 최적화
초심자이다 보니 코드가 체계적이고 효율적이지 못한것 같습니다.
효율적인 코드로 편집 부탁드릴께요
감사합니다.
--------------------------------------------------------------------------------
input : P1(5),P2(20),P3(60),P4(120),P5(240),P6(480);
Input : Period(12), Period1(6), Period2(10),Period3(12);
var : StoK(0),StoD(0),RSIV(0);
var : HH(0),LL(0),HV(0),HV1(0),HL(0),HL2(0),CC(0), CC1(0);
var1=ma(c,P1);
var2=ma(c,P2);
var3=ma(c,P3);
var4=ma(c,P4);
var5=ma(c,P5);
Var6=ma(c,P6);
StoK = StochasticsK(Period,Period1);
StoD = StochasticsD(Period,Period1,Period2);
RSIV = RSI(Period3);
HL = DayHigh/DayLow; #당일 고가-저가 차이
HH = Highest(H,120);
LL = Lowest(L,120);
HL2 = HH/LL; #2시간 내 고가 저가 차이
#돌파 신호 조건
If C >= O and C > Var5 and C > var6 and HL < 1.15 and HL2 < 1.1 and DayOpen < DayClose[1]*1.05 and countif(CrossDown(var5,Var6),240) == 0 and
countif(M > 100000000,3) >= 1 and DayVolume > (DayVolume[1]*0.3) and
Countif(crossup(RSIV,70),3) >= 1 Then
Condition11 = true;
Else
Condition11 = false;
if C < (AvgEntryPrice*0.95) and countif(M > 100000000,3) >= 1 and C > DayOpen and Countif(crossup(RSIV,70),4) >= 1 and C > var6 Then
Condition12 = true;
Else
Condition12 = false;
#돌파 매수 실행
if countif(Condition11[2],10)>= 1 and C >= O and sDate >= 20220301 and marketposition == 0 and countif(marketposition == 1,120) < 1 Then
Buy("Buy1",OnClose);
if CountIF(Condition12[2],10)>=1 and C >= O and MarketPosition == 1 and C >= O and CountIf(condition12[3],180) == 0 Then
Buy("Buy2",OnClose);
#분할매도
if c >= AvgEntryPrice*1.05 Then
ExitLong("5Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if c >= AvgEntryPrice*1.10 Then
ExitLong("10Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if c >= AvgEntryPrice*1.15 Then
ExitLong("15Per",OnClose,DEf,"",MaxContracts*(1/4),1);
if C >= AvgEntryPrice*1.03 and crossdown(var1,Var3) Then
ExitLong("Exit",OnClose,DEf,"",MaxContracts,1);
2022-03-21
1092
글번호 157344
시스템
답변완료
수식 수정부탁드립니다
input : v기간1(5),v기간2(20),K1(8),K2(10);
input : 이평기간1(5),이평기간2(20),이평기간3(60),이평기간4(120),이평기간5(240);
input : 양봉상승율(5), 최고량기간(240), 비교봉수(20), N(0);
input : P(12),dv(2) ;
var : mav1(0), mav2(0), mav3(0), mav4(0), mav5(0);
var1 = MA(V,v기간1);
var2 = MA(V,v기간2);
mav1 = ma(C,이평기간1);
mav2 = ma(C,이평기간2);
mav3 = ma(C,이평기간3);
mav4 = ma(C,이평기간4);
mav5 = ma(C,이평기간5);
var4 = BollBandUp(P,dv);
Var5 = ma(C,P);
Var6 = BollBandDown(P,dv);
Condition1 = (( var1[1] * K1 < V ) or ( V >= V[1] * K2 )) and (C >= C[1]*(1+양봉상승율/100)) ;
Condition2 = ( CrossDown(C, var4 ) or ( H > var4 and C < var4 ) ) and C < O ;
Condition3 = ( CrossUp(C, var4) or ( C > var5 and L < var5 ) or ( C > var6 and L < var6 )) and mav1[1] < mav1 and C > O ;
Condition4 = AccumN(iff((Condition1, 최고량기간 ), 1, 0), 비교봉수 ) >= 1 ;
if CountIf( Condition1, 최고량기간 ) >= 1 and CountIf( Condition2, N ) >= 1
and Condition3 == true and Condition4 == true Then
{
find(1);
}
상기 수식은 다음의 내용을 반영할 수 있는 것으로 만들어 본 것인데 Condition4 에서 문법에러가 난다고 하네요.
기간(240)으로 한 최고거래량이 발생(거래량 5이평보다 K1(8)배, 전일거래량보다 K2(10)배 많은 거래량이 발생)한것이 최근 비교봉수(30일)내에 있는 조건을 충족해한다. 그리고 Condition2는 최고거래량이 발생한 후 볼밴상단선을 이탈한 경우가 있어야 한다는 것이고,
Condition3은 Condition2 이후 볼밴 상단선 또는 중심선 또는 하단선을 돌파하는 캔들출현시에 매수종목으로 검색되게 하는 것입니다.
이 이상의 내용을 반영한 식으로 수정해주시고요
추가적으로 Condition1 이 발생된후 특정기간(5) 이후에 Condition3 이 발생되어야 한다는 조건(돌파시의 캔들상승율은 5%이내이어야한다)을 추가해주시면 감사하겠읍니다
2022-03-21
1563
글번호 157340
종목검색