커뮤니티

부탁드립니다.

프로필 이미지
너무조아
2016-03-11 15:54:07
65
글번호 96166
답변완료
아래의 수식은 연결 된 차트의 신호 발생 시, 선 신호방향의 포지션에 진입하고 이후 타이머가 작동 되고 있습니다. 이를 아래와 같은 조건에 부합하는 수식으로 변경하여 주시면 대단히 감사하겠습니다. 연결 된 차트에서 신호 발생 시, 1.먼저 타이머가 작동하고 타이머 종료 시점에, 타이머 시작 시의 신호 방향과 같은 포지션에 진입 합니다. 2. 그러나 타이머의 작동 시간 내에 반대 방향의 신호가 발생 하면, 작동 중인 타이머는 정지 되고 먼저 발생 된 신호는 포지션 진입 없이 소멸합니다. 그리고 반대 방향의 신호가 발생한 시점부터 새로운 타이머가 작동 됩니다. var TimeCond,T; function Main_OnStart() { TimeCond = false; T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && TimeCond == false && Signal.signalKind == 1) { T = 1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderBuy(SP.code, 1, SP.Ask(5),2); Main.MessageLog("매수진입"); } if (T == 1 && TimeCond == false && Signal.signalKind == 2) { T = 0; A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매수청산실행"); } if (T >= 0 && TimeCond == false && Signal.signalKind == 3) { T = -1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매도진입"); } if (T == -1 && TimeCond == false && Signal.signalKind == 4) { T = 0; A1.OrderBuy(SP.code, 1,SP.Ask(5),2); Main.MessageLog("매도청산실행"); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { TimeCond = false; } }
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2016-03-14 10:59:26

안녕하세요 예스스탁입니다. var TimeCond,T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && Signal.signalKind == 1) { T = 1; Main.KillTimer(2); Main.SetTimer(1, 360000); Main.MessageLog("매수진입"); } if (T == 2 && Signal.signalKind == 2) { T = 0; A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매수청산실행"); } if (T >= 0 && Signal.signalKind == 3) { T = -1; TimeCond = true; Main.KillTimer(1); Main.SetTimer(2, 360000); Main.MessageLog("매도진입"); } if (T == -2 && Signal.signalKind == 4) { T = 0; A1.OrderBuy(SP.code, 1,SP.Ask(5),2); Main.MessageLog("매도청산실행"); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { T = 2; Main.KillTimer(1); A1.OrderBuy(SP.code, 1, SP.Ask(5),2); } if (nEventID == 2 && T == -1) { T = -2; Main.KillTimer(2); A1.OrderSell(SP.code, 1, SP.Bid(5),2); } } 즐거운 하루되세요 > 너무조아 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 아래의 수식은 연결 된 차트의 신호 발생 시, 선 신호방향의 포지션에 진입하고 이후 타이머가 작동 되고 있습니다. 이를 아래와 같은 조건에 부합하는 수식으로 변경하여 주시면 대단히 감사하겠습니다. 연결 된 차트에서 신호 발생 시, 1.먼저 타이머가 작동하고 타이머 종료 시점에, 타이머 시작 시의 신호 방향과 같은 포지션에 진입 합니다. 2. 그러나 타이머의 작동 시간 내에 반대 방향의 신호가 발생 하면, 작동 중인 타이머는 정지 되고 먼저 발생 된 신호는 포지션 진입 없이 소멸합니다. 그리고 반대 방향의 신호가 발생한 시점부터 새로운 타이머가 작동 됩니다. var TimeCond,T; function Main_OnStart() { TimeCond = false; T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && TimeCond == false && Signal.signalKind == 1) { T = 1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderBuy(SP.code, 1, SP.Ask(5),2); Main.MessageLog("매수진입"); } if (T == 1 && TimeCond == false && Signal.signalKind == 2) { T = 0; A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매수청산실행"); } if (T >= 0 && TimeCond == false && Signal.signalKind == 3) { T = -1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매도진입"); } if (T == -1 && TimeCond == false && Signal.signalKind == 4) { T = 0; A1.OrderBuy(SP.code, 1,SP.Ask(5),2); Main.MessageLog("매도청산실행"); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { TimeCond = false; } }
프로필 이미지

예스스탁 예스스탁 답변

2016-03-15 14:24:15

안녕하세요 예스스탁입니다. 시스템이 리버셜하는 내용뿐이므로 진입만 체크해서 수량 산정해 주문내시면 됩니다. 적용후 첫진입신호는 1계약, 두번째 부터는 2계약씩 주문내게 됩니다. var entry,T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); entry = 0; } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && Signal.signalKind == 1) { T = 1; entry = entry+1; Main.KillTimer(2); if (entry == 1) VV = 1; else VV = 2; Main.SetTimer(1, 360000); Main.MessageLog("매수진입"); } if (T >= 0 && Signal.signalKind == 3) { T = -1; entry = entry+1; if (entry == 1) VV = 1; else VV = 2; Main.KillTimer(1); Main.SetTimer(2, 360000); Main.MessageLog("매도진입"); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { Main.KillTimer(1); A1.OrderBuy(SP.code, VV, SP.Ask(5),2); } if (nEventID == 2 && T == -1) { Main.KillTimer(2); A1.OrderSell(SP.code, VV, SP.Bid(5),2); } } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 부탁드립니다. > 안녕하세요 예스스탁입니다. var TimeCond,T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && Signal.signalKind == 1) { T = 1; Main.KillTimer(2); Main.SetTimer(1, 360000); Main.MessageLog("매수진입"); } if (T == 2 && Signal.signalKind == 2) { T = 0; A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매수청산실행"); } if (T >= 0 && Signal.signalKind == 3) { T = -1; TimeCond = true; Main.KillTimer(1); Main.SetTimer(2, 360000); Main.MessageLog("매도진입"); } if (T == -2 && Signal.signalKind == 4) { T = 0; A1.OrderBuy(SP.code, 1,SP.Ask(5),2); Main.MessageLog("매도청산실행"); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && T == 1) { T = 2; Main.KillTimer(1); A1.OrderBuy(SP.code, 1, SP.Ask(5),2); } if (nEventID == 2 && T == -1) { T = -2; Main.KillTimer(2); A1.OrderSell(SP.code, 1, SP.Bid(5),2); } } 즐거운 하루되세요 > 너무조아 님이 쓴 글입니다. > 제목 : 부탁드립니다. > 아래의 수식은 연결 된 차트의 신호 발생 시, 선 신호방향의 포지션에 진입하고 이후 타이머가 작동 되고 있습니다. 이를 아래와 같은 조건에 부합하는 수식으로 변경하여 주시면 대단히 감사하겠습니다. 연결 된 차트에서 신호 발생 시, 1.먼저 타이머가 작동하고 타이머 종료 시점에, 타이머 시작 시의 신호 방향과 같은 포지션에 진입 합니다. 2. 그러나 타이머의 작동 시간 내에 반대 방향의 신호가 발생 하면, 작동 중인 타이머는 정지 되고 먼저 발생 된 신호는 포지션 진입 없이 소멸합니다. 그리고 반대 방향의 신호가 발생한 시점부터 새로운 타이머가 작동 됩니다. var TimeCond,T; function Main_OnStart() { TimeCond = false; T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(SP.code); } function CT_OnRiseSignal(Signal) { Main.MessageLog("신호완성/"+Signal.signalKind); if (T <= 0 && TimeCond == false && Signal.signalKind == 1) { T = 1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderBuy(SP.code, 1, SP.Ask(5),2); Main.MessageLog("매수진입"); } if (T == 1 && TimeCond == false && Signal.signalKind == 2) { T = 0; A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매수청산실행"); } if (T >= 0 && TimeCond == false && Signal.signalKind == 3) { T = -1; TimeCond = true; Main.SetTimer(1, 360000); A1.OrderSell(SP.code, 1, SP.Bid(5),2); Main.MessageLog("매도진입"); } if (T == -1 && TimeCond == false && Signal.signalKind == 4) { T = 0; A1.OrderBuy(SP.code, 1,SP.Ask(5),2); Main.MessageLog("매도청산실행"); } } function Main_OnTimer(nEventID) { if (nEventID == 1) { TimeCond = false; } }