답변완료
다중접속 및 다중 전략차트 실행 관련 질의
A-PC, B-PC 로 두개로 접속을 해봤는데,
다중 접속하면, 주문이 각각 따로 나가더군요. ^^ 여기서 질문이 있습니다.
1. 다중접속할때, PC A,B 에서, 각각 다른 전략실행차트를 사용,
예시)
A-PC: 삼성전자 이평선 골든크로스 3주 매수 , 데드크로스 3주청산
B-PC: 삼성전자 CCI 과매도시 15 주 매수, CCI 과매수시 5주씩 X3회 분할청산
그럼 아래 A,B PC 에서 모두 매수되어 18주(3주+15주) 상태에서
아래와같이 수식적용할경우 maxContract는 18주로 인식하여, B-PC 에서 청산 주문발생하면
18주의 1/3씩 6주,6주,6주로 분할주문나가는건가요?
아니면, 15주의 (B-PC의) 1/3씩 5주,5주,5주씩 분할주문이 나가나요?
-----인용
{ BXcond = true;
ii = 0;
Bxcnt = 0; }
if BXcond == true then {
if ii%n == 0 then { Bxcnt = Bxcnt+1;
if Bxcnt == 1 Then // 1봉째 분할매도
ExitLong("매도1",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 2 Then // 조건만족 2봉째 분할매도
ExitLong("매도2",OnClose,def,"",Floor(MaxContracts/3),1);
if Bxcnt == 3 Then // 조건만족 3봉째 분할매도
ExitLong("매도3");
} ii = ii+1;}
----------인용끝
2. 1번케이스를 한개 PC에서 다른 전략을 동일한 주식종목에 적용시에는 어떻게 되나요?
완전 별개로 작동하나요?, 아니면 종목이 겹치므로 혼선의 가능성이 있나요?
3. 1번의 케이스를
GetPositionAveragePrice(종목코드,계좌번호,매수/매도구분)함수로 종목의 평단가를
전략을 작성했다면, 주문시 서로 다른 PC, 다른 전랴으로 주문을 하더라도,
주문당시의 평단가는 A-PC,B-PC의 전략실행에 서로 주문에 영향을 주겠죠?
4. 예스랭귀지로 해외주식(미국)을 하려고 하는데,
예스스탁에서 서비스와 연계된 브로커(증권회사)중에 어떤회사가 미국주식으로
시스템트레이딩이 가능한가요?,
현재 NH증권과 하이투자를 사용중인데, 둘다 미국주식은 예스랭귀지 시스템 트레이딩은
안되는 것 같네요.
2020-05-21
835
글번호 139053
시스템
답변완료
67529번 재문의
항상 도움주셔서 감사 드립니다.
예비신호인 진입신호는 당해봉이 아닌 확정봉에 발생한다는 내용은 이해를 했습니다.
도움주신 함수를 적용해 보았더니,
위 그림처럼 매도는 적용이 되는데. 매수는 적용이 되지를 않고 있습니다.
- 매도진입은 제가 이해한 대로 차트상에 진입 청산 알람과 신호가 정상적으로 발생함
- 매수진입은 매도진입처럼 진입신호와 청산신호가 발생하지 않고,
조건에 맞는 매수구간의 모든 봉에서 매수신호 알람이 울리고, 청산자리에서
청산 알람은 울리지만, 신호가 발생되지 않습니다.
수정을 부탁 드립니다.
input : sto1(12),sto2(6),sto3(6),P1(3),P2(5);
var : stok(0),stod(0),mav1(0),mav2(0);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
if MarketPosition >= 0 and stok < stod and mav1 < mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매도신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 > mav2 Then
sell("s",AtMarket);
}
if MarketPosition == -1 and (stok > stod or (mav1 >= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매수주문전송문장.wav");
ExitShort("sx");
}
if MarketPosition <= 0 and stok > stod and mav1 > mav2 then
{
PlaySound("D:₩해외선물₩사운드₩매수신호발생1.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 < mav2 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and (stok < stod or (mav1 <= mav2)) Then
{
PlaySound("D:₩해외선물₩사운드₩trailingstop매도주문전송문장.wav");
ExitLong("bx");
}
> 예스스탁 님이 쓴 글입니다.
안녕하세요
예스스탁입니다.
1
예비신호는 신호가 onclose타입일경우에만 발생합니다.
진입이 atmarket으로 구현해야 하는 부분이라 진입은 예비신호 보실수 없습니다.
2
소리출력함수(playsound)는 함수내에 지정한 경로의 wav파일이 구동됩니다.
아래는 예스트레이더에 기본으로 제공되는 wav파일을 지정했습니다.
원하시는 wav파일의 경로와 이름으로 수정하시기 바랍니다.
게시판에서 식을 복사할 경우 경로명 중 ₩의 폰트가 깨질수 있으므로
₩는 다시 타이핑하시기 바랍니다.
3
input : sto1(12),sto2(6),sto3(6),P1(3),P2(5);
var : stok(0),stod(0),mav1(0),mav2(0);
stok = StochasticsK(sto1,sto2);
stod = StochasticsD(sto1,sto2,sto3);
mav1 = ma(C,P1);
mav2 = ma(C,P2);
if MarketPosition >= 0 and stok < stod and mav1 < mav2 then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 > mav2 Then
sell("s",AtMarket);
}
if MarketPosition == -1 and (stok > stod or (mav1 >= mav2)) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
ExitShort("sx");
}
if MarketPosition <= 0 and stok > stod and mav1 > mav2 then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
if (NextBarOpen+AccumN(c,P2-1))/4 < mav2 Then
Buy("b",AtMarket);
}
if MarketPosition == 1 and (stok < stod or (mav1 <= mav2)) Then
{
PlaySound("C:₩예스트레이더₩data₩Sound₩alert.wav");
ExitLong("bx");
}
2020-05-21
969
글번호 139052
시스템
답변완료
문의드립니다.
Length = input(10)
Smoothing = input(5)
SingleColor = input(false, title="Single Color?")
bgcol = input(true, title="Color Background?")
// Calcs
ln = Length - 1
diff = close - close[ln]
pfetmp = 100 * sqrt(pow(diff,2) + pow(Length,2)) / sum(sqrt(1 + pow(close - close[1],2)), Length - 1)
pfe = ema( diff > 0 ? pfetmp : -pfetmp, Smoothing)
// Plots
col = pfe > 50 or pfe < -50 ? #FF8D6F : #FFD9CF
plot(pfe, color=SingleColor ? #FFD9CF : col,linewidth=1)
hline(50, color=#FFD105, linestyle=dotted)
hline(-50, color=#FFD105, linestyle=dotted)
hline(0, color=#FFD105, linestyle=dotted)
도움주셔서 감사드립니다.
2020-05-21
1085
글번호 139046
지표
답변완료
지표 시그널 재진입 제한
안녕하세요.
항상 도와주셔서 감사드립니다.
지표가 특정기준 이하일 경우 매수하는 로직을 사용할 경우 지표가 계속해서 횡보할 경우 매수매도를 반복하는 것을 제한하기 위해,
지표가 이전에 시그널이 나온 값보다 더 작을 경우에만 추가 매수를 하는 로직을 짜고싶습니다.
[예: 이격도가 95이하일 때 매수하는 조건일 경우 아래와 같이 매수합니다]
93(1차매수), 95, 94, 93, 92(2차매수;93보다 작으므로)
이격도 95 이하일때는 value1에 값을 저장한 후 value1과 최근 이격도값을 비교하여 작은경우에만 value1을 저장하였으나 매매가 작동하지 않습니다.
아래 최대한 고민해봤는데 도와주시면 감사하겠습니다.
만약 컨셉이 잘못됬다면 새로 작성해주셔도 감사하겠습니다.
#1분봉에서 사용하였습니다.
DParity = Disparity(Period); //이격도
if Dparity <= 95
and Dparity < value1 Then
{
#해당봉의 이격도 값 저장
value1 = Dparity;
}
else
{
#하락이 끝나면 Value1 초기화
if Dparity > 95 Then
Value1 = Dparity;
}
# 이격도가 95이하이면서 이전 이격도 값보다 작은 후 상승 전환하는 경우만 매수
If accumN(iff(Dparity<= 95,1,0),2)>=1 //95를 잠깐 들어갔다 crossup하는경우도 매수하기위해
and accumN(iff(Dparity<value1,1,0),2)>=1 //위와 마찬가지 사유로 accumN사용
and Dparity[1]<Dparity[0] //위조건이 있은 후 이격도가 상승전환 한 경우만 매수
Buy("상한매수",Atmarket,DEF,floor(Deposit/C));
if marketposition==1
and Dparity[1]>Dparity[0] then //이격도가 하락전환하면 바로 매도
exitlong("매도",AtMarket,DEF,"",currentcontracts/2);
감사합니다.
2020-05-21
1335
글번호 139041
시스템