#include "..\traders\pbuhrman.h" #include #include //Constructor for pbuhrman1 pbuhrman1::pbuhrman1(int TN):Trader(TN){ HourCount=0; } //------------------------------------- //pbuhrman1::Think() void pbuhrman1::Think(){ ++HourCount; for(int i=0; i< NUM_STOCK; ++i){ //test to see if stock is new (not in portfolio) if(GetBroker()->GetStockInfo(i,m_sd)==0) // ; <- BUG { pricetrack[i][HourCount]=m_sd.CurrentPrice; earntrack[i][HourCount]=m_sd.EarningsPerShare; //if stock's price has decreased more than 15% from 24 hours ago //recommend buy if((HourCount % 24==0) && ((pricetrack[i][HourCount] - pricetrack[i][HourCount-24])/pricetrack[i][HourCount] <- 0.15)) buy_criteria1[i]=1; // recommendation #1 to buy else buy_criteria1[i]=0; //if stock's earnings/share have increased more than 20% from //2 days ago, recommend buy if((HourCount % 24 ==0) && ((earntrack[i][HourCount] - earntrack[i][HourCount-24])/earntrack[i][HourCount] > 0.20)) buy_criteria2[i]=1; // recommendation #2 to buy else buy_criteria2[i]=0; } //test to see if stock is in portfolio if(GetBroker()->GetStockInfo(i,m_sd)==1) { //check stock's price change from original purchase price. //recommend buy if it's gone down more than 13% GetBroker()->GetWorth((AssetData * ( * )[ ] ) &portfolio,&cashvalue); pricetrack[i][HourCount]= portfolio[i]->CurrentPrice; if(pricetrack[i][HourCount]-pricetrack[i][HourCount-portfolio[i]-> TimeOfPurchase] < -0.13) buy_criteria1[i]=1; else buy_criteria1[i]=0; //check stock's price to see if it's increased more than 15% from original //purchase price. //recommend sell if yes if((pricetrack[i][HourCount]-pricetrack[i][HourCount-portfolio[i]-> TimeOfPurchase])/pricetrack[i][HourCount] > 0.15) sell_criteria1[i]=1; else sell_criteria1[i]=0; GetBroker()->ClearAssetData((AssetData *(*)[])&portfolio); // PGG } // end of else if } // end of for loop }; //-------------------------------------------- //pbuhrman1::Trade() int pbuhrman1::Trade(){ for(int j=0; jGetWorth((AssetData * ( * )[ ] ) &portfolio,&cashvalue); if(cashvalue > 20000) {if(buy_criteria1[j] || buy_criteria2[j]) {GetBroker()->Buy(j,2000.00); buy_criteria1[j]=0; buy_criteria2[j]=0; } else{} } else if(sell_criteria1[j] && GetBroker()->GetStockInfo(j,m_sd)==1) {GetBroker()->Sell(j,portfolio[j]->NumShares); sell_criteria1[j]=0; } else{} GetBroker()->ClearAssetData((AssetData *(*)[])&portfolio); // PGG } //if(HourCount % 240==0) //{++MonthCount; //cout << "Trader 1's worth is $" << GetBroker()->GetNetWorth() << endl; //cin >> goahead; //} return 0; };