Ejemplo n.º 1
0
PriceList Indicator::getResultAsPriceList(size_t num) const {
    if (!m_imp) {
        HKU_WARN("indicator imptr is null! [Indicator::getResultAsPriceList]");
        return PriceList();
    }
    return m_imp->getResultAsPriceList(num);
}
Ejemplo n.º 2
0
void GameStateShop::Start()
{
    menu = NULL;
    bListCards = false;
    mTouched = false;
    mStage = STAGE_FADE_IN;
    mElapsed = 0;
    needLoad = true;
    booster = NULL;
    srcCards = NEW WSrcUnlockedCards(0);
    srcCards->setElapsed(15);
    srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterRarity("T")));
    srcCards->addFilter(NEW WCFilterNOT(NEW WCFilterSet(MTGSets::INTERNAL_SET)));

    bigSync = 0;
    shopMenu = NEW WGuiMenu(JGE_BTN_DOWN, JGE_BTN_UP, true, &bigSync);
    MTGAllCards * ac = MTGCollection();
    playerdata = NEW PlayerData(ac);
    myCollection = NEW DeckDataWrapper(playerdata->collection);
    pricelist = NEW PriceList("settings/prices.dat", ac);
    for (int i = 0; i < SHOP_SLOTS; i++)
    {
        WGuiCardDistort * dist;
        if (i < BOOSTER_SLOTS)
            dist = NEW WGuiCardDistort(NULL, true);
        else
        {
            dist = NEW WGuiCardDistort(srcCards, true);
            dist->mOffset.setOffset(i - BOOSTER_SLOTS);
        }
        dist->xy = WDistort(_x1[i], _y1[i], _x2[i], _y2[i], _x3[i], _y3[i], _x4[i], _y4[i]);
        shopMenu->Add(NEW WGuiButton(dist, -102, i, this));
    }
    shopMenu->Entering(JGE_BTN_NONE);

    if (!bigDisplay)
    {
        bigDisplay = NEW WGuiCardImage(srcCards);
        bigDisplay->mOffset.Hook(&bigSync);
        bigDisplay->mOffset.setOffset(-BOOSTER_SLOTS);
        bigDisplay->setX(385);
        bigDisplay->setY(135);
    }

    for (int i = 0; i < 8; ++i)
    {
        std::ostringstream stream;
        stream << "iconspsp" << i;
        pspIcons[i] = WResourceManager::Instance()->RetrieveQuad("iconspsp.png", (float) i * 32, 0, 32, 32, stream.str(), RETRIEVE_MANAGE);
        pspIcons[i]->SetHotSpot(16, 16);
    }

    JRenderer::GetInstance()->EnableVSync(true);

    taskList = NULL;
    packlist = NEW MTGPacks();
    packlist->loadAll();
    load();
}
Ejemplo n.º 3
0
int WSrcDeck::totalPrice()
{
    int total = 0;
    PriceList * pricelist = NEW PriceList("settings/prices.dat", MTGCollection());
    map<int, int>::iterator it;
    for (it = copies.begin(); it != copies.end(); it++)
    {
        int nb = it->second;
        if (nb) total += pricelist->getPrice(it->first);
    }
    SAFE_DELETE(pricelist);
    return total;
}
Ejemplo n.º 4
0
Indicator HKU_API AmaSpecial(const Block& block, KQuery query,
        Indicator ama) {
    Indicator result;
    StockManager& sm = StockManager::instance();

    //计算每日股票总数
    DatetimeList dateList = sm.getTradingCalendar(query, "SH");

    size_t dayTotal = dateList.size();
    if (dayTotal == 0) {
        result = PRICELIST(PriceList());
        result.name("POS");
        return result;
    }

    vector<size_t> numberPerDay(dayTotal);
    for (size_t i = 0; i < dayTotal; ++i) {
        numberPerDay[i] = 0;
        for (auto stk_iter = block.begin(); stk_iter != block.end(); ++stk_iter) {
            if (stk_iter->startDatetime() <= dateList[i]
                  && dateList[i] <= stk_iter->lastDatetime()) {
                numberPerDay[i]++;
            }
        }
    }

    vector<size_t> position(dayTotal);
    size_t discard = ama.discard();
    for (auto stk_iter = block.begin(); stk_iter != block.end(); ++stk_iter) {
        KData kdata = stk_iter->getKData(query);
        if (kdata.empty())
            continue;
        SignalPtr sg(SG_Single(ama));
        sg->setTO(kdata);
        bool isHold = false;
        size_t n_dis = 0;
        for (size_t i = 0; i < dayTotal; ++i) {
            if (isHold) {
                if (sg->shouldSell(dateList[i])) {
                    isHold = false;
                } else {
                    position[i]++;
                }

            } else {
                if (sg->shouldBuy(dateList[i])) {
                    position[i]++;
                    isHold = true;
                }
            }

            if (dateList[i] >= kdata[0].datetime) {
                if (n_dis < discard) {
                    n_dis++;
                    numberPerDay[i]--;
                }
            }

        }
    }

    PriceList tmp_result(dayTotal, Null<price_t>());
    for (auto i = discard; i < dayTotal; ++i) {
        tmp_result[i] = numberPerDay[i]
                  ? (double)position[i]/(double)numberPerDay[i] : 1.0;
    }

    result = PRICELIST(tmp_result);
    result.name("POS");
    return PRICELIST(result);
}
Ejemplo n.º 5
0
Indicator HKU_API PRICELIST(price_t *data, size_t total) {
    return data ? PRICELIST(PriceList(data, data+total), 0) 
                : Indicator(make_shared<IPriceList>());
}
Ejemplo n.º 6
0
IPriceList::IPriceList() : IndicatorImp("PRICELIST", 1) {
    setParam<int>("result_index", 0);
    setParam<PriceList>("data", PriceList());
    setParam<int>("discard", 0);
}