안녕하세요 
수고 많으십니다.


아래는  기존에 있던 예스 스팟 입니다.
그밑에는  변경 수정한  예스스팟입니다.
----------------------------------------
var 최대보유종목수 = 50;
var 타이머간격 = 5; // 5초
var 매수금 = 100000;
var 수량 = 1;
var 익절 = 10, 손절 = -5;
var OrderList = [];
var BuyList = [];
var MKList = [],MKorder = [];
var req;

function Main_OnStart()
{
      // 1번 타이머, 5초
      Main.SetTimer(1, 타이머간격*1000); 
      Main.SetTimer(99, 1*1000); 
}

function Main_OnTimer(nEventID)
{
      var d = new Date();
      YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate();
      HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
      
      if (nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151500)
      {
            // 종목검색 실행
            if (MKList.length < 최대보유종목수)
            {
                  Main.ReqPowerSearch("자동매매");
            }
            else
            {
                  Main.SetTimer(1, 타이머간격*1000);
            }
      }

      if (nEventID == 2)
      {
            Main.ReqMarketData(OrderList[req]);
      }           

      if (nEventID == 99 && MKList.length > 0)
      {
            for (var i = 0; i < MKList.length;i++)
            {
                  Account1.SetBalance(MKList[i],0);
                  
                  if (Account1.Balance.count > 0 && Account1.Balance.position == 2 && MKorder[i] == 1)      
                  {
                        if (MKList[i].current >= Account1.Balance.avgUnitCost *(1+익절/100) ||
                              MKList[i].current <= Account1.Balance.avgUnitCost *(1+손절/100) )
                        {
                              Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
                              MKorder[i] = -1;      
                        }
                  }                  
            }
      }  
}

function Main_OnRcvItemList(aItemList, nCount)
{
      Main.KillTimer(1);
      
      OrderList = [];
      if (nCount >= 1)
      {
            if (BuyList.length == 0)
            {
                  OrderList = aItemList;
            }
            else
            {
                  for (var a = 0; a < nCount; a++)
            {
                        var Add = true;
                        for (var b = 0; b < BuyList.length; b++)
                        {
                              if (aItemList[a] == BuyList[b])
                              {
                                    Add = false;
                              }
                        }
                        if (Add == true)
                        {
                              OrderList.push(aItemList[a]);
                        }                          
                  }
            }
      }
      
      if (OrderList.length == 0)
      {
            Main.SetTimer(1, 타이머간격*1000);
      }
      else
      {
            req = 0;
            Main.ReqMarketData(OrderList[req]);
      }
}

function Main_OnRcvMarketData(MarketData)
{
      if (MarketData.code == OrderList[req])            
      { 
            MKList.push(MarketData);
            MKorder.push(1);

            BuyList.push(MarketData.code);
            //Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); // 10만원 시장가 주문

            // Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),0,1); // 10만원 시장가 주문
            // Account1.OrderBuy(MarketData.code,Math.floor(매수금/MarketData.Ask(1)),MarketData.Ask(1),0); // 10만원 지정가 주문



            // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다.
            Account1.OrderBuy(MarketData.code,수량,0,1); // 1주를 시장가 주문

            req = req+1;
            if (req < OrderList.length && MKList.length < 최대보유종목수)
            {
                  var aa = Main.ReqMarketData(OrderList[req]);
                  if (aa == -1)
                  {
                        Main.SetTimer(2, 15000);
                  }
            }
            else
            {
                  Main.SetTimer(1, 타이머간격*1000);
            }
      }
} 


//계좌이벤트
function Main_OnUpdateAccount(sAccntNum, sItemCode, lUpdateID)//*삭제
{
      //종목삭제(청산) 
    if (MKList.length > 0 && sAccntNum == Account1.number && lUpdateID == 30002)//*삭제
      {
            for (var i = 0; i < MKList.length; i++)
            {
                  if (MKList[i].code == sItemCode)
                  {
                        Main.RemoveObject(MKList[i])
                        MKList.splice(i,1);      
                  }
            }
      }
}

------------------------------------------------------------------------------
아래는  기존에  있던 예스스팟에  아래사항을  추가 하였습니다.

매수 조건 :  종목검색에 검색된 종목을 1주씩 매수 
추가 매수 : 1주 매수한종목이 1% 수익이 나면  시장가로 100만원 추가매수 
익절 손절 : 매수한 종목이  최고가를 찍고  -2% 하락하면  시장가 매도

위 사항을  추가 하고  기존에 있던  익절 ,손절, 삭제 입니다.
중복되는부분 이나  잘못된부분  수정 부탁드립니다.



var 최대보유종목수 = 50;
var 타이머간격 = 5; // 5초
var 매수금 = 100000;
var 추가매수금 = 1000000; // 추가 매수 금액 (100만 원)
var 수량 = 1;
var 추가매수조건 = 1.01; // 1% 상승 시 추가 매수
var 손절조건 = 0.98; // 최고가 대비 -2% 하락 시 손절
var OrderList = [];
var BuyList = [];
var MKList = [], MKorder = [];
var 최고가 = {}; // 종목별 최고가 저장
var req;

function Main_OnStart() {
    Main.SetTimer(1, 타이머간격 * 1000);
    Main.SetTimer(99, 1 * 1000);
}

function Main_OnTimer(nEventID) {
    var d = new Date();
    var HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds();

    if (nEventID == 1 && HHMMSS >= 90000 && HHMMSS < 151500) {
        if (MKList.length < 최대보유종목수) {
            Main.ReqPowerSearch("자동매매");
        } else {
            Main.SetTimer(1, 타이머간격 * 1000);
        }
    }

    if (nEventID == 2) {
        Main.ReqMarketData(OrderList[req]);
    }

    if (nEventID == 99 && MKList.length > 0) {
        for (var i = 0; i < MKList.length; i++) {
            var stock = MKList[i];
            Account1.SetBalance(stock, 0);

            if (Account1.Balance.count > 0 && Account1.Balance.position == 2 && MKorder[i] == 1) {
                var avgCost = Account1.Balance.avgUnitCost;
                var currentPrice = stock.current;
                
                // 최고가 갱신
                if (!최고가[stock.code] || currentPrice > 최고가[stock.code]) {
                    최고가[stock.code] = currentPrice;
                }

                // 1% 상승 시 추가 매수 (시장가로 100만 원)
                if (currentPrice >= avgCost * 추가매수조건 && Account1.Balance.count == 1) {
                    var 추가매수수량 = Math.floor(추가매수금 / currentPrice);
                    Account1.OrderBuy(stock.code, 추가매수수량, 0, 1);
                }

                // 최고가 대비 2% 하락하면 손절 (시장가 매도)
                if (currentPrice <= 최고가[stock.code] * 손절조건) {
                    Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1);
                    MKorder[i] = -1;
                }
            }
        }
    }
}

function Main_OnRcvItemList(aItemList, nCount) {
    Main.KillTimer(1);
    OrderList = [];

    if (nCount >= 1) {
        if (BuyList.length == 0) {
            OrderList = aItemList;
        } else {
            for (var a = 0; a < nCount; a++) {
                var Add = true;
                for (var b = 0; b < BuyList.length; b++) {
                    if (aItemList[a] == BuyList[b]) {
                        Add = false;
                    }
                }
                if (Add) {
                    OrderList.push(aItemList[a]);
                }
            }
        }
    }

    if (OrderList.length == 0) {
        Main.SetTimer(1, 타이머간격 * 1000);
    } else {
        req = 0;
        Main.ReqMarketData(OrderList[req]);
    }
}

function Main_OnRcvMarketData(MarketData) {
    if (MarketData.code == OrderList[req]) {
        MKList.push(MarketData);
        MKorder.push(1);
        BuyList.push(MarketData.code);

        // 검색된 종목을 1주 시장가 매수
        Account1.OrderBuy(MarketData.code, 수량, 0, 1);

        // 최고가 초기화
        최고가[MarketData.code] = MarketData.current;

        req += 1;
        if (req < OrderList.length && MKList.length < 최대보유종목수) {
            var aa = Main.ReqMarketData(OrderList[req]);
            if (aa == -1) {
                Main.SetTimer(2, 15000);
            }
        } else {
            Main.SetTimer(1, 타이머간격 * 1000);
        }
    }
}

// 계좌 이벤트 - 종목 청산 처리
function Main_OnUpdateAccount(sAccntNum, sItemCode, lUpdateID) {
    if (MKList.length > 0 && sAccntNum == Account1.number && lUpdateID == 30002) {
        for (var i = 0; i < MKList.length; i++) {
            if (MKList[i].code == sItemCode) {
                Main.RemoveObject(MKList[i]);
                MKList.splice(i, 1);
                delete 최고가[sItemCode]; // 최고가 데이터 삭제
            }
        }
    }
}

----------------------------------------------------------------------------------------------

항상 감사드리면서 
새해 복많이 받으시고 건승 하십시오.