예스스탁
예스스탁 답변
2022-12-21 13:50:46
안녕하세요
예스스탁입니다.
1
올려주신 내용을 구현하시려면 강제청산함수는 사용할 수 없습니다.
일반청산함수를 이용해 각진입횟차별로 구분해서 값계산해서 내열해서 작성하셔야 합니다.
2
청산함수에 진입명을 지정해서 해당 진입명으로 진입한 수량만 청산하게 해야 하는데
지금과 같이 B2로 반복해서 들어가면 처리할 방법이 없고
아래식과 같이 횟차별로 이름을 모두 별도로 주어야 합니다
3
아래는 최대 4번 진입까지만 작성해 드립니다.
수식 내용을 숙지하셔서 피라미딩으로 진입할 수 있는 최대진입횟수를
감안해서 수식 추가해서 완성하셔야 합니다.
4
var : 손절(1.72),익절(2.42);
ntotal = n5+n5v+n6+n11+n11v+n10+n12;
var : firstJ(0);
if sDate != sDate[1] Then {firstJ=0;}
if firstJ==0 and ntotal!=0 Then
{
if ntotal>0 Then Buy("b1",OnClose,Def,abs(ntotal));
if ntotal<0 Then Sell("s1",OnClose,Def,abs(ntotal));
firstJ=1;
Var98=Time;
}
Var99=ntotal-ntotal[1];
if stime>var98 and sTime<151900 and firstJ==1 and Var99!=0 Then
{
if Var99>0 Then
{
if MaxEntries == 1 Then
Buy("b2",OnClose,Def,abs(Var99));
if MaxEntries == 2 Then
Buy("b3",OnClose,Def,abs(Var99));
if MaxEntries == 3 Then
Buy("b4",OnClose,Def,abs(Var99));
}
if Var99<0 Then
{
if MaxEntries == 1 Then
Sell("s2",OnClose,Def,abs(Var99));
if MaxEntries == 1 Then
Sell("s3",OnClose,Def,abs(Var99));
if MaxEntries == 1 Then
Sell("s4",OnClose,Def,abs(Var99));
}
}
SetStopEndofday(EndTime);
SetStoploss(손절,PointStop);
var : BE1(0),BL1(0),BE2(0),BL2(0),BE3(0),BL3(0),BE4(0),BL4(0);
var : SE1(0),SH1(0),SE2(0),SH2(0),SE3(0),SH3(0),SE4(0),SH4(0);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 1 Then
{
BE1 = LatestEntryPrice(0);
BL1 = L;
}
if MaxEntries == 1 Then
{
BE2 = LatestEntryPrice(0);
BL2 = L;
}
if MaxEntries == 1 Then
{
BE3 = LatestEntryPrice(0);
BL3 = L;
}
if MaxEntries == 1 Then
{
BE4 = LatestEntryPrice(0);
BL4 = L;
}
}
if BL1 > 0 Then
{
if L < BL1 Then
BL1 = L;
ExitLong("bx1",AtLimit,BE1+익절-abs(BE1-BL1)/2 ,"b1");
}
if BL2 > 0 Then
{
if L < BL2 Then
BL2 = L;
ExitLong("bx2",AtLimit,BE2+익절-abs(BE2-BL2)/2 ,"b2");
}
if BL3 > 0 Then
{
if L < BL3 Then
BL3 = L;
ExitLong("bx3",AtLimit,BE3+익절-abs(BE3-BL3)/2 ,"b3");
}
if BL4 > 0 Then
{
if L < BL4 Then
BL4 = L;
ExitLong("bx4",AtLimit,BE4+익절-abs(BE4-BL4)/2 ,"b4");
}
}
Else
{
BL1 = 0;
BL2 = 0;
BL3 = 0;
BL4 = 0;
}
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 1 Then
{
SE1 = LatestEntryPrice(0);
SH1 = H;
}
if MaxEntries == 1 Then
{
SE2 = LatestEntryPrice(0);
SH2 = H;
}
if MaxEntries == 1 Then
{
SE3 = LatestEntryPrice(0);
SH3 = H;
}
if MaxEntries == 1 Then
{
SE4 = LatestEntryPrice(0);
SH4 = H;
}
}
if SH1 > 0 Then
{
if H > SH1 Then
SH1 = H;
ExitShort("sx1",AtLimit,SE1-익절+abs(SE1-SH1)/2 ,"s1");
}
if SH2 > 0 Then
{
if H > SH2 Then
SH2 = H;
ExitShort("sx2",AtLimit,SE2-익절+abs(SE2-SH2)/2 ,"s2");
}
if SH3 > 0 Then
{
if H > SH3 Then
SH3 = H;
ExitShort("sx3",AtLimit,SE3-익절+abs(SE3-SH3)/2 ,"s3");
}
if SH4 > 0 Then
{
if H > SH4 Then
SH4 = H;
ExitShort("sx4",AtLimit,SE4-익절+abs(SE4-SH4)/2 ,"s4");
}
}
Else
{
SH1 = 0;
SH2 = 0;
SH3 = 0;
SH4 = 0;
}
즐거운 하루되세요
> 캣피쉬 님이 쓴 글입니다.
> 제목 : 수식 부탁드립니다.
> 사진으로 보면 네번의 진입중에 2번째만 익절이 되었는데,
진입이후 손실폭을 var: losingpt(0) 로해서
익절 = FP0 - losingpt/2;
탄력적으로 바꾸고자합니다.
첫번째 진입의 경우가 익절로 변경되는것이고 ,
(0.7pt까지 손실을 기록했었으니 , 익절 = 2.42-0.7/2 )
3번째 , 4번째는 손실이겠네요
문제가 losingpt가 진입마다 따로 관리가 되어야할듯한데,, 어렵네요
buy,sell 따로 이원화해서 전략관리중이니,
따로 각각 부탁드립니다. 감사합니다.
------------------------------------------
var : 손절(1.72),익절(2.42);
input : FL0(1.72),FP0(2.42);
#
#
#
#
#
ntotal = n5+n5v+n6+n11+n11v+n10+n12;
var : firstJ(0);if sDate != sDate[1] Then {firstJ=0;}
if firstJ==0 and ntotal!=0 Then {
if ntotal>0 Then Buy("b1",OnClose,Def,abs(ntotal));
#if ntotal<0 Then Sell("s1",OnClose,Def,abs(ntotal));
firstJ=1;
Var98=Time;}
Var99=ntotal-ntotal[1];
if stime>var98 and sTime<151900 and firstJ==1 and Var99!=0 Then {
if Var99>0 Then Buy("b2",OnClose,Def,abs(Var99));
#if Var99<0 Then Sell("s2",OnClose,Def,abs(Var99));}
SetStopEndofday(EndTime);
SetStopProfittarget(익절,PointStop);
SetStoploss(손절,PointStop);