def processPCDD(pcdd, tag):
    """Module for printing generic information about the PriceBars in a
    PriceChartDocumentData object.  The generic information that is
    printed includes:
 
     - Earliest pricebar timestamp as a datetime.datetime and a julian day.
     - Latest   pricebar timestamp as a datetime.datetime and a julian day.
     - highest  pricebar high price.
     - lowest   pricebar low price.

    Arguments:
    pcdd - PriceChartDocumentData object that will be modified.
    tag  - str containing the tag.  The value of this field
           may be "" if a tag is not specified by the user.
           This implementation doesn't use this field.
           
    Returns:
    0 if the changes are to be saved to file.
    1 if the changes are NOT to be saved to file.
    This implementation always returns 1.
    """

    # Return value.
    rv = 1

    # List of tuples of the form (datetime.datetime, price).
    priceTimeInfoTupleList = []

    # Counting the number of PriceBarChartPriceTimeInfoArtifact objects.
    numPriceTimeInfoArtifacts = 0

    # Scene used for datetime and price conversions.
    scene = PriceBarChartGraphicsScene()
    
    artifacts = pcdd.priceBarChartArtifacts

    for artifact in artifacts:
        if isinstance(artifact, PriceBarChartPriceTimeInfoArtifact):
            numPriceTimeInfoArtifacts += 1

            infoPointF = artifact.getInfoPointF()
            dt = scene.sceneXPosToDatetime(infoPointF.x())
            price = scene.sceneYPosToPrice(infoPointF.y())

            priceTimeInfoTupleList.append((dt, price))

    # Sort by timestamp, because when obtained they might not be in order:
    sortedPriceTimeInfoTupleList = sorted(priceTimeInfoTupleList,
                                          key=lambda tup: tup[0])

    # Print out the timestamps and price.
    for tup in sortedPriceTimeInfoTupleList:
        dt = tup[0]
        price = tup[1]
        log.info("{},{}".format(Ephemeris.datetimeToDayStr(dt), price))
    
    rv = 1
    return rv
Exemplo n.º 2
0
def processPCDD(pcdd, tag):
    """Module for printing generic information about the PriceBars in a
    PriceChartDocumentData object.  The generic information that is
    printed includes:
 
     - Earliest pricebar timestamp as a datetime.datetime and a julian day.
     - Latest   pricebar timestamp as a datetime.datetime and a julian day.
     - highest  pricebar high price.
     - lowest   pricebar low price.

    Arguments:
    pcdd - PriceChartDocumentData object that will be modified.
    tag  - str containing the tag.  The value of this field
           may be "" if a tag is not specified by the user.
           This implementation doesn't use this field.
           
    Returns:
    0 if the changes are to be saved to file.
    1 if the changes are NOT to be saved to file.
    This implementation always returns 1.
    """

    # Return value.
    rv = 1

    # List of tuples of the form (datetime.datetime, price).
    priceTimeInfoTupleList = []

    # Counting the number of PriceBarChartPriceTimeInfoArtifact objects.
    numPriceTimeInfoArtifacts = 0

    # Scene used for datetime and price conversions.
    scene = PriceBarChartGraphicsScene()

    artifacts = pcdd.priceBarChartArtifacts

    for artifact in artifacts:
        if isinstance(artifact, PriceBarChartPriceTimeInfoArtifact):
            numPriceTimeInfoArtifacts += 1

            infoPointF = artifact.getInfoPointF()
            dt = scene.sceneXPosToDatetime(infoPointF.x())
            price = scene.sceneYPosToPrice(infoPointF.y())

            priceTimeInfoTupleList.append((dt, price))

    # Sort by timestamp, because when obtained they might not be in order:
    sortedPriceTimeInfoTupleList = sorted(priceTimeInfoTupleList,
                                          key=lambda tup: tup[0])

    # Print out the timestamps and price.
    for tup in sortedPriceTimeInfoTupleList:
        dt = tup[0]
        price = tup[1]
        log.info("{},{}".format(Ephemeris.datetimeToDayStr(dt), price))

    rv = 1
    return rv
Exemplo n.º 3
0
def getPlanetsForDatetimeAndTimezone(dt, locTuple):
    """Returns a string with the planet longitude position for the given
    datetime and timezone.
    """

    locName = locTuple[0]
    locLongitude = locTuple[1]
    locLatitude = locTuple[2]
    locElevation = locTuple[3]

    # Set the Location (required).
    Ephemeris.setGeographicPosition(locLongitude,
                                    locLatitude,
                                    locElevation)

    longitudeType = "tropical"
    fieldName = "longitude"

    rv = "For datetime: " + Ephemeris.datetimeToDayStr(dt) + \
         ", location: " + locName + endl

    
    for planetName in geocentricPlanetNames:
        pi = Ephemeris.getPlanetaryInfo(planetName, dt)

        longitude = pi.geocentric[longitudeType][fieldName]
                           
        # Format differently for lunation phase of G.MoSu.
        if planetName == "MoSu":
            rv += "  {: <14}".format("G." + planetName + ": ") + \
                  "{:>.3f}".format(longitude) + \
                  "    Phase (of max 30): {:.2f}".format(longitude / 12.0) + \
                  endl
        else:
            rv += "  {: <14}".format("G." + planetName + ": ") + \
                  "{:>.3f}".format(longitude) + \
                  endl

    rv += endl
        
    for planetName in heliocentricPlanetNames:
        pi = Ephemeris.getPlanetaryInfo(planetName, dt)

        rv += "  {: <14}".format("H." + planetName + ": ") + \
              "{:>.3f}".format(pi.heliocentric[longitudeType][fieldName]) + \
              endl
        
    return rv
Exemplo n.º 4
0
def getPlanetDiffsForDatetimes(dt1,
                               loc1Tuple,
                               dt2,
                               loc2Tuple):
    """Returns a string with the planet longitude differences between the given
    datetimes and location.
    """

    loc1Name = loc1Tuple[0]
    loc1Longitude = loc1Tuple[1]
    loc1Latitude = loc1Tuple[2]
    loc1Elevation = loc1Tuple[3]

    loc2Name = loc2Tuple[0]
    loc2Longitude = loc2Tuple[1]
    loc2Latitude = loc2Tuple[2]
    loc2Elevation = loc2Tuple[3]


    longitudeType = "tropical"
    fieldName = "longitude"

    rv = "Between datetime: " + Ephemeris.datetimeToDayStr(dt1) + \
         ", location: " + loc1Name + " and " + endl
    rv += "        datetime: " + Ephemeris.datetimeToDayStr(dt2) + \
         ", location: " + loc2Name + endl


    calendarDayDiff = dt2 - dt1
    rv += "  Diff calendar days: {}".format(calendarDayDiff) + endl
    
    for planetName in geocentricPlanetNames:

        longitudeDiff = getLongitudeDiffBetweenDatetimes(planetName,
                                                         "geocentric",
                                                         dt1,
                                                         loc1Tuple,
                                                         dt2,
                                                         loc2Tuple)
        longitudeDiffFullRevs = int(longitudeDiff // 360)
        longitudeDiffMod360 = longitudeDiff % 360
        
        # Format differently for lunation phase of G.MoSu.
        if planetName == "MoSu":
            rv += "  {: <16}".format("Diff G." + planetName + ": ") + \
                  "{:>10.3f}".format(longitudeDiff) + \
                  "    or  {:>4} rev + {:>7.3f} deg".format(longitudeDiffFullRevs,
                                                            longitudeDiffMod360) + \
                  "     PhaseCountTotal: {:.2f}, Phase (of max 30): {:.2f}".\
                  format(longitudeDiff / 12.0, longitudeDiffMod360 / 12.0) + \
                  endl
        else:
            rv += "  {: <16}".format("Diff G." + planetName + ": ") + \
                  "{:>10.3f}".format(longitudeDiff) + \
                  "    or  {:>4} rev + {:>7.3f} deg".format(longitudeDiffFullRevs,
                                                            longitudeDiffMod360) + \
                  endl
            
    rv += endl
        
    for planetName in heliocentricPlanetNames:

        longitudeDiff = getLongitudeDiffBetweenDatetimes(planetName,
                                                         "heliocentric",
                                                         dt1,
                                                         loc1Tuple,
                                                         dt2,
                                                         loc2Tuple)
        longitudeDiffFullRevs = int(longitudeDiff // 360)
        longitudeDiffMod360 = longitudeDiff % 360
        
        rv += "  {: <16}".format("Diff H." + planetName + ": ") + \
              "{:>10.3f}".format(longitudeDiff) + \
              "    or  {:>4} rev + {:>7.3f} deg".format(longitudeDiffFullRevs,
                                                        longitudeDiffMod360) + \
              endl
        
    return rv