예제 #1
0
 /**
  * Получение последней котировки используемого в стратегии символа
  * @param Strategy $strategy
  * @return Price
  */
 public function getLastPrice(Strategy $strategy)
 {
     return $this->em->getRepository($this->entityNamespace . Strategy::getSymbolName()[$strategy->getSymbol()])->findOneBy([], ['id' => 'DESC']);
 }
예제 #2
0
 /**
  * Бэктестинг стратегии
  * @Route("/test/{id}", requirements={"id"="\d+"}, name="strategy.test")
  * @Template()
  * @ParamConverter("id", class="RottenwoodBarchartBundle:Strategy")
  * @param Strategy $strategy
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function testStrategyAction(Strategy $strategy)
 {
     if ($strategy->isPrivate() && $strategy->getAuthor() !== $this->getUser()) {
         return ['strategyIsPrivate' => $strategy->getId()];
     }
     $analizer = $this->get('barchart.analizer');
     $trades = $analizer->testStrategy($strategy);
     $lastPrice = $analizer->getLastPrice($strategy);
     $profit = $analizer->calculatePercentProfit($trades);
     return ['strategy' => $strategy, 'trades' => $trades, 'currentPrice' => $lastPrice ? $lastPrice->getPrice() : 0, 'percentProfit' => $profit['simple'], 'percentProfitComplex' => $profit['complex'], 'firstPriceDate' => $analizer->getFirstTradeDate($strategy), 'lastPriceDate' => $analizer->getLastTradeDate($strategy)];
 }
예제 #3
0
 /**
  * Название торгового инструмента
  * @param int $symbol
  * @return string
  */
 public function getSymbolName($symbol)
 {
     $symbolNames = Strategy::getRussianSymbolName();
     return array_key_exists($symbol, $symbolNames) ? $symbolNames[$symbol] : '';
 }