커뮤니티
시스템식 부탁합니다
2011-06-13 18:14:56
723
글번호 39530
수고많으십니다.현재 SYSTEM공부 많이 하고 있고요 기대가 큽니다. 하지만 아직은 초보입니다. 이 전략은 제가 10년이상 manual로 장기간 사용해온 FX전략인데, 시스템으로 해서 운용해보고자합니다. 다소 복잡할 것 같지만 수식부탁합니다. 꾸벅 꾸벅. 연락처: MOBILE: 0107526 2278
전략명: 30mGBPUSD89(FX)
답변 1
예스스탁 예스스탁 답변
2011-06-08 15:01:29
안녕하세요
예스스탁입니다.
참조데이터(data2)로 일봉을 적용하시기 바랍니다.
지표간에 비교로 신호가 발생하는 내용은
봉미완성시 신호와 주문은 가능하지 않습니다. 모두 onclose형태입니다.
공통적용 중 1,2,3은 수식에서는 컨트롤 되는 내용이 아닙니다.
이용에 참고하시기 바랍니다.
# SS(=SLOW STOCHASTICS, 12/6) 와 MACD(12/26/9)
var : pip(0,data1),D2MACDV(0,data2),D2MACDS(0,data2),D2StoK(0,data2),D2StoD(0,data2);
var : position(0,data1),D1MACDV(0,data1),D1MACDS(0,data1),D1StoK(0,data1),D1StoD(0,data1);
D2MACDV = data2(MACD(12,26));
D2MACDS = data2(ema(D2MACDV,9));
D2StoK = data2(MACD(12,26));
D2StoD = data2(ema(MACD(12,26),9));
if D2MACDV > D2MACDV[1]+0.00005 Then
position = 1;
if D2MACDV < D2MACDV[1]-0.00005 Then
position = -1;
if abs(D2MACDV-D2MACDV[1]) <= 0.00005 Then{
if Position[1] == 1 Then
position = -1;
if Position[1] == -1 Then
position = 1;
}
D1StoK = StochasticsK(12,6);
D1StoD = StochasticsD(12,6,6);
D1MACDV = MACD(12,26);
D1MACDS = ema(D1MACDV,9);
Pip = PriceScale*10;
if position == 1 and crossup(D1StoK,D1StoD+3.0) and D1StoK < 30 Then
buy("SSGC",OnClose,def,5);
if MarketPosition == 1 and IsEntryName("SSGC") then{
if CrossDown(D1StoK,D1StoD-3.0) and countif(crossup(D1MACDV,D1MACDS+0.0001),BarsSinceEntry) < 1 Then
exitlong("Bx1_1");
if countif(crossup(D1MACDV,D1MACDS+0.001),BarsSinceEntry) >= 1 and CrossDown(D1MACDV,D1MACDS-0.0001) Then
exitlong("bx1_2");
exitlong("bx1_3",atlimit,EntryPrice+30*Pip,"",1,1);
exitlong("bx1_4",atlimit,EntryPrice+50*Pip,"",1,1);
exitlong("bx1_5",atlimit,EntryPrice+70*Pip,"",1,1);
exitlong("bx1_6",atlimit,EntryPrice+100*Pip,"",1,1);
exitlong("bx1_7",atlimit,EntryPrice+150*Pip,"",1,1);
}
if position == 1 and crossup(D1MACDV,0.002) and (D1MACDV > D1MACDS or crossup(D1MACDV,D1MACDS)) Then
buy("M기돌매수",OnClose,def,5);
if MarketPosition == 1 and IsEntryName("M기돌매수") then{
if (CrossDown(D1MACDV,0.002) and countif(crossup(D1MACDV,0.005),BarsSinceEntry) < 1) or CrossDown(D1MACDV,D1MACDS) Then
exitlong("Bx2_1");
if (CrossDown(D1MACDV,0.005) and countif(crossup(D1MACDV,0.005),BarsSinceEntry) >= 1) Then
exitlong("bx2_2");
exitlong("bx2_3",atlimit,EntryPrice+30*Pip,"",1,1);
exitlong("bx2_4",atlimit,EntryPrice+50*Pip,"",1,1);
exitlong("bx2_5",atlimit,EntryPrice+70*Pip,"",1,1);
exitlong("bx2_6",atlimit,EntryPrice+100*Pip,"",1,1);
exitlong("bx2_7",atlimit,EntryPrice+150*Pip,"",1,1);
}
if MarketPosition == 1 and Position == -1 Then
exitlong();
if position == -1 and CrossDown(D1StoK,D1StoD-3.0) and D1StoK > 70 Then
sell("SSDC",OnClose,def,5);
if MarketPosition == -1 and IsEntryName("SSDC") then{
if CrossUp(D1StoK,D1StoD+3.0) and countif(CrossDown(D1MACDV,D1MACDS+0.0001),BarsSinceEntry) < 1 Then
ExitShort("sx1_1");
if countif(CrossDown(D1MACDV,D1MACDS+0.001),BarsSinceEntry) >= 1 and CrossUp(D1MACDV,D1MACDS+0.0001) Then
ExitShort("sx1_2");
ExitShort("sx1_3",atlimit,EntryPrice-30*Pip,"",1,1);
ExitShort("sx1_4",atlimit,EntryPrice-50*Pip,"",1,1);
ExitShort("sx1_5",atlimit,EntryPrice-70*Pip,"",1,1);
ExitShort("sx1_6",atlimit,EntryPrice-100*Pip,"",1,1);
ExitShort("sx1_7",atlimit,EntryPrice-150*Pip,"",1,1);
}
if position == -1 and CrossDown(D1MACDV,-0.002) and (D1MACDV < D1MACDS or CrossDown(D1MACDV,D1MACDS)) Then
Sell("M기돌매도",OnClose,def,5);
if MarketPosition == -1 and IsEntryName("M기돌매도") then{
if (Crossup(D1MACDV,-0.002) and countif(CrossDown(D1MACDV,-0.005),BarsSinceEntry) < 1) or CrossUp(D1MACDV,D1MACDS) Then
ExitShort("sx2_1");
if (CrossUp(D1MACDV,-0.005) and countif(CrossDown(D1MACDV,-0.005),BarsSinceEntry) >= 1) Then
ExitShort("sx2_2");
ExitShort("sx2_3",atlimit,EntryPrice-30*Pip,"",1,1);
ExitShort("sx2_4",atlimit,EntryPrice-50*Pip,"",1,1);
ExitShort("sx2_5",atlimit,EntryPrice-70*Pip,"",1,1);
ExitShort("sx2_6",atlimit,EntryPrice-100*Pip,"",1,1);
ExitShort("sx2_7",atlimit,EntryPrice-150*Pip,"",1,1);
}
if MarketPosition == -1 and Position == 1 Then
ExitShort();
즐거운 하루되세요
> 백세 님이 쓴 글입니다.
> 제목 : 시스템식 부탁합니다
> 수고많으십니다.현재 SYSTEM공부 많이 하고 있고요 기대가 큽니다. 하지만 아직은 초보입니다. 이 전략은 제가 10년이상 manual로 장기간 사용해온 FX전략인데, 시스템으로 해서 운용해보고자합니다. 다소 복잡할 것 같지만 수식부탁합니다. 꾸벅 꾸벅. 연락처: MOBILE: 0107526 2278
전략명: 30mGBPUSD89(FX)
1. 차트세팅 및 사용지표: GBP/USD 30m봉/일봉에 SS(=SLOW STOCHASTICS, 12/6) 와 MACD(12/26/9)
2. 방향키: 모든진입은 진입시점에서 아래 방향키와 일치해야한다.
2.1: 일봉 현MACD>전봉MACD +0.00005이면 <매수> 2.2: 일봉 현MACD<전봉 MACD-0.00005이면 <매도> 2.3: 현MACD와 전MACD의 차이가 0.00005 이내일 경우는 전봉방향키와 반대방향
3. 용어 SSGC/SSDC/MGC/MDC: 하기( )부분 참조
4. SSGC매수 진입/청산
4.1. SS가 30이하에서 SSGC(%K가 %D를 상향으로 3.00이상 돌파)하면 현캔들/현재가로 5계약 매수.
4.2. MACD가 MGC(MACD선이 SIGNAL선을 0.00010 이상 상향돌파) 하기전에 SSDC (%K가 %D를 하향으로 3.00이상 돌파) 하면 현캔들/현재가로 모두청산.
4.3. MACD가 MGC할 경우는 다음캔들이상에서 MDC(MACD선이 SIGNAL선을 0.00010 이상 하향돌파)하면 현캔들/현재가로 모두청산.
4.4. 이익이 30/50/70/100/150핍 발생시 각각1계약씩 청산
5. M기돌매수 진입/청산
5.1. 전캔들의 MACD선종가가 0.00020 밑이었는데 현캔들의 MACD선이 0.00020선을 상향돌파하고 이미 MGC상태(MGC이후 MDC하지 않은상태)이거나 이후 MGC가 발생하면 현캔들/현재가로 5계약매수..
5.2. MACD선이 진입캔들이상에서 +0.00050을 상향돌파못하고 MACD선이 +0.00020을 하향돌파하거나 MDC하면 현캔들/현재가로 모두청산
5.3. MACD선이 +0.00050을 돌파할 경우는 그후 MDC상태로 +0.00050을 하향돌파시 현캔들/현재가로 모두청산.
5.4. 이익이 30/50/70/100/150핍에 이를시 한 계약씩 분할청산
6. SSDC매도 진입/청산: (매수와반대)
6.1. SS가 70이상에서 SSDC(%K가 %D를 하향으로 3.00 이상 돌파)하면 현캔들/현재가로 5계약 매수.
6.2. MACD가 MDC하기전에 SSGC (%K가 %D를 상향으로 3.00이상 돌파) 하면 현캔들/현재가로 모두청산.
6.3. MACD가 MDC할 경우는 다음캔들이상에서 MGC(MACD선이 SIGNAL선을 0.00010 이상 상향돌파)하면 현캔들/현재가로 모두청산.
6.4. 이익이 30/50/70/100/150핍 발생시 각각1계약씩 청산
7. M기돌매도 진입/청산: (매수와반대)
7.1. 전캔들의 MACD선종가가 -0.00020 위이었는데 현캔들의 MACD선이 -0.00020선을 하향돌파하고 이미 MDC상태(MDC이후 MGC하지 않은상태)이거나 이후 MDC가 발생하면 현캔들/현재가로 5계약매수..
7.2. MACD선이 진입캔들이상에서 -0.00050을 하향돌파못하고 MACD선이 -0.00020을 상향돌파하거나 MGC하면 현캔들/현재가로 모두청산
7.3. MACD선이 -0.00050을 돌파할 경우는 MGC상태로 -0.00050을 상향돌파시 현캔들/현재가로 모두청산.
7.4. 이익이 30/50/70/100/150핍에 이를시 한 계약씩 분할청산
8. 공통적용
8.1: 갭발생/컴퓨터미작동/데이타서비스중단/사고 등 어떠한 이유로든 진입기회를 놓친경우 소급진입을 하지않고, 이 중지기간중 청산기회를 놓친경우는 현재가기준으로 청산한다.
8.2. 본전략의 사용계좌는 잔고 $60,000이상이어야 하며, 최대 OPEN계약은 10계약임: 유지증거금은 잔고의 50%이하로 함.
8.3. 각전략(4/5/6/7)은 상호보완적이나 독립적으로 운용되고, 각전략에서 미청산이 있을시는 당해전략에 대해서만 새로운진입이 안됨.
8.4. 매수진입에서 방향키가 <매도>로 바뀌거나 매도진입에서 방향키가 <매수>로 바뀌면 모두청산
8.5. 진입사유발생시 현캔들/현재가진입원칙이고, 과거실적시뮬레이션용으로는 진입/청산기회발생시 다음캔들시가로 바꿈.
* 30분봉이기때문에 onclose가격진입은 너무많은 가격차로 전략의 가치가 반감됩니다. <현재캔들/현재가>로 진입청산이 이루어져야하는것이 핵심과제입니다. 이를 위해 필요하다면 이 진입/청산조건에 맞는 전략지표를 만들면 좋겠네요.