답변완료
지표값이 엉뚱하게 나옵니다.
if (nEventID == 2 && BUYCON == 1 && SELLCON == 0)
{
BUYIK = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Account1.Balance.avgUnitCost)*1;
BUYIK2 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Account1.Balance.avgUnitCost)*2;
BUYIK3 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Account1.Balance.avgUnitCost)*3;
BUYIK4 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Account1.Balance.avgUnitCost)*4;
BUYIK5 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Account1.Balance.avgUnitCost)*5;
BUYSON = Chart1.GetIndicatorData("#11.DJ밴드_색상변화_중심_2배",2,0) - SCALE*8;
Main.MessageList("매수익절",BUYIK,"매수손절",BUYSON,"매도익절",SELLIK,"매도손절",SELLSON);
Main.MessageList("매수익절",BUYIK,"매수익절2",BUYIK2,"매수익절3",BUYIK3,"매수익절4",BUYIK4,"매수익절5",BUYIK5);
Main.KillTimer(2); //타이머 종료
}
위에 식을 이벤트가 발생했을때 지표값을 가져오게 작성했는데
제대로 나올때도 있는데 수시로 엉뚱한 값을 가져옵니다.
스팟시작시 제대로 읽어오는지 보려고 아래식으로 테스트해보았을땐 정상값을 읽어옵니다.
근데 포지션 진입후 1분뒤에 타이머 발동후 값을 가져올때는 엉뚱한 값이 나오는데
뭐가 잘못된건지 알고 싶습니다.
function Main_OnStart()
{
BUYIK = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Chart1.GetIndicatorData("#2.매수선키움(최종)",1,2));
BUYIK2 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Chart1.GetIndicatorData("#2.매수선키움(최종)",1,2))*2;
BUYIK3 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Chart1.GetIndicatorData("#2.매수선키움(최종)",1,2))*3;
BUYIK4 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Chart1.GetIndicatorData("#2.매수선키움(최종)",1,2))*4;
BUYIK5 = Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)+(Chart1.GetIndicatorData("#1.매도선키움(최종)",1,2)-Chart1.GetIndicatorData("#2.매수선키움(최종)",1,2))*5;
Main.MessageList("매수익절",BUYIK,"매수익절2",BUYIK2,"매수익절3",BUYIK3,"매수익절4",BUYIK4,"매수익절5",BUYIK5);
}
2020-04-20
3379
글번호 225201
답변완료
수식 오류 확인 부탁드립니다.
다음 수식으로 차트와 연결하여 사용하려고 하는데 주문이 나갈때도 있고
안나갈때도 있습니다.
무엇이 잘 못되었는지 검증 부탁드립니다.
var T,YYYYMMDD,daycount;
var d = new Date();
var T1 = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
function Main_OnStart()
{
Main.MessageList("Start");
T = 0;
var d = new Date();
YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
Main.SetTimer(1, 5000);
if (Main.GetUserValue(YYYYMMDD) == "20200611")
{
daycount = true;
}
else
{
daycount = false;
}
}
function Chart1_OnRiseSignal(Signal)
{
if (T1>=90400 && Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count, MarketData1.Ask(5), 0);
}
if (T1>=90400 && Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count, 0, 1);
}
if (T1>=90400 && Signal.signalKind == 3)
{
Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count, MarketData1.Bid(5), 0);
}
if (T1>=90400 && Signal.signalKind == 4)
{
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count, 0, 1);
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var T1 = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && daycount == true && T1>=152100)
{
Main.KillTimer(1);
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
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);
}
}
if (nEventID == 1 && daycount == false && T1>=153600)
{
Main.KillTimer(1);
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
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);
}
}
}
2020-04-17
3558
글번호 225198
답변완료
스팟 스크립트에서 5분봉, 10분봉, 15분봉별로 매매하고자 경우, 선별은?
안녕하세요.
제가 단일 스팟 스크립트에서 같은 전략으로 분봉만 다르게 하여 5분봉, 10분봉, 15분동 3개 돌리고자 합니다.
아래는 제가 실제 구성해서 사용하고 있는 것으로 현재는 5분봉에 대해서만 사용합니다.
스크립트 객체는
1. Main
2. Account1
3. ChartEx1
YS 코드
function Main_OnRiseSignal(ChartEx, Signal)
{
if(Signal.signalKind == 1)
{
}
}
제가 생각하는 방법으로는 ..
위 코드에 3개 분봉 CharEx을 만들어서 하면 될것 같습니다.
3. ChartEx1 <-- 5분봉
4. ChartEx2 <-- 10분봉
5. ChartEx3 <-- 15분봉
이렇게 하면 , OnRiseSignal 함수도
function Main_OnRiseSignal(ChartEx1, Signal)
{
}
function Main_OnRiseSignal(ChartEx2, Signal)
{
}
function Main_OnRiseSignal(ChartEx3, Signal)
{
}
A. 이렇게 만들면 되는지요?
B. 매매수량은 각 차트의 signal.count 로 사용해도 구분되는지요?
2020-04-16
3574
글번호 225197