#include "..\traders\pbuhrman.h" #include #include //Constructor for pbuhrman3 pbuhrman3::pbuhrman3(int TN):Trader(TN){ HourCount=0; } //------------------------------------- //pbuhrman3::Think() void pbuhrman3::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 8% from yesterday //recommend buy if((HourCount % 8==0) && ((pricetrack[i][HourCount] - pricetrack[i][HourCount-8])/pricetrack[i][HourCount] < -0.05)) buy_criteria1[i]=1; // recommendation #1 to buy else buy_criteria1[i]=0; //if stock's earnings/share have increased more than 5% from //yesterday, recommend buy if((HourCount % 8 ==0) && ((earntrack[i][HourCount] - earntrack[i][HourCount-8])/earntrack[i][HourCount] > 0.05)) 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 8% GetBroker()->GetWorth((AssetData * ( * )[ ] ) &portfolio,&cashvalue); pricetrack[i][HourCount]= portfolio[i]->CurrentPrice; if(pricetrack[i][HourCount]-pricetrack[i][HourCount-portfolio[i]->TimeOfPurchase] < -0.08) buy_criteria1[i]=1; else buy_criteria1[i]=0; //check stock's price to see if it's increased more than 10% from original //purchase price. //recommend sell if yes if((pricetrack[i][HourCount] - pricetrack[i][HourCount-portfolio[i]-> TimeOfPurchase])/pricetrack[i][HourCount] > 0.10) sell_criteria1[i]=1; else sell_criteria1[i]=0; GetBroker()->ClearAssetData((AssetData *(*)[])&portfolio); // PGG } // end of else if } // end of for loop }; //-------------------------------------------- //pbuhrman3::Trade() int pbuhrman3::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 3's worth is $" << GetBroker()->GetNetWorth() << endl; //cin >> goahead; //} return 0; };