답변완료
Option.GetATMCallRecent(-1) 테스트중 행사가 변경 이유 문의
예스스팟 모의 테스트 하는 데 갑자기 콜옵션 행사가 다른게 잡혀서 문의드립니다.
372.5 -> 370
왜그런걸까요?
function C1_OnRiseSignal(Signal)
{
if ( Signal.signalKind == 1)
{
Main.OrderBuy( A1.number,Option.GetATMCallRecent(-1),1, 0, 1);
}
if ( Signal.signalKind == 3 )
{
Main.OrderSell(A1.number,Option.GetATMCallRecent(-1), 1, 0, 1);
}
Main.MessageLog(Signal.signalKind);
}
2024-07-26
630
글번호 226059
답변완료
도와주세요
1.예스랭귀지로 수식작성하여 검증 완료했습니다.(2가지 수식)
예스스팟으로 편집기에 코딩좀 도와 주십시요
*첫번째수식
INPUT : 기간(120);
VAR : A(0),A1(0),A2(0),A3(0),선행1(0),선행2(0);
A=MA(C,기간);
A1=EmA(C,기간);
A2=WMA(C,기간);
A3=(H+L+C)/3;
선행1=(highest(high,9)+lowest(low,9)+highest(high,26)+lowest(low,26))/4;
선행2=(highest(high,52)+lowest(low,52))/2;
IF A[1]>A1[1] && A[1]>A2[1] && A1[1]>A2[1] && CrossUP(A3,A2) && C>O && 선행1[25]<=C && 선행2[25]<=C TheN
Find(1);
*두번째수식
INPUT : 기간1(150),기간2(200),상승률(1.25);
VAR : A(0),B(0),A1(0);
A=EmA(C,기간1);
B=EmA(C,기간2);
A1=Lowest(L,260)[1]*상승률;
IF((A[2]>A[1]&&A>A[1]) OR (B[2]>B[1]&&B>B[1]))&&
(CrossUP(C,A) OR CrossUP(C,B))&&A1>=C TheN
Find(1);
입니다.
부탁드립니다^^
2024-07-23
629
글번호 226052
답변완료
매도수식 청산내용 추가
1. 게시판 답변글에다 시간청산내용을 추가해보았습니다. 내용이 맞는지 검토해주십시요.
2. 익절과 손절 내용 추가해주십시요.
- 익절 내용 : 잔고가 +50,000원 되면 모두 청산
- 손절 내용 : 잔고가 -50,000원 되면 모두 청산
3. 한세트 진입하고 청산하면 그 다음 거래는 안한다는 내용을 추가해주십시요.
항상 고맙습니다.
*****************************************************************************
function Main_OnStart()
{
Main.SetTimer(1, 5000); // 5초마다 타이머 이벤트 발생
Main.SetTimer(2, 60000); // 1분마다 타이머 이벤트 발생
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds();
if (nEventID == 1) {
if (HHMMSS >= 084600) // 오전 8시 46분
{
Main.KillTimer(1);
C1 = ""; CD1 = -1;
C2 = ""; CD2 = -1;
P1 = ""; PD1 = -1;
P2 = ""; PD2 = -1;
for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++)
{
if (Option1.GetCurrent(0, i) <= 1.0)
{
if (CD1 == -1 || (CD1 > 0 && 1.0 - Option1.GetCurrent(0, i) < CD1))
{
CD1 = 1.0 - Option1.GetCurrent(0, i);
C1 = Option1.GetATMCallRecent(i);
}
}
if (Option1.GetCurrent(0, i) <= 0.5)
{
if (CD2 == -1 || (CD2 > 0 && 0.5 - Option1.GetCurrent(0, i) < CD2))
{
CD2 = 0.5 - Option1.GetCurrent(0, i);
C2 = Option1.GetATMCallRecent(i);
}
}
if (Option1.GetCurrent(1, -i) <= 1.2)
{
if (PD1 == -1 || (PD1 > 0 && 1.2 - Option1.GetCurrent(1, -i) < PD1))
{
PD1 = 1.2 - Option1.GetCurrent(1, -i);
P1 = Option1.GetATMPutRecent(-i);
}
}
if (Option1.GetCurrent(1, -i) <= 0.5)
{
if (PD2 == -1 || (PD2 > 0 && 0.5 - Option1.GetCurrent(1, -i) < PD2))
{
PD2 = 0.5 - Option1.GetCurrent(1, -i);
P2 = Option1.GetATMPutRecent(-i);
}
}
}
if (C1 != "" && C2 != "")
{
Account1.OrderSell(C1, 1, Option1.GetBid(C1, 5), 0);
Account1.OrderSell(C2, 1, Option1.GetBid(C2, 5), 0);
}
if (P1 != "" && P2 != "")
{
Account1.OrderSell(P1, 1, Option1.GetBid(P1, 5), 0);
Account1.OrderSell(P2, 1, Option1.GetBid(P2, 5), 0);
}
}
}
if (nEventID == 2) {
// 15시 청산 조건
if (HHMMSS >= 150000 && HHMMSS < 150100) { // 15시 1분에 청산
closePositions();
Main.KillTimer(2); // 타이머 2 종료
}
}
}
function closePositions() {
// Call 포지션 청산
if (C1 != "" && C2 != "") {
Account1.OrderBuy(C1, 1, Option1.GetAsk(C1, 5), 0);
Account1.OrderBuy(C2, 1, Option1.GetAsk(C2, 5), 0);
}
// Put 포지션 청산
if (P1 != "" && P2 != "") {
Account1.OrderBuy(P1, 1, Option1.GetAsk(P1, 5), 0);
Account1.OrderBuy(P2, 1, Option1.GetAsk(P2, 5), 0);
}
}
2024-08-03
609
글번호 226050