답변완료
포지션 주문 수식 문의 드립니다.
1) 단기 이평선이 장기 이평선을 상향 돌파시 최초 매수 포지션 진입하고,
2) 최초 진입가에서 ATR(12일 평균) / 2 값 만큼 상향 돌파 시, "ATR(12일 평균) / 2"에 해당 하는 가격으로 추가 진입 하고,
3) 단기 이평선이 장기 이평선을 하향 돌파시 포지션 전량 청산 하는 전략입니다.
1) 과 3)은 잘 되는거 같은데, 2) 부분이 잘 안되는거 같아서 문의 드립니다.
제가 사용한 수식은 다음과 같습니다.
그리고 Yes language에서 계산되는 ATR 값은 %로 나오는지 아니면 가격으로 나오는지 궁금합니다.
감사합니다.
==================================================================
Input : shortPeriod(10), longPeriod(200);
Var1 = ema(C , shortPeriod);
Var2 = ema(C , longPeriod);
Var3 = ATR(12)/2 ;
# 매수
If Var1 > Var2 and CrossUP(var1, var2) Then
{
Buy("Buy1", OnClose, DEF, 1);
}
# 불타기
If MarketPosition >= 1 and Var1 > Var2 Then
{
if High > EntryPrice(1) + Var3 Then
Buy("Add",AtStop,EntryPrice(1) + Var3 , 1);
}
# 매수청산
If CrossDown(var1, var2) Then
{
ExitLong();
}
2020-12-30
631
글번호 145002
시스템
답변완료
수식 의뢰 드립니다
안녕하세요! 아래 키움 수식을 예스로 변경 부탁드립니다!
항상 감사드립니다!
수식1 > 거래량
pvi(c)+nvi(c)
수식2 > 평균
avg(pvi(c),period)+avg(nvi(c),period)
수식3 > 표시
a=pvi(c)+nvi(c);
b=avg(pvi(c),period)+avg(nvi(c),period);
min(a,b)
지표설정조건>
period 25
라인설정>
거래량 유형:선 / 너비:1pt / 과열 기준값: 1
평균 유형:선 / 너비:1pt / 과열 기준값: 1
표시 유형:선 / 너비:1pt / 과열 기준값: 1
2020-12-30
880
글번호 144999
지표
답변완료
시스템질문
아래수식에서
매수1과 매수2와 매수3의 조건이 2개이상 동시 만족되는경우
같은 가격에서 매수가 중복으로 이뤄지는데
한번만 매수되게 할수는 없을까요?
매수1과 매수2 값이 중복된경우 매수2가 매수되게,,,
매수1과 매수3 값이 중복된경우 매수3가 매수되게,,,
매수2와 매수3 값이 중복된경우 매수3가 매수되게,,,
매수1,2,3가 모두 중복된경우 매수3가 매수되게,,,
INPUT : 매수(0), 매도조건(1);
var : cond(False),LP(0);
var1 = ma(C,3);
var2 = ma(C,5);
var3 = ma(C,10);
var4 = ma(C,60);
if C < Var4 and CrossDown(c,var1) and cond == False Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then
Buy("매수1");
}
if C < var4 and CrossDown(c,var2) and cond == False Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then
Buy("매수2");
}
if C < Var4 and CrossDown(c,var3) and cond == False Then
{
if MarketPosition == 0 or (MarketPosition == 1 and C < LP and Condition1 == False) Then
Buy("매수3");
}
if MarketPosition == 1 Then
{
if 매수 == 1 Then
Cond = true;
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수1" Then
{
LP = LatestEntryPrice(0);
Condition1 = true;
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수2" Then
{
LP = LatestEntryPrice(0);
Condition2 = true;
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수3" Then
{
LP = LatestEntryPrice(0);
Condition3 = true;
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수4" Then
{
LP = LatestEntryPrice(0);
Condition4 = true;
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수5" Then
{
LP = LatestEntryPrice(0);
Condition5 = true;
}
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "매수6" Then
{
LP = LatestEntryPrice(0);
Condition6 = true;
}
if Condition3 == true Then
{
if Condition4 == False Then
Buy("매수4",AtLimit,LP*0.97);
if Condition4 == true and Condition5 == False Then
Buy("매수5",AtLimit,LP*0.95);
if Condition4 == true and Condition5 == true and Condition6 == False Then
Buy("매수6",AtLimit,LP*0.90);
}
if 매도조건 == 1 Then
{
ExitLong("bx1",AtLimit,AvgEntryPrice*1.05,"",Floor(MaxContracts*0.2),1);
ExitLong("bx2",AtLimit,AvgEntryPrice*1.08,"",Floor(MaxContracts*0.5),1);
ExitLong("bx3",AtLimit,AvgEntryPrice*1.10);
}
if 매도조건 == 2 Then
{
ExitLong("bx",AtLimit,AvgEntryPrice*1.15);
}
}
Else
{
Condition1 = False;
Condition2 = False;
Condition3 = False;
}
2020-12-30
543
글번호 144992
시스템
답변완료
안녕하세요! 문의드립니다~ 꼭좀 답변 부탁드립니다~
안녕하세요!
수식을 작성하고 시뮬을 돌리다가 문제점이 몇몇 발생되어 이렇게 문의를 드리게 됐습니다~
현재 피라미딩을 구현하기위해 (1번 ~ 4번) 매 회 매수 서식에 별도의 카운트변수를
선언하여 +1을 하고 있습니다.
이때 if문을 통과했으니 buy주문이 들어가고 +1이 됐을텐데 카운트만 늘어나고
매수는 안되어 있어서 간혹 회차를 넘어가서 1번 2번 이렇게가 아닌 1번 3번 이런식으로
매수가 되어 있더라구요.
크로스업 또는 다운함수를 사용해서 그런가해서
C[1] < 기준선 and C > 기준선
이렇게 넣었는데도 결과는 같았습니다.
주문예약어로 OnClose, AtMarket, AtStop, AtLimit 전부 다 사용해봤는데도
안되더라구요. (AtStop, AtLimit의 경우는 c+PriceScale*3 이렇게 작성했습니다.)
시장가로 매수는 프로그래밍상 어려울거라 생각되는데 무조건 매수가 되게는 보장 못
하지만 그래도 최대한 가장 무조건에 가까운 방법은 OnClose 인지 궁금합니다.
이게 아니면 if 문 내에 카운트를 세는 함수를 +1을 하는게 아니라
if문이 끝나면 바로 아래에
if latestEntryName == 매수1(또는 매수2 ...) then
Cnt = Cnt + 1;
이런식으로 작성을 해야하는지 제 머리로는 이게 한계네요ㅠㅠ
혹시 위의 수식과 같은 최근매수 또는 몇번째 매수했을때의 매수명이 아닌
매수명만으로 포지션이 있는지 없는지를 확인하는 방법이 있을까요?
도움말을 암만 찾아봐도 이거에 대해선 답을 얻진 못했습니다.
슬리피지보다 더 큰 오류를 범하는게 정해진 수식이 진행 중에 매수 또는 매도가
안되었을 때 진짜 답이 없더라구요 ㅠㅠ 사람이 손매매해버리면 또 복잡해지고 ㅠㅠ
슬리피지가 얼마든 상관없습니다 그냥 매수할타이밍에 매수를 무조건 그리고 매도할
타이밍에 매도를 무조건 할 수 있도록 도움 부탁드립니다 ㅠㅠ
그리고 간혹 ETF 상품으로 시뮬을 돌릴때 1분봉기준으로 차트상에 봉이 없다던지
메시지박스로 디버깅을할때 동일 시간이 두줄이 나온다던지 이런 오류가 있던데
실 매매에서는 이런일이 발생되는일은 없겠죠?
(예)
차트 상에서 09:01 봉 다음 09:03 으로 보여짐 -> 09:02 봉이 안보임
메시지 박스에서 2020.01.09.09:01 다음 줄이 동일한 2020.01.09.09:01 이고
그 다음줄이 2020.01.09.09:03 으로 보여짐
마지막으로 차트를 실행했을때 속성에서 "수정주가"라는 게 있는데 이는
어떤 역활을 하는 옵션인건지 궁금하고 체크를 하고 안하고 차이가 궁금합니다!
2020-12-30
937
글번호 144990
시스템