image thumbnail
from Order book simulation by Dimitri Shvorob
(a naive artificial stock market)

RandomOrderStrategy
classdef RandomOrderStrategy < Strategy   
                
   methods
       
       function eval(obj,trader)
          if Settings.Verbose
             fprintf('%s evaluated by %s\n',class(obj),char(trader))
          end  
 
          if ~isempty(trader.TradeConfirmationsToReview)
              if Settings.Verbose
                 fprintf('Trade confirmations reviewed by %s (listed below)\n',char(trader))
                 for t = trader.TradeConfirmationsToReview.Values
                     disp(t)
                     trader.ArchivedTradeConfirmations.put(t);
                 end
                 disp('--------------------------------------------------')
              end   
              trader.TradeConfirmationsToReview = Queue();
          end 

          if ~isempty(trader.TradeAnnouncementsToReview)
              if Settings.Verbose
                 fprintf('Trade announcements reviewed by %s (listed below)\n',char(trader))
                 for t = trader.TradeAnnouncementsToReview.Values
                     disp(t)
                     trader.ArchivedTradeAnnouncements.put(t);
                 end
                 disp('--------------------------------------------------')
              end   
              trader.TradeAnnouncementsToReview = Queue();
          end 
  
          if rand < 1
             if rand < .5
                side = 'BUY'; 
             else
                side = 'SELL';
             end
             if rand < .5
                type = 'MKT'; 
             else
                type = 'LIM';
             end
             size  = ceil(10*rand);
             price = ceil(10*rand);            
             order = Order(trader,side,type,size,price);
             trader.processOrder(order)
          end   
       end 
       
   end      
       
end

Contact us at files@mathworks.com