커뮤니티

업비트에서는 결과가 나오는데 동일전략이 다른 상품에서는 나오지 않습니다.

프로필 이미지
예스모어
2023-10-01 16:23:40
1173
글번호 172818
답변완료

첨부 이미지

동일한 전략을 btckrw에서는 잘 적용이 되나 btc 마켓 종목에서는 적용이 되지 않습니다. 또한 아래 수식이 계산이 많이 들어가는 느낌이 드는데... 최적화할때에도 결과들이 누락되고 그래서... 속도를 더 빠르게 할 수 있는 코드로 수정이 가능할까요?? Input:maperiod(144),profittarget(0.8),stloss(15),water1(1),pleng(100),natrs(3),capital(1),trendscore(1.5); var : cont(0),mascoring(0); //추세판정 if ma(c,maperiod*7)>ma(c,maperiod*7)[maperiod*7] Then Value1=1; Else value1=-1; if ma(c,maperiod*5)>ma(c,maperiod*5)[maperiod*5] Then Value2=0.5; Else Value2=-0.5; if ma(c,maperiod*3)>ma(c,maperiod*3)[maperiod*3] Then Value3=0.25; Else Value3=-0.25; if ma(c,maperiod*2)>ma(c,maperiod*2)[maperiod*2] Then Value4=0.125; Else Value4=-0.125; if ma(c,maperiod*1)>ma(c,maperiod*1)[maperiod*1] Then Value5=0.0625; Else value5=-0.0625; Value10= value1+value2+value3+value4+value5; value11 = ATR( pLeng ) * nAtrs ; cont=(capital*0.01)/c; if marketposition==0 and Value10 >= trendscore and CrossDown(c,BollBandDown(60,2)) Then Begin Buy("매수",AtMarket,def,cont); End; if MarketPosition == 1 and MaxEntries == 1 Then Buy("mt1",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*2); if MarketPosition == 1 and MaxEntries == 2 Then Buy("mt2",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*4); if MarketPosition == 1 and MaxEntries == 3 Then Buy("mt3",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*8); if MarketPosition == 1 and MaxEntries == 4 Then Buy("mt4",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*16); if MarketPosition == 1 and MaxEntries == 5 Then Buy("mt5",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*32); if MarketPosition == 1 and MaxEntries == 6 Then Buy("mt6",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*64); if MarketPosition==1 and (OpenPositionProfit/CurrentContracts)/AvgEntryPrice >= profittarget*0.01 Then Begin ExitLong("매수청산",AtMarket); End;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-10-04 15:57:14

안녕하세요 예스스탁입니다. 1 시스템 트레이딩 설정창의 피라미딩탭에 보시면 하단에 최대 누적 수량 및 횟수를 제어하는 옵션이 있습니다. 1회 진입이나 누적으로 진입수량이 지정한 값 이상이면 신호가 발생하지 않습니다. 누적수량을 더 크게 지정하시거나 외부변수 중 capital을 조정해 보시기 바랍니다. 2 식상 이평계산 부분을 제외하면 별도로 간결하게 할 만한 부분이 없습니다. 이평은 변수처리해서 사용하시면 됩니다. Input:maperiod(144),profittarget(0.8),stloss(15),water1(1),pleng(100),natrs(3),capital(1),trendscore(1.5); var : cont(0),mascoring(0); //추세판정 var1 = ma(C,maperiod*1); var2 = ma(C,maperiod*2); var3 = ma(C,maperiod*3); var4 = ma(C,maperiod*5); var5 = ma(C,maperiod*7); if var5>var5[maperiod*7] Then Value1=1; Else value1=-1; if Var4>Var4[maperiod*5] Then Value2=0.5; Else Value2=-0.5; if Var3>Var3[maperiod*3] Then Value3=0.25; Else Value3=-0.25; if Var2>Var2[maperiod*2] Then Value4=0.125; Else Value4=-0.125; if var1>var1[maperiod*1] Then Value5=0.0625; Else value5=-0.0625; Value10= value1+value2+value3+value4+value5; value11 = ATR( pLeng ) * nAtrs ; cont=(capital*0.01)/c; if marketposition==0 and Value10 >= trendscore and CrossDown(c,BollBandDown(60,2)) Then Begin Buy("매수",AtMarket,def,cont); End; if MarketPosition == 1 and MaxEntries == 1 Then Buy("mt1",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*2); if MarketPosition == 1 and MaxEntries == 2 Then Buy("mt2",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*4); if MarketPosition == 1 and MaxEntries == 3 Then Buy("mt3",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*8); if MarketPosition == 1 and MaxEntries == 4 Then Buy("mt4",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*16); if MarketPosition == 1 and MaxEntries == 5 Then Buy("mt5",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*32); if MarketPosition == 1 and MaxEntries == 6 Then Buy("mt6",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*64); if MarketPosition==1 and (OpenPositionProfit/CurrentContracts)/AvgEntryPrice >= profittarget*0.01 Then Begin ExitLong("매수청산",AtMarket); End; 즐거운 하루되세요 > 예스모어 님이 쓴 글입니다. > 제목 : 업비트에서는 결과가 나오는데 동일전략이 다른 상품에서는 나오지 않습니다. > 동일한 전략을 btckrw에서는 잘 적용이 되나 btc 마켓 종목에서는 적용이 되지 않습니다. 또한 아래 수식이 계산이 많이 들어가는 느낌이 드는데... 최적화할때에도 결과들이 누락되고 그래서... 속도를 더 빠르게 할 수 있는 코드로 수정이 가능할까요?? Input:maperiod(144),profittarget(0.8),stloss(15),water1(1),pleng(100),natrs(3),capital(1),trendscore(1.5); var : cont(0),mascoring(0); //추세판정 if ma(c,maperiod*7)>ma(c,maperiod*7)[maperiod*7] Then Value1=1; Else value1=-1; if ma(c,maperiod*5)>ma(c,maperiod*5)[maperiod*5] Then Value2=0.5; Else Value2=-0.5; if ma(c,maperiod*3)>ma(c,maperiod*3)[maperiod*3] Then Value3=0.25; Else Value3=-0.25; if ma(c,maperiod*2)>ma(c,maperiod*2)[maperiod*2] Then Value4=0.125; Else Value4=-0.125; if ma(c,maperiod*1)>ma(c,maperiod*1)[maperiod*1] Then Value5=0.0625; Else value5=-0.0625; Value10= value1+value2+value3+value4+value5; value11 = ATR( pLeng ) * nAtrs ; cont=(capital*0.01)/c; if marketposition==0 and Value10 >= trendscore and CrossDown(c,BollBandDown(60,2)) Then Begin Buy("매수",AtMarket,def,cont); End; if MarketPosition == 1 and MaxEntries == 1 Then Buy("mt1",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*2); if MarketPosition == 1 and MaxEntries == 2 Then Buy("mt2",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*4); if MarketPosition == 1 and MaxEntries == 3 Then Buy("mt3",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*8); if MarketPosition == 1 and MaxEntries == 4 Then Buy("mt4",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*16); if MarketPosition == 1 and MaxEntries == 5 Then Buy("mt5",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*32); if MarketPosition == 1 and MaxEntries == 6 Then Buy("mt6",AtLimit,LatestEntryPrice(0)*(1-water1*0.01),cont*64); if MarketPosition==1 and (OpenPositionProfit/CurrentContracts)/AvgEntryPrice >= profittarget*0.01 Then Begin ExitLong("매수청산",AtMarket); End;