커뮤니티

예스스팟 Q&A

답변완료

트레일링 스탑 적용시 에러(정말 빠른 답변 부탁드립니다.)

안녕하세요. 아래수식을 보아 주시고 제가 이 수식을 오늘 당장 적용해야하므로 가능하시다면 정말 빠르게 답변을 부탁드립니다. //계좌객체 Account1 function Main_OnStart() { Main.SetTimer(1,2000);//5초 단위 체크 } function Main_OnTimer(nEventID) { if (nEventID == 1) { //총수익 누적할 변수 var sumPL = 0; var sells = 0; var buys = 0 ; var profits = 0 ; var hh =0 ; //계좌의 종목수 var num = Account1.GetTheNumberOfBalances(); //종목이 2개 이상일때만 if (num >= 1) { //잔고 종목 총손익 계산 for (i = 0; i < num;i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current)*Account1.Balance.count; sells=Account1.Balance.count; } if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { sumPL = sumPL + (Account1.Balance.current - Account1.Balance.avgUnitCost)*Account1.Balance.count; buys=Account1.Balance.count; } } profits= sumPL*100 - (sells + buys)*2*7.5 ; if ( profits >hh ) { hh = profits ; } Main.MessageLog(" profits"+ profits+"달러") ; Main.MessageLog(" hh" + hh+" ") ; Main.MessageLog(" buys"+ buys+"개") ; Main.MessageLog(" sells"+ sells+"개") ; //총손익이 특정값(0)보다 크면 전체 종목 청산 if ( hh > 20 && (profits < ( hh * 0.5 )) ) { hh = 0 ; for (i = 0; i < num;i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } //총손익이 순수익 트레일링 스탑으로 전체종목 청산 } } } 에서 profits는 비용까지 계산한 순수한 순수익입니다. profits가 20달러 이상 된 후에 트레일링 스탑을 profits의 최고가 (즉 hh)에서 50% 떨어지면 강제청산하려고 위에서 profits= sumPL*100 - (sells + buys)*2*7.5 ; if ( profits > hh ) { hh = profits ; } 처럼 구성했습니다. 종목이 2종목이상이므로 순수익으로만 트레일링 스탑을 구성하려고 했습니다. profits가 고가hh를 오버할 때만 새로운 고가hh가 되어야 하는데요. Main.MessageLog(" hh" + hh+" ") ; 으로 확인해보면 고가hh 값은 profits값하고 이상하게 항상 동일한 값으로 나옵니다. 수식을 목표한 트레일링스탑이 가능하도록 수정해 주시면 감사드리겠습니다.
프로필 이미지
종호
2018-08-30
2971
글번호 224580
답변완료

문의

미완성신호값이 제대로 않나오는 이유를 발혀주시면 감사합겠읍니다 아래에 스팟식 첨부했읍니다 ------------------------------------------------------------------------- var 완성15신호값, 완성2신호값, 완성120신호값, 미완성15신호값, 미완성2신호값, 미완성120신호값, 미완성15신호, 미완성2신호,미완성120신호, 완성15신호, 완성2신호, 완성120신호 ; var cc = order1.current ; function Main_OnStart() { Main.MessageLog("시작") ; a1.Refresh() ; 완성15신호 = exl3.GetData(1, "i27"); 완성2신호 = exl3.GetData(1, "k27"); 완성120신호 = exl3.GetData(1, "m27"); } // ------------------------------------------------------- function c3_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성120신호 = 11 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매수 : " +완성120신호); } if ( Signal.signalKind == 2 ) { 완성120신호 = 22 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매수청산 : " +완성120신호); } if ( Signal.signalKind == 3 ) { 완성120신호 = 33 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매도 : " +완성120신호); } if ( Signal.signalKind == 4 ) { 완성120신호 = 44 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매도청산 : " +완성120신호); } } function c2_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성2신호 = 11 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매수 : " +완성2신호); } if ( Signal.signalKind == 2 ) { 완성2신호 = 22 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매수청산 : " +완성2신호); } if ( Signal.signalKind == 3 ) { 완성2신호 = 33 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매도 : " +완성2신호); } if ( Signal.signalKind == 4 ) { 완성2신호 = 44 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매도청산 : " +완성2신호); } } function c1_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성15신호 = 11 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27", 완성15신호 ); Main.MessageLog("완성15신호 매수 : " +완성15신호); } if ( Signal.signalKind == 2 ) { 완성15신호 = 22 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매수청산 : " +완성15신호); } if ( Signal.signalKind == 3 ) { 완성15신호 = 33 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매도 : " +완성15신호); } if ( Signal.signalKind == 4 ) { 완성15신호 = 44 ; 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매도청산 : " +완성15신호); } } //미완성 120 ------------------------------------------------------------ function c3_OnRiseIncompleteSignal(IncompleteSignal) { 미완성120신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성120신호 = 1 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 2 ) { 미완성120신호 = 2 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매수청산 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성120신호 = 3 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 4 ) { 미완성120신호 = 4 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매도청산 : " +IncompleteSignal.signalKind); } } // 미완성 2----------------------------------------------------- function c2_OnRiseIncompleteSignal(IncompleteSignal) { 미완성2신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성2신호 = 1 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 2 ) { 미완성2신호 = 2 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매수청산 : " + IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성2신호 = 3 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==4 ) { 미완성2신호 = 4 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매도청산 : " +IncompleteSignal.signalKind); } } // 미완성 15-------------------------------------------------------- function c1_OnRiseIncompleteSignal(IncompleteSignal) { 미완성15신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성15신호 = 1 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==2 ) { 미완성15신호 =2 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매수청산 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성15신호 = 3 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==4 ) { 미완성15신호 = 4 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매도청산 : " +IncompleteSignal.signalKind); } }
프로필 이미지
파일럿
2018-09-06
2866
글번호 224577

2ndbus 님에 의해서 삭제되었습니다.

프로필 이미지
2ndbus
2018-08-24
10
글번호 224574
답변완료

한국투자증권 스팟 작동 먹통

잘되던 수식이 언제부턴가 먹통입니다. 주석을 넣어 가면서 확인해본결과 아래 부분이 작동을 안하는것같습니다. 저번에도 한국투자증권에서 뭘 막아놔서 안되던 부분이 있었는데 비슷한 상황 같습니다. 확인 부탁드립니다. function Main_On**dateAccount(sAccntNum, sItemCode, l**dateID) { if (l**dateID == 30000) { Main.KillTimer(1); Main.SetTimer(2, 1000); Main.MessageList("타이머2셋팅"); } }
프로필 이미지
수다리
2018-08-23
2782
글번호 224573

수다리 님에 의해서 삭제되었습니다.

프로필 이미지
수다리
2018-08-23
0
글번호 224572
답변완료

예스스팟 예제를 어디서 볼수 있을까요

예스스팟 예제를 통해서 활용법을 익히고 싶은데요 예스스팟메뉴얼의 11개 예제는 부족한것 같아서 어디에서 예제 자료를 구할수 있는지 부탁드립니다. 감사합니다
프로필 이미지
마음이다
2018-08-21
2813
글번호 224570

2ndbus 님에 의해서 삭제되었습니다.

프로필 이미지
2ndbus
2018-08-21
0
글번호 224569
답변완료

관심그룹 대상 매매 코드 부탁드립니다.

안녕하세요. 특정 종목들을(수십개) 장전에 입력하여 관심그룹에 등록한 후(관심종목 등록이 필요없다면 안해도 됩니다), 관심그룹에 등록된 종목을 대상으로 시초가 대비 -2% 하락하면 매수하는 코드를 짜고 싶습니다. 1. 예스스팟 전략파일에서 관련 코드를 짤수 있을까요? 가능하다면 관련해서 예시 코드를 보고싶습니다. 감사합니다!
프로필 이미지
lean16
2018-08-28
2994
글번호 224568
답변완료

수익 또는 포지션 확인

안녕하십니까. 스팟에서 다음 두가지를 구하는 수식에 대하여 설명 부탁 드립니다. 1. 차트에 적용된 시스템의 현재 수익 2. 차트에 적용된 시스템의 현재 포지션 및 진입 날짜/시간 실행중에는 OnRiseSignal로 받아 변수로 저장해 놓으면 알 수 있으나 스팟이 바로 시작 되었을 경우의 현재 포지션 및 진입 날짜/시간을 알고 싶어 문의 드립니다. 감사합니다.
프로필 이미지
올데이
2018-08-20
2921
글번호 224567
답변완료

array 변수의 특정값을 삭제하고자 합니다. 어떻게 해야 할까요?

list.array(데이터); 이렇게 하면 array변수에 데이터 추가하는것은 알겠습니다. 반대로 list.???(데이터) 형태로 특정 값(코드)를 삭제하고 싶습니다. 어떻게 하면 될까요?
프로필 이미지
2ndbus
2018-08-17
2954
글번호 224566