커뮤니티
재문의드립니다.
2019-02-22 05:54:23
140
글번호 126438
답변으로 인하여 매수, 청산 파일에 적용하여 61419 문제가 어느정도 해결되었습니다. 그런데
매수, 청산 조건에서 start2의 수식이 적용되지 않는것 같습니다. start1은 적용이 되어 매매가 되는데 start2가 적용이 되지 않습니다.T.T
Input : 당일손실틱수(500);
input : start1(163000),end1(233000);
input : start2(000000),end2(050000);
Var : N1(0),dayPl(0),당일손실(0),Xcond(false);
var : Tcond(false);
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit[1];
}
if (sdate != sdate[1] and stime >= start1) or
(sdate == sdate[1] and stime >= start1 and stime[1] < start1) then
{
Tcond = true;
SetStopEndofday(end1);
}
if (sdate != sdate[1] and stime >= end1) or
(sdate == sdate[1] and stime >= end1 and stime[1] < end1) then
{
Tcond = false;
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= start2) or
(sdate == sdate[1] and stime >= start2 and stime[1] < start2) then
{
Tcond = true;
SetStopEndofday(end2);
}
if (sdate != sdate[1] and stime >= end2) or
(sdate == sdate[1] and stime >= end2 and stime[1] < end2) then
{
Tcond = false;
SetStopEndofday(0);
}
당일손실 = PriceScale*당일손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbl",1) == true or
IsExitName("dsl",1) == true or
daypl <= -당일손실) then
Xcond = true;
if MarketPosition == 1 then
{
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
If DayIndex == 0 Then
{
K_Value_Pos_Flag = 0;
매매조건_K_Flag = 0;
현재진입이후봉개수 = 0;
}
If Tcond == true and Xcond == false Then
{
//*******************************************************************************************************
//*******************************************************************************************************
If MarketPosition(0) == 1 Then
{
// 청산: LMS_ADX_STK_G If (LMSADXSTKPGP_Color == -1) || (ADX_2015_Flag == -1) Then
{
ExitLong("청산", OnClose, Close, DEF, 매수_수량, 1);
매매조건_K_Flag = 0;
}
// 호가청산
If 호가청산사용 == 1 Then
{
ExitLong(".청산", AtLimit, (EntryPrice + (호가Pt)), DEF, 매수_수량, 1);
호가청산_Flag = 1;
}
}
If (UPDOWN_Flag == 1) && (LMSADXSTKPGP_Flag == 1) Then
{
If (MarketPosition(0) == 0) Then
{
If (호가청산_Flag == 0) Then
{
Buy("매수", OnClose, DEF, 매수_수량);
매매조건_K_Flag = 1;
}
}
}
If (LMSADXSTKPGP_Color == -1) || (ADX_2015_Flag == -1) Then
{
호가청산_Flag = 0;
}
}
=======================================================================================
또 문의 드릴것은
매도, 청산 시스템에 동일하게 적용하였는데 호가pt를 지정하여 호가pt에 청산이 되지 않아 다시 문의를 드립니다.
매수,청산만 있는 수식과 매도,청산만 있는 수식에 차이가 있나요? 매수수식을 그대로 매도수식에 적용하니 호가pt가 적용되지 않고 좀 에러가 있는것 같습니다. 도와주십시오
매도, 청산 기준을 아래 시간대와 당일손실로 다시한번 더 부탁드리겠습니다.
호가PT를 지정하여 청산이 되지 않는 이유는 무엇인가요?
Input : 시작시간(000000), 종료시간(240000);
Var : K_Value_Pos_Flag(0);
Var : 매매조건_K_Flag(0);
Var : 현재진입이후봉개수(0);
If DayIndex == 0 Then
{
K_Value_Pos_Flag = 0;
매매조건_K_Flag = 0;
현재진입이후봉개수 = 0;
}
If (sTime >= 시작시간) And (sTime <= 종료시간) Then
{
If MarketPosition(0) == -1 Then
{
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
ExitShort("청산", OnClose, Close, DEF, 매도_수량, 1);
매매조건_K_Flag = 0;
}
If 호가청산사용 == 1 Then
{
ExitShort(".청산", AtLimit, (EntryPrice - (호가Pt)), DEF, 매도_수량, 1);
호가청산_Flag = 1;
}
}
If (UPDOWN_Flag == -1) && (LMSADXSTKPGP_Flag == -1) Then
{
If (MarketPosition(0) == 0) Then
{
If (호가청산_Flag == 0) Then
{
Sell("매도", OnClose, DEF, 매도_수량);
매매조건_K_Flag = 1;
}
}
}
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
호가청산_Flag = 0;
}
}
SetStopEndofday(StrToNum(LeftStr(NumToStr(종료시간, 0), 4)));
위와 같이 되어있는데 위 조건을 아래와 같이 시간을 나누려고 합니다.
Input : 시작시간1(103000), 종료시간1(133000);
Input : 시작시간2(000000), 종료시간2(020000);
Input : 시작시간3(050000), 종료시간2(060000);
수식부탁드립니다.
2번째 질문은 위 수식기준 당일순손실 50틱 이하면 거래중단 식을 부탁드립니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2019-02-22 14:01:46
안녕하세요
예스스탁입니다.
1
시간설정 정상적으로 작성되어 있습니다.
아래 간략한 식 적용해 보시기 바랍니다.
첨부된 그림과 같이 지정한 시간대만 신호가 표시됩니다.
특정시간대에 신호가 발생하지 않으면
당일 손실이 지정한 틱수를 넘었거나
기존의 진입청산 전략과 충돌되는 부분이 있는데
해당 부분은 올리신 내용이 불완전한 수식이라 저희가 잡아드릴수 없습니다.
해당 부분은 사용자분이 기준수식내용 답변받으신 수식의 내용과 구조를
이해하시고 결합해 보셔야 합니다.
Input : 당일손실틱수(500);
input : start1(163000),end1(233000);
input : start2(000000),end2(050000);
Var : N1(0),dayPl(0),당일손실(0),Xcond(false);
var : Tcond(false);
if (sdate != sdate[1] and stime >= start1) or
(sdate == sdate[1] and stime >= start1 and stime[1] < start1) then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= end1) or
(sdate == sdate[1] and stime >= end1 and stime[1] < end1) then
{
Tcond = false;
}
if (sdate != sdate[1] and stime >= start2) or
(sdate == sdate[1] and stime >= start2 and stime[1] < start2) then
{
Tcond = true;
}
if (sdate != sdate[1] and stime >= end2) or
(sdate == sdate[1] and stime >= end2 and stime[1] < end2) then
{
Tcond = false;
}
if Tcond == true then
{
if crossup(c,ma(c,20)) Then
buy();
if CrossDown(c,ma(C,20)) Then
sell();
}
2
Input : 당일손실틱수(50);
input : start1(103000),end1(133000);
input : start2(000000),end2(020000);
input : start3(050000),end3(060000);
Var : N1(0),dayPl(0),당일손실(0),Xcond(false);
var : Tcond(false);
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit[1];
}
if (sdate != sdate[1] and stime >= start1) or
(sdate == sdate[1] and stime >= start1 and stime[1] < start1) then
{
Tcond = true;
SetStopEndofday(end1);
}
if (sdate != sdate[1] and stime >= end1) or
(sdate == sdate[1] and stime >= end1 and stime[1] < end1) then
{
Tcond = false;
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= start2) or
(sdate == sdate[1] and stime >= start2 and stime[1] < start2) then
{
Tcond = true;
SetStopEndofday(end2);
}
if (sdate != sdate[1] and stime >= end2) or
(sdate == sdate[1] and stime >= end2 and stime[1] < end2) then
{
Tcond = false;
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= start3) or
(sdate == sdate[1] and stime >= start3 and stime[1] < start3) then
{
Tcond = true;
SetStopEndofday(end3);
}
if (sdate != sdate[1] and stime >= end3) or
(sdate == sdate[1] and stime >= end3 and stime[1] < end3) then
{
Tcond = false;
SetStopEndofday(0);
}
당일손실 = PriceScale*당일손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dsl",1) == true or
daypl <= -당일손실) then
Xcond = true;
if MarketPosition == -1 then
{
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
Var : K_Value_Pos_Flag(0);
Var : 매매조건_K_Flag(0);
Var : 현재진입이후봉개수(0);
If DayIndex == 0 Then
{
K_Value_Pos_Flag = 0;
매매조건_K_Flag = 0;
현재진입이후봉개수 = 0;
}
If Tcond == true and Xcond == false Then
{
If MarketPosition(0) == -1 Then
{
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
ExitShort("청산", OnClose, Close, DEF, 매도_수량, 1);
매매조건_K_Flag = 0;
}
If 호가청산사용 == 1 Then
{
ExitShort(".청산", AtLimit, (EntryPrice - (호가Pt)), DEF, 매도_수량, 1);
호가청산_Flag = 1;
}
}
If (UPDOWN_Flag == -1) && (LMSADXSTKPGP_Flag == -1) Then
{
If (MarketPosition(0) == 0) Then
{
If (호가청산_Flag == 0) Then
{
Sell("매도", OnClose, DEF, 매도_수량);
매매조건_K_Flag = 1;
}
}
}
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
호가청산_Flag = 0;
}
}
즐거운 하루되세요
> 에쓰엠씨 님이 쓴 글입니다.
> 제목 : 재문의드립니다.
> 답변으로 인하여 매수, 청산 파일에 적용하여 61419 문제가 어느정도 해결되었습니다. 그런데
매수, 청산 조건에서 start2의 수식이 적용되지 않는것 같습니다. start1은 적용이 되어 매매가 되는데 start2가 적용이 되지 않습니다.T.T
Input : 당일손실틱수(500);
input : start1(163000),end1(233000);
input : start2(000000),end2(050000);
Var : N1(0),dayPl(0),당일손실(0),Xcond(false);
var : Tcond(false);
if Bdate != Bdate[1] Then
{
Xcond = false;
N1 = NetProfit[1];
}
if (sdate != sdate[1] and stime >= start1) or
(sdate == sdate[1] and stime >= start1 and stime[1] < start1) then
{
Tcond = true;
SetStopEndofday(end1);
}
if (sdate != sdate[1] and stime >= end1) or
(sdate == sdate[1] and stime >= end1 and stime[1] < end1) then
{
Tcond = false;
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= start2) or
(sdate == sdate[1] and stime >= start2 and stime[1] < start2) then
{
Tcond = true;
SetStopEndofday(end2);
}
if (sdate != sdate[1] and stime >= end2) or
(sdate == sdate[1] and stime >= end2 and stime[1] < end2) then
{
Tcond = false;
SetStopEndofday(0);
}
당일손실 = PriceScale*당일손실틱수;
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] and
(IsExitName("dbl",1) == true or
IsExitName("dsl",1) == true or
daypl <= -당일손실) then
Xcond = true;
if MarketPosition == 1 then
{
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
If DayIndex == 0 Then
{
K_Value_Pos_Flag = 0;
매매조건_K_Flag = 0;
현재진입이후봉개수 = 0;
}
If Tcond == true and Xcond == false Then
{
//*******************************************************************************************************
//*******************************************************************************************************
If MarketPosition(0) == 1 Then
{
// 청산: LMS_ADX_STK_G If (LMSADXSTKPGP_Color == -1) || (ADX_2015_Flag == -1) Then
{
ExitLong("청산", OnClose, Close, DEF, 매수_수량, 1);
매매조건_K_Flag = 0;
}
// 호가청산
If 호가청산사용 == 1 Then
{
ExitLong(".청산", AtLimit, (EntryPrice + (호가Pt)), DEF, 매수_수량, 1);
호가청산_Flag = 1;
}
}
If (UPDOWN_Flag == 1) && (LMSADXSTKPGP_Flag == 1) Then
{
If (MarketPosition(0) == 0) Then
{
If (호가청산_Flag == 0) Then
{
Buy("매수", OnClose, DEF, 매수_수량);
매매조건_K_Flag = 1;
}
}
}
If (LMSADXSTKPGP_Color == -1) || (ADX_2015_Flag == -1) Then
{
호가청산_Flag = 0;
}
}
=======================================================================================
또 문의 드릴것은
매도, 청산 시스템에 동일하게 적용하였는데 호가pt를 지정하여 호가pt에 청산이 되지 않아 다시 문의를 드립니다.
매수,청산만 있는 수식과 매도,청산만 있는 수식에 차이가 있나요? 매수수식을 그대로 매도수식에 적용하니 호가pt가 적용되지 않고 좀 에러가 있는것 같습니다. 도와주십시오
매도, 청산 기준을 아래 시간대와 당일손실로 다시한번 더 부탁드리겠습니다.
호가PT를 지정하여 청산이 되지 않는 이유는 무엇인가요?
Input : 시작시간(000000), 종료시간(240000);
Var : K_Value_Pos_Flag(0);
Var : 매매조건_K_Flag(0);
Var : 현재진입이후봉개수(0);
If DayIndex == 0 Then
{
K_Value_Pos_Flag = 0;
매매조건_K_Flag = 0;
현재진입이후봉개수 = 0;
}
If (sTime >= 시작시간) And (sTime <= 종료시간) Then
{
If MarketPosition(0) == -1 Then
{
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
ExitShort("청산", OnClose, Close, DEF, 매도_수량, 1);
매매조건_K_Flag = 0;
}
If 호가청산사용 == 1 Then
{
ExitShort(".청산", AtLimit, (EntryPrice - (호가Pt)), DEF, 매도_수량, 1);
호가청산_Flag = 1;
}
}
If (UPDOWN_Flag == -1) && (LMSADXSTKPGP_Flag == -1) Then
{
If (MarketPosition(0) == 0) Then
{
If (호가청산_Flag == 0) Then
{
Sell("매도", OnClose, DEF, 매도_수량);
매매조건_K_Flag = 1;
}
}
}
If (LMSADXSTKPGP_Color == 1) || (ADX_2015_Flag == 1) Then
{
호가청산_Flag = 0;
}
}
SetStopEndofday(StrToNum(LeftStr(NumToStr(종료시간, 0), 4)));
위와 같이 되어있는데 위 조건을 아래와 같이 시간을 나누려고 합니다.
Input : 시작시간1(103000), 종료시간1(133000);
Input : 시작시간2(000000), 종료시간2(020000);
Input : 시작시간3(050000), 종료시간2(060000);
수식부탁드립니다.
2번째 질문은 위 수식기준 당일순손실 50틱 이하면 거래중단 식을 부탁드립니다.
감사합니다.