커뮤니티

시스템식 검토부탁드립니다.

프로필 이미지
e편한신호
2026-07-01 09:54:10
134
글번호 232634
답변완료

ai 랑 아래와 같은 질문과 응답을 받았는데 습니다.

ai에게 질문


20이평에서 119 이평까지 100개의 이평의 방향을 통계로 산출하고 이평이 상승하는 숫자만큼 매수하는 전략을 만들어 주세요 예를 들어 이평통계값이 100이면 100개매수 90으로줄면 10개청산하고 90개매수유지 이평통계값이 60으로 변경되면 30개청산하고 60개매수유지 통계값이 85로 증가하면 25개매수해서 85개매수유지하는 전략입니다


ai답변

// 20~119 이평 방향 기반 가변 포지션 전략

// 입력/변수 선언

Input : MinPeriod(20), MaxPeriod(119);

Var : i(0), period(0), countUp(0), desiredQty(0), curQty(0);

Array : maArr[120](0); // 각 기간별 이동평균 저장


// 각 기간별 이동평균 계산 및 상승(전봉 대비) 카운트

countUp = 0;

For period = MinPeriod To MaxPeriod

{

// 이동평균 계산

maArr[period] = MA(C, period);

// 상승 여부: 현재 MA가 전봉 MA보다 큰 경우

If maArr[period] > maArr[period][1] Then

countUp = countUp + 1;

}


// 목표 보유수량

desiredQty = countUp;


// 현재 보유 수량(내장변수 사용)

curQty = CurrentContracts;


// 포지션 조정 로직

If desiredQty > curQty Then

{

// 부족한 만큼 매수

Buy("MA_Buy", onclose, Def, desiredQty - curQty);

}

Else If desiredQty < curQty Then

{

// 초과분 청산 (부분청산 옵션 사용)

// 진입명은 빈문자열로 두고, 수량옵션 1로 전체중 지정수량 청산

ExitLong("MA_Reduce", onclose, Def, "", curQty - desiredQty, 1);

}


// 안전: 무포지션에서 desiredQty==0 인 경우 아무 동작 없음


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


질문내용입니다.

첫째 위의 전략이 잘 작성되었는지 검토부탁드립니다.

둘째 전략적용을 할때 피라미딩설정에서

허용안함, 다른진입신호만 허용, 모든진입신호허용 중 어느항목에 체크해야하는지 와 진입횟수수량은 20 기본값으로 해야하는지알려주세요

셋째 기본거래수량 셋팅에서 동일수량진입,고정자산기준진입중 어느항목에 체크해야하는지 알려주세요



시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-07-02 10:43:40

안녕하세요 예스스탁입니다. 1 청산함수의 마지막 매개변수값이 2가 되어야 합니다. 나머지는 모두 잘 작성되었습니다. 2 피라미딩은 모든진입신호 허용으로 설정하고 적용하시면 됩니다. 3 해당식에서 수량은 수식안에서 지정됩니다. 수식 안에서 수량이 지정되면 설정의 수량 설정은 무시됩니다. 설정창에서 수량 설정은 하실 필요 없습니다. 4 수정한 식입니다. Input : MinPeriod(20), MaxPeriod(119); Var : i(0), period(0), countUp(0), desiredQty(0), curQty(0); Array : maArr[120](0); // 각 기간별 이동평균 저장 // 각 기간별 이동평균 계산 및 상승(전봉 대비) 카운트 countUp = 0; For period = MinPeriod To MaxPeriod { // 이동평균 계산 maArr[period] = MA(C, period); // 상승 여부: 현재 MA가 전봉 MA보다 큰 경우 If maArr[period] > maArr[period][1] Then countUp = countUp + 1; } // 목표 보유수량 desiredQty = countUp; // 현재 보유 수량(내장변수 사용) curQty = CurrentContracts; // 포지션 조정 로직 If desiredQty > curQty Then { // 부족한 만큼 매수 Buy("MA_Buy", onclose, Def, desiredQty - curQty); } Else If desiredQty < curQty Then { // 초과분 청산 (부분청산 옵션 사용) // 진입명은 빈문자열로 두고, 수량옵션 1로 전체중 지정수량 청산 ExitLong("MA_Reduce", onclose, Def, "", curQty - desiredQty, 2); } 즐거운 하루되세요