void tradeStocks(Record record, Dataset dataset, Portfolio* portfolio) { float priceRelative; priceRelative = (float)record.x / record.y; if(priceRelative > dataset.mean + dataset.stdDev) { sellStock(X_STR, record.x, portfolio); buyStock(Y_STR, record.y, portfolio); } if(priceRelative < dataset.mean - dataset.stdDev) { sellStock(Y_STR, record.y, portfolio); buyStock(X_STR, record.x, portfolio); } }
void buyMenu(int order) { char ch; int amount; system("cls"); titleLine("주식 사기"); printf(" 현재 %s 회사의 주가는 %d원입니다.\n 몇 개를 구입하시겠습니까?", CompanyName[order], StockPrice[order]); scanf("%d", &amount); if (amount > 0) { buyStock(order, amount); printf("\n\n 구입하였습니다."); Sleep(2000); } system("cls"); return; }
void RandomAgent::play() { qDebug() << "[Agent] Agent is playing."; if(!m_store.isUpToDate() || !m_myOrders.isUpToDate() || m_stocksInfo.size() != STOKS_NUMBER - 1) { qDebug() << "[Agent] Agent infos aren't up to date."; return; } m_idleTimer->start(); qint32 money = m_store.getMoney(); for(int i = 2; i <= STOKS_NUMBER; ++i) { if(m_store.contains(i)) { if(static_cast<double>(qrand())/RAND_MAX < m_sellStockChange) { qint32 price = m_stocksInfo[i].getBestBuyPrice() + 3 - qrand() % 10; if(!m_stocksInfo[i].getBestBuyPrice()) { price = m_stocksInfo[i].lastPrice() *(0.99 + (0.02 * qrand())/RAND_MAX); } if(price) { qint32 maxAmount = m_store.getStockAmount(i); if(maxAmount) { qint32 amount = pow(1 + static_cast<double>(0.15*qrand())/RAND_MAX, 10 + static_cast<double>(14*qrand())/RAND_MAX) * (1 + static_cast<double>(2*qrand())/RAND_MAX) * (static_cast<double>(money)/1000000) + 2 + qrand() % 5; amount %= maxAmount; if(amount) sellStock(i, amount, price); } } } } if(static_cast<double>(qrand())/RAND_MAX < m_buyStockChange) { qint32 price = m_stocksInfo[i].getBestSellPrice() - 3 + qrand() % 10; if(!m_stocksInfo[i].getBestSellPrice()) { price = m_stocksInfo[i].lastPrice() *(0.99 + (0.02 * qrand())/RAND_MAX); } if(price) { qint32 maxAmount = money/price; if(maxAmount) { qint32 amount = pow(1 + static_cast<double>(0.15*qrand())/RAND_MAX, 10 + static_cast<double>(14*qrand())/RAND_MAX) * (1 + static_cast<double>(2*qrand())/RAND_MAX) * (static_cast<double>(money)/1000000) + 2 + qrand() % 5; amount %= maxAmount; if(amount) buyStock(i, amount, price); } } } } QMapIterator<int, Order> it(m_myOrders); while (it.hasNext()) { it.next(); if(static_cast<double>(qrand())/RAND_MAX < m_cancelChange) cancelReq(it.key()); } }