답변완료
지표 변환 부탁드립니다.
키움 수식인데 변환 부탁드립니다.
수식1
S=sar(af,maxAf);
--------------------------------
수식2
S=sar(af,maxAf);
D=ValueWhen(1,CrossDown(C,S),S(1));
Ds=ValueWhen(1,CrossDown(C,S),S);
DDs2=S-(Ds-D)/2;
DDs4=S-(Ds-D)/4;
U=ValueWhen(1,CrossUp(C,S),S(1));
Us=ValueWhen(1,CrossUp(C,S),S);
UUs2=(U-Us)/2+S;
UUs4=(U-Us)/4+S;
if(C>S, UUs2,DDs2)
---------------------------------
수식3
S=sar(af,maxAf);
D=ValueWhen(1,CrossDown(C,S),S(1));
Ds=ValueWhen(1,CrossDown(C,S),S);
DDs2=S-(Ds-D)/2;
DDs4=S-(Ds-D)/4;
U=ValueWhen(1,CrossUp(C,S),S(1));
Us=ValueWhen(1,CrossUp(C,S),S);
UUs2=(U-Us)/2+S;
UUs4=(U-Us)/4+S;
if(C>S, UUs4,DDs4)
-----------------------------------
수식4
S=sar(af,maxAf);
조건=Crossup(C,S);
시작가=ValueWhen(1,조건,O);
bs=BarsSince(조건);
라인1=if(조건,시작가,시작가+시작가*(비율1/100)*bs);
if(S<C && S<라인1,라인1,S);
------------------------------------
수식5
S=sar(af,maxAf);
조건=Crossup(C,S);
시작가=ValueWhen(1,조건,O);
bs=BarsSince(조건);
라인2=if(조건,시작가,시작가+시작가*(비율2/100)*bs);
if(S<C && S<라인2,라인2,S);
===================
설정
af=0.01
maxAf=0.2
비율1=0.5
비율2=1
2025-06-09
216
글번호 191503
지표
답변완료
지표식인대 시스템 신호 부탁 드립니다.
input:p9(9),p26(26),p52(52);
var:a9(0),a26(0),af1(0),af2(0);
a9=(highest(h,p9)+lowest(l,p9))/2;
a26=(highest(h,p26)+lowest(l,p26))/2;
af1=(a9+a26)/2;
af2=(highest(h,p52)+lowest(l,p52))/2;
plot1(af1-af2, "선행12 41.6%");
plot2(a26-af2[p26-1], "기준-선행2 43.7%");
plot3(a9-af2[p26-1], "전환-선행2 40.4%");
PlotBaseLine1(0,"zero");
안녕 하세요.
1.양으로 전환 될때 매수 음으로 전환 될때 매도
2.기준선(제로) 위에 있을때 매수 아래에 있을때 매도 이렇게 두가지 수식 부탁 드립니다.
수고하세요.
2025-06-09
191
글번호 191499
시스템
답변완료
수식 확인 부탁드립니다
안녕하세요, 진입이 전혀 이뤄지지 않아 확인 부탁드립니다. 감사합니다.
// ------------------------------
// 1단계: 20일 이동평균 기준 상승 추세 판단
// ------------------------------
Vars: LTrend(False), Pullback(False);
LTrend = Close > MA(Close, 20); // 현재 종가가 20일 이동평균보다 높을 때 상승 추세로 간주
// ------------------------------
// 2단계: 되돌림 판단 및 기준봉 설정
// ------------------------------
Vars: upCount(0), downCount(0);
Vars: 기준생성(False), 기준봉High(0), 기준봉Low(0);
If LTrend == True Then
{
// 양봉인 경우
If Close > Open Then
{
upCount = upCount + 1;
downCount = 0; // 음봉 카운터 초기화
}
// 음봉인 경우
Else
{
If upCount >= 2 and 기준생성 == False and downCount < 8 Then
{
downCount = downCount + 1;
// 최근 양봉 2개의 저가보다 낮은 저가 발생 시 기준봉 설정
If Low < MinList(Low[1], Low[2]) Then
{
기준봉Low = Low;
기준봉High = High;
기준생성 == True;
}
}
Else
{
downCount = downCount + 1;
}
}
// 추세 실패 판단: 음봉이 8개 이상 지속되면 리셋
If downCount >= 8 Then
{
기준생성 = False;
upCount = 0;
downCount = 0;
}
// ------------------------------
// 매수 조건: 기준봉 고가 돌파
// ------------------------------
If 기준생성 and High > 기준봉High Then
{
Buy("Buy",AtLimit,기준봉High,1);
// 리셋
기준생성 = False;
upCount = 0;
downCount = 0;
}
}
Else
{
// 상승 추세가 아니면 전체 상태 리셋
upCount = 0;
downCount = 0;
기준생성 = False;
}
input:PT(5);
SetStopLoss(PT,PercentStop);
SetStopProfittarget(PT*3,PercentStop);
2025-06-08
207
글번호 191496
시스템
답변완료
수식 확인 좀 부탁 드립니다.
구글 제미나이에 문의를 해봤습니다. 손절시 시장가로 청산주문을 내도 선물이 급변동하였을 경우 주문가와 차이가 많을경우 cme규정상 주문이 없는 걸로 간주해서 청산이 안되는 바람에 손실이 너무 클 경우가 있고 청산이 안된 상태에서 다음 진입주문이 들어가 버려 매매가 완전히 꼬일 수가 있다고 했더니 아래의 일일최대허용 손실율로 제한식을 추가하면 손실을 어느정도 제한할수 있다고 합니다. 그런데 예스랭귀지에서 사용하는 언어가 아니라서 적용을 못 해보았습니다. 아래의 식을 예스랭귀지로 구현 좀 부탁드립니다. 그리고 아래식을 적용하면 손실을 제한할 수 있는가요?
Inputs:
DailyLossLimit( 0.03 ), // 일일 최대 허용 손실율 (예: 0.03 = 3%)
EmergencyExitAttempts( 3 ), // 비상 청산 시도 횟수
EmergencyExitDelaySeconds( 5 ); // 비상 청산 재시도 간격 (초 단위)
// Variables (내부 사용 변수)
Variables:
V_StartingDailyBalance(0), // 하루 시작 시 계좌 잔고
V_EmergencyMode(False), // 비상 모드 플래그
V_ExitAttemptCount(0), // 비상 청산 시도 횟수 카운터
V_LastExitAttemptTime(0); // 마지막 비상 청산 시도 시간 (TicksFromMidnight)
// 매일 장 시작 시 초기화
If Date <> Date[1] Then Begin
V_StartingDailyBalance = AccountNetLiquidValue(Account);
V_EmergencyMode = False; // 새로운 날 시작 시 비상 모드 초기화
V_ExitAttemptCount = 0; // 시도 횟수 초기화
End;
// 일일 최대 손실 초과 시 비상 모드 활성화
If V_StartingDailyBalance <> 0 And (AccountNetLiquidValue(Account) - V_StartingDailyBalance) / V_StartingDailyBalance < -DailyLossLimit Then Begin
Print(Date, Time, " !!! CRITICAL: Daily Loss Limit Exceeded! Current Loss: ", (AccountNetLiquidValue(Account) - V_StartingDailyBalance) / V_StartingDailyBalance * 100:2:Float, "% !!!");
V_EmergencyMode = True;
End;
// --- 비상 모드 실행 로직 (이 부분이 매 틱마다 또는 매 바마다 실행됨) ---
If V_EmergencyMode Then Begin
Print(Date, Time, "EMERGENCY MODE ACTIVATED. All new entries and exits are suspended.");
// 현재 포지션이 남아있고, 비상 청산 시도 횟수가 남았으며, 재시도 시간이 되었을 때
If MarketPosition <> 0 And V_ExitAttemptCount < EmergencyExitAttempts And (TicksFromMidnight - V_LastExitAttemptTime) >= EmergencyExitDelaySeconds Then Begin
Print(Date, Time, "Attempting Emergency Exit (", V_ExitAttemptCount + 1, " of ", EmergencyExitAttempts, ").");
ExitAllPositions; // 모든 포지션 강제 청산 시도
V_ExitAttemptCount = V_ExitAttemptCount + 1;
V_LastExitAttemptTime = TicksFromMidnight;
End;
SetExitOnClose; // 혹시라도 남아있는 포지션은 바 마감 시 강제 청산 명령
Return; // 이 코드가 실행되면, 이 뒤에 있는 모든 정상적인 매매 로직은 실행되지 않고 현재 바의 스크립트 실행이 종료됨.
End;
2025-06-08
184
글번호 191495
시스템