답변완료
전략식 변환 부탁드립니다.
안녕하세요. 하기전략을 예스랭귀지로 전환부탁드립니다.
수고하세요.
param : SSTIME(070001), EETIME(182000);
Vars : TCOND(False);
If SSTIME < EETIME Then
Begin
If SSTIME <= TIME And TIME <= EETIME Then TCOND = True
Else TCOND = False;
End
Else
Begin
If SSTIME <= TIME Or TIME <= EETIME Then TCOND = True
Else TCOND = False;
End;
If TCOND Then
Begin
// 분봉 기준의 40 이평 및 120 이평
Vars : Period1(14), Period2(179);
Vars : ST_Ma1(0), ST_Ma2(0);
ST_Ma1 = AvgFast((O+H+L+C)/4, Period1);
ST_Ma2 = AvgFast((O+H+L+C)/4, Period2);
// 일봉 기준 파란색
Vars : vShortP7(14), vLongP7(173), vSigP7(1);
Vars : vMACD7(0), vSignal7(0);
vMACD7 = MACD(C, vShortP7, vLongP7);
vSignal7 = XAverage(vMACD7, vSigP7);
/////////////////////////////////////////////////////////
param : BuyA_ShortLeng(7) // 단기 이동평균 기간
, BuyA_LongLeng(40) // 장기 이동평균 기간
;
var : BuyA_V1(0), BuyA_V2(0), BuyA_Result(FALSE);
BuyA_V1 = SMA(Volume, BuyA_ShortLeng);
BuyA_V2 = SMA(Volume, BuyA_LongLeng);
BuyA_Result = FALSE;
IF BuyA_V1 >= BuyA_V2 Then
BuyA_Result = TRUE;
Vars : vDn (102), vUp (1000);
If BuyA_V1 > vDN And BuyA_V1 < vUp And vMACD7 < 0 And CrossDown(ST_Ma1, ST_Ma2) Then Sell("V매도");
If BuyA_V1 > vDN And BuyA_V1 < vUp And vMACD7 > 0 And CrossUp(ST_Ma1, ST_Ma2) Then Buy("V매수");
// 익절 및 손절
Vars : Exit_P(0), Exit_L(0);
Vars : SP(0), TickSize(0);
SP = SignalPosition;
TickSize = OneTick * PriceScale;
SetStopLoss(Exit_L * TickSize * CurrentContracts);
SetProfitTarget(Exit_P * TickSize * CurrentContracts);
End;
///////////////////////////////////////////////////////////////////////////////////////////////
Params : SSTIME1(183500), EETIME1(192600);
Vars : TCOND1(False);
If SSTIME1 < EETIME1 Then
Begin
If SSTIME1 <= TIME And TIME <= EETIME1 Then TCOND1 = True
Else TCOND1 = False;
End
Else
Begin
If SSTIME1 <= TIME Or TIME <= EETIME1 Then TCOND1 = True
Else TCOND1 = False;
End;
If TCOND1 Then
Begin
Vars : SP12(0), TickSize12(0);
SP12 = SignalPosition;
TickSize12 = OneTick * PriceScale;
Params : Period(10);
V0 = Lowest(L, Period)[1]; // Price Ch Lower
V1 = Highest(H, Period)[1]; // Price Ch Upper
Params : vP1(5), vP2(21);
Vars : vM1(0), vM2(0);
vM1 = AvgFast(C, vP1);
vM2 = AvgFast(C, vP2);
If SP12 = 0 Then
Begin
If vM1 > vM2 And C < v0 Then Buy("B", Atlimit, v0);
If vM1 < vM2 And C > v1 Then Sell("S", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P12(121), Exit_L12(50);
SP12 = SignalPosition;
TickSize12 = OneTick * PriceScale;
SetStopLoss(Exit_L12 * TickSize12 * CurrentContracts);
SetProfitTarget(Exit_P12 * TickSize12 * CurrentContracts);
Params : exitP(65), trailA(1);
SetStopTrailing(trailA * TIckSize12 * CurrentContracts, exitP * TIckSIze12 * CurrentContracts);
End;
////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// ///////////////////////////////////////
param : SSTIME3(193200), EETIME3(211200);
Vars : TCOND3(False);
If SSTIME1 < EETIME1 Then
Begin
If SSTIME3 <= TIME And TIME <= EETIME3 Then TCOND3 = True
Else TCOND3 = False;
End
Else
Begin
If SSTIME3 <= TIME Or TIME <= EETIME3 Then TCOND = True
Else TCOND3 = False;
End;
If TCOND3 Then
Begin
Vars : SP1(0), TickSize1(0);
SP1 = SignalPosition;
TickSize1 = OneTick * PriceScale;
Params : Period13(4);
V0 = Lowest(L, Period13)[1]; // Price Ch Lower
V1 = Highest(H, Period13)[1]; // Price Ch Upper
Params : vP11(19), vP22(42);
Vars : vM11(0), vM22(0);
vM11 = AvgFast(C, vP11);
vM22 = AvgFast(C, vP22);
If SP1 = 0 Then
Begin
If vM11 > vM22 And C < v0 Then Buy("Bb", Atlimit, v0);
If vM11 < vM22 And C > v1 Then Sell("Ss", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P1(148), Exit_L1(46);
Vars : SP111(0), TickSize111(0);
SP111 = SignalPosition;
TickSize111 = OneTick * PriceScale;
SetStopLoss(Exit_L1 * TickSize111 * CurrentContracts);
SetProfitTarget(Exit_P1 * TickSize111 * CurrentContracts);
Params : exitP1(101), trailA1(1);
SetStopTrailing(trailA1 * TIckSize111 * CurrentContracts, exitP1 * TIckSIze111 * CurrentContracts);
End;
///////////////////////////////// ///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
param : SSTIME33(203100), EETIME33(060000);
Vars : TCOND33(False);
If SSTIME33 < EETIME33 Then
Begin
If SSTIME33 <= TIME And TIME <= EETIME33 Then TCOND33 = True
Else TCOND33 = False;
End
Else
Begin
If SSTIME33 <= TIME Or TIME <= EETIME33 Then TCOND33 = True
Else TCOND33 = False;
End;
If TCOND33 Then
Begin
Vars : SP11(0), TickSize11(0);
SP11 = SignalPosition;
TickSize11 = OneTick * PriceScale;
Params : Period133(5);
V0 = Lowest(L, Period133)[1]; // Price Ch Lower
V1 = Highest(H, Period133)[1]; // Price Ch Upper
Params : vP111(9), vP222(39);
Vars : vM111(0), vM222(0);
vM111 = AvgFast(C, vP111);
vM222 = AvgFast(C, vP222);
If SP11 = 0 Then
Begin
If vM111 > vM222 And C < v0 Then Buy("Bbb", Atlimit, v0);
If vM11 < vM222 And C > v1 Then Sell("Sss", Atlimit, v1);
End;
// 익절 및 손절
Params : Exit_P11(400), Exit_L11(82);
Vars : SP1111(0), TickSize1111(0);
SP1111 = SignalPosition;
TickSize1111 = OneTick * PriceScale;
SetStopLoss(Exit_L11 * TickSize1111 * CurrentContracts);
SetProfitTarget(Exit_P11 * TickSize1111 * CurrentContracts);
Params : exitP12(44), trailA12(1);
SetStopTrailing(trailA12 * TIckSize1111 * CurrentContracts, exitP12 * TIckSIze1111 * CurrentContracts);
End;
///////////////////////////////////////////////////////////////////////////////////////////////
param : SSTIME2(234960), EETIME2(022200);
Vars : TCOND2(False);
If SSTIME2 < EETIME2 Then
Begin
If SSTIME2 <= TIME And TIME <= EETIME2 Then TCOND = True
Else TCOND = False;
End
Else
Begin
If SSTIME2 <= TIME Or TIME <= EETIME2 Then TCOND = True
Else TCOND = False;
End;
If TCOND Then
Begin
// 분봉 기준의 40 이평 및 120 이평
Vars : Period5(17), Period6(171);
Vars : ST_Ma5(0), ST_Ma6(0);
ST_Ma5 = AvgFast((O+H+L+C)/4, Period5);
ST_Ma6 = AvgFast((O+H+L+C)/4, Period6);
// 일봉 기준 파란색
//////////////////////////////////////////////////
Params : BuyA_ShortLeng12(7), BuyA_LongLeng12(24) ;
var : BuyA_V123(0), BuyA_V234(0), BuyA_Result123(FALSE);
BuyA_V123 = SMA(Volume, BuyA_ShortLeng12);
BuyA_V234 = SMA(Volume, BuyA_LongLeng12);
BuyA_Result123 = FALSE;
IF BuyA_V123 >= BuyA_V234 Then
BuyA_Result123 = TRUE;
if ( BuyA_Result123 )
Then
Begin
If BuyA_V123 > 140 And BuyA_V123 < 8000 And CrossDown(ST_Ma5, ST_Ma6) Then Sell("A매도");
If BuyA_V123 > 140 And BuyA_V123 < 8000 And CrossUp(ST_Ma5, ST_Ma6) Then Buy("A매수");
End;
// 익절 및 손절
Params : Exit_P2(200), Exit_L2(106);
Vars : SP2(0), TickSize2(0);
SP2 = SignalPosition;
TickSize2 = OneTick * PriceScale;
SetStopLoss(Exit_L2 * TickSize2 * CurrentContracts);
SetProfitTarget(Exit_P2 * TickSize2 * CurrentContracts);
Params : exitP2(38), trailA2(1);
SetStopTrailing(trailA2 * TIckSize2 * CurrentContracts, exitP2 * TIckSIze2 * CurrentContracts);
End;
2020-12-11
751
글번호 144610
시스템
답변완료
수식 의뢰 부탁드립니다.
나스닥을 매매하려고 합니다
아래 수식에서 3가지 조건을 추가하려고 합니다
1. 3번 연속손실 거래시 매매중지
(새벽 3시 반 당일청산, 저녁 11:30분 로스컷 카운트 제로 재설정)
2. 타겟수익(변수설정) 발생 시 이익실현 후 5분 매매정지
3. 손실 발생 시 5분 매매정지
감사합니다
------
input: 진입(2),청산(10),이동평균선(3);
var : hh(0),ll(0),mav(0);
#당일청산
If MarketPosition < 0 and time >= 033000 and time < 070000 Then
Exitshort("DailyExitShort");
if MarketPosition > 0 and time >= 033000 and time < 070000 Then
ExitLong("DailyExitlong");
#청산
ExitLong("EL", atstop, Lowest( Low , 청산 ));
ExitShort("ES", atstop,Highest( High , 청산 ));
hh = Highest(h,진입);
ll = Lowest(l,진입);
mav = ma(C,이동평균선);
if ( stime >= 223000 or stime < 030000 ) Then
{
if c > mav and c > hh[1] Then
Buy();
if c < mav and c < ll[1] Then
Sell();
}
2020-12-11
802
글번호 144600
시스템