예스스탁
예스스탁 답변
2021-07-22 17:16:20
안녕하세요
예스스탁입니다.
기존 답변식은 최초 매수후에 1540개봉 경과하면 청산입니다.
각 진입별로 체크하시면 아래와 같이 작성하시면 됩니다.
var : A1Price(0),A1high(0);
var : A2Price(0),A2high(0);
var : bidx1(0),Bidx2(0);
if MarketPosition == 1 Then
{
#A1진입 발생
#보유수량이 증가하고 최근 발생한 진입명이 A1이면
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A1" Then
{
#진입가 저장
A1Price = LatestEntryPrice(0);
#진입이후 최고가의 초기값으로 현재봉 고가저장
A1high = H;
}
#새로운 고가가 발생하면 변수의 값을 새로운 고가를 변경
if A1high > 0 and H > A1high Then
A1high = H;
#45% 수익이면 청산
ExitLong("C1",AtLimit,A1Price*1.45,"A1");
#35% 이상 수익이후에 10% 하락하면 청산
if A1high >= A1Price*1.35 Then
ExitLong("C2",AtStop,A1high*0.90,"A1");
#6% 손실시 청산
ExitLong("C3",AtStop,A1Price*0.94,"A1");
#A2진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A2" Then
{
A2Price = LatestEntryPrice(0);
A2high = H;
}
if A2high > 0 and H > A2high Then
A2high = H;
ExitLong("D1",AtLimit,A2Price*1.45,"A2");
if A2high >= A2Price*1.35 Then
ExitLong("D2",AtStop,A2high*0.90,"A2");
ExitLong("D3",AtStop,A2Price*0.94,"A2");
if A1Price > 0 Then
{
Bidx1 = Bidx1+1;
if Bidx1 == 1540 Then
ExitLong("bx1",OnClose,DEf,"A1");
}
if A2Price > 0 Then
{
Bidx2 = Bidx2+1;
if Bidx2 == 1540 Then
ExitLong("bx2",OnClose,DEf,"A2");
}
}
Else
{
A1Price = 0;
A1high = 0;
A2Price = 0;
A2high = 0;
bidx1 = 0;
Bidx2 = 0;
}
즐거운 하루되세요
> 말라 님이 쓴 글입니다.
> 제목 : 안녕하세요 질문드립니다.
> 1. 45프로 이득후 청산 또는
2. 35상승후 10프로 하락시 청산 또는
3. 6프로 하락시 청산 또는
4. 1540봉 경과시 청산
이었습니다.
해서 이걸 써본다면
A1, A2 라는 진입이 2개가 있을경우를 여쭈어 봤는데요
답변이 이렇게 왔습니다.
(질문은 맨 아래 있어요)
------------------------
var : A1Price(0),A1high(0);
var : A2Price(0),A2high(0);
var : bidx(0);
if MarketPosition == 1 Then
{
#A1진입 발생
#보유수량이 증가하고 최근 발생한 진입명이 A1이면
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A1" Then
{
#진입가 저장
A1Price = LatestEntryPrice(0);
#진입이후 최고가의 초기값으로 현재봉 고가저장
A1high = H;
}
#새로운 고가가 발생하면 변수의 값을 새로운 고가를 변경
if A1high > 0 and H > A1high Then
A1high = H;
#45% 수익이면 청산
ExitLong("C1",AtLimit,A1Price*1.45,"A1");
#35% 이상 수익이후에 10% 하락하면 청산
if A1high >= A1Price*1.35 Then
ExitLong("C2",AtStop,A1high*0.90,"A1");
#6% 손실시 청산
ExitLong("C3",AtStop,A1Price*0.94,"A1");
#A2진입
if CurrentContracts > CurrentContracts[1] and LatestEntryName(0) == "A2" Then
{
A2Price = LatestEntryPrice(0);
A2high = H;
}
if A2high > 0 and H > A2high Then
A2high = H;
ExitLong("D1",AtLimit,A2Price*1.45,"A2");
if A2high >= A2Price*1.35 Then
ExitLong("D2",AtStop,A2high*0.90,"A2");
ExitLong("D3",AtStop,A2Price*0.94,"A2");
if Bidx == 1540 Then
ExitLong("bx");
}
Else
{
A1Price = 0;
A1high = 0;
A2Price = 0;
A2high = 0;
bidx = 0;
}
------------------------------------
질문입니다.
1진입과 2진입 모두 똑같은 청산조건인데
왜 1진입청산에는 2진입청산에 있는
if Bidx == 1540 Then
ExitLong("bx");
이부분이 없는건가요?
왠지누락된거 같은데...의문점이 들어 질문드립니다.
진입식을 안적어놔서 그렇지
진입시기가 각 진입식마다 다를텐데
없어도 되는건지 누락된건지
알려주시면 너무너무 감사하겠습니다.
왜냐면 진입을 A1,A2 이렇게 예를 들어 2개만 적어논건데
실질적으로는 100개정도라서요
좋은하루되세요