커뮤니티
수식 부탁해요~~ 분할진입
2019-01-04 15:35:06
180
글번호 124979
총 5회까지 진입가능하게요
매수 진입시
최초 신호떳을때 진입
최초 진입 가격 -5tick 도달시 즉시 현재가 진입
최초 진입 가격 -10tick 도달시 즉시 현재가 진입
최초 진입 가격 -15tick 도달시 즉시 현재가 진입
최초 진입 가격 -20tick 도달시 즉시 현재가 진입
하는 수식 부탁합니다 ( 매도는 반대방향으로 )
1회만 진입하는 식은 다음과 같습니다.
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30);
input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74);
input : N1(1),N2(10);
Input :N(25),매수제한(0.02),매도제한(0.18);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0);
var : sum3(0),Tcond(false);
var1 = CSar(af,maxAF);
Var4 = highest(H,N);
Var5 = lowest(L,N);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
T == 1 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
T == -1 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var5+(Var4-Var5)*매도제한 and
C < value4 then
Sell("매도",OnClose,def,1);
====================================================================================
청산 수식도 부탁해요~~
이식은 분할진입하지 않고 단발 진입할때의 청산 수식이구요...
분할진입할때의 청산시 수식은 다음과 같이 부탁드려요...
모든 기준 금액은 최초 진입했던 가격을 기준으로 하고요.. 청산시는 분할진입한것 일괄 청산
if T == 1 then
SetStopProfittarget(PriceScale*익절틱수1, PointStop);
SetStopLoss(PriceScale*손절틱수1, PointStop);
if T == -1 then
SetStopProfittarget(PriceScale*익절틱수2, PointStop);
SetStopLoss(PriceScale*손절틱수2, PointStop);
if MarketPosition == 1 Then
{
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then
ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2);
Else
ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수);
}
if MarketPosition == -1 Then
{
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then
ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2);
Else
ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수);
}
}
답변 1
예스스탁 예스스탁 답변
2019-01-04 16:38:12
안녕하세요
예스스탁입니다.
1
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30);
input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74);
input : N1(1),N2(10);
Input :N(25),매수제한(0.02),매도제한(0.18);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0);
var : sum3(0),Tcond(false);
var1 = CSar(af,maxAF);
Var4 = highest(H,N);
Var5 = lowest(L,N);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
T == 1 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
C > value2 then
buy("매수1",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
T == -1 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var5+(Var4-Var5)*매도제한 and
C < value4 then
Sell("매도",OnClose,def,1);
}
if MarketPosition == 1 Then
{
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*5 Then
buy("매수2",AtLimit,EntryPrice-PriceScale*5,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*10 Then
buy("매수3",AtLimit,EntryPrice-PriceScale*10,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*15 Then
buy("매수4",AtLimit,EntryPrice-PriceScale*15,1);
if lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*20 Then
buy("매수5",AtLimit,EntryPrice-PriceScale*20,1);
}
if MarketPosition == -1 Then
{
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*5 Then
sell("매도2",AtLimit,EntryPrice+PriceScale*5,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*10 Then
sell("매도3",AtLimit,EntryPrice+PriceScale*10,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*15 Then
sell("매도4",AtLimit,EntryPrice+PriceScale*15,1);
if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*20 Then
sell("매도5",AtLimit,EntryPrice+PriceScale*20,1);
}
2
강제청산은 신호별로 동작하므로
삭제하시고 아래식으로 대체하시면 됩니다.
if MarketPosition == 1 Then
{
if T == 1 then
{
ExitLong("bl1",AtStop,EntryPrice-손절틱수1);
ExitLong("bp1",AtLimit,EntryPrice+익절틱수1);
}
if T == -1 Then
{
ExitLong("bl2",AtStop,EntryPrice-손절틱수2);
ExitLong("bp2",AtLimit,EntryPrice+익절틱수2);
}
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then
ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2);
Else
ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수);
}
if MarketPosition == -1 Then
{
if T == 1 then
{
ExitShort("sl1",AtStop,EntryPrice+손절틱수1);
ExitShort("sp1",AtLimit,EntryPrice-익절틱수1);
}
if T == -1 Then
{
ExitShort("sl2",AtStop,EntryPrice+손절틱수2);
ExitShort("sp2",AtLimit,EntryPrice-익절틱수2);
}
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then
ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2);
Else
ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수);
}
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 수식 부탁해요~~ 분할진입
> 총 5회까지 진입가능하게요
매수 진입시
최초 신호떳을때 진입
최초 진입 가격 -5tick 도달시 즉시 현재가 진입
최초 진입 가격 -10tick 도달시 즉시 현재가 진입
최초 진입 가격 -15tick 도달시 즉시 현재가 진입
최초 진입 가격 -20tick 도달시 즉시 현재가 진입
하는 수식 부탁합니다 ( 매도는 반대방향으로 )
1회만 진입하는 식은 다음과 같습니다.
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 익절틱수1(55),익절틱수2(49),손절틱수1(70),손절틱수2(30);
input : 매수후수익날랑말랑한틱수(35),매도후수익날랑말랑한틱수(37),매수진입후아예빠져서손절날틱수(80),매도진입한후아예빠져서손절날틱수(74);
input : N1(1),N2(10);
Input :N(25),매수제한(0.02),매도제한(0.18);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0);
var : sum3(0),Tcond(false);
var1 = CSar(af,maxAF);
Var4 = highest(H,N);
Var5 = lowest(L,N);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
T == 1 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
T == -1 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var5+(Var4-Var5)*매도제한 and
C < value4 then
Sell("매도",OnClose,def,1);
====================================================================================
청산 수식도 부탁해요~~
이식은 분할진입하지 않고 단발 진입할때의 청산 수식이구요...
분할진입할때의 청산시 수식은 다음과 같이 부탁드려요...
모든 기준 금액은 최초 진입했던 가격을 기준으로 하고요.. 청산시는 분할진입한것 일괄 청산
if T == 1 then
SetStopProfittarget(PriceScale*익절틱수1, PointStop);
SetStopLoss(PriceScale*손절틱수1, PointStop);
if T == -1 then
SetStopProfittarget(PriceScale*익절틱수2, PointStop);
SetStopLoss(PriceScale*손절틱수2, PointStop);
if MarketPosition == 1 Then
{
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*매수후수익날랑말랑한틱수 Then
ExitLong("본전탈출1",AtStop,EntryPrice+PriceScale*2);
Else
ExitLong("가슴아픈손절1",AtStop,EntryPrice-PriceScale*매수진입후아예빠져서손절날틱수);
}
if MarketPosition == -1 Then
{
if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*매도후수익날랑말랑한틱수 Then
ExitShort("본전탈출2",AtStop,EntryPrice-PriceScale*2);
Else
ExitShort("가슴찢어지는손절",AtStop,EntryPrice+PriceScale*매도진입한후아예빠져서손절날틱수);
}
}
다음글
이전글