コード例 #1
0
ファイル: DataHolder.java プロジェクト: shuyi3/csapp
 public double getTotalFloating() {
   synchronized (PosListLock) {
     if (posList == null) return 0;
     double totalFloating = 0.0;
     for (PosData posData : posList) {
       double floating;
       if (posData.isLongOrShort()) {
         floating = DataHolder.getInstance().getFloating(posData.getInstrumentID(), true);
       } else {
         floating = DataHolder.getInstance().getFloating(posData.getInstrumentID(), false);
       }
       totalFloating += floating;
     }
     return totalFloating;
   }
 }
コード例 #2
0
ファイル: DataHolder.java プロジェクト: shuyi3/csapp
  public void deletePosById(String instrumentId) {

    synchronized (PosListLock) {
      if (posList != null) {

        //			for (PosData posData : posList) {
        //				if (posData.getInstrumentID().equals(instrumentId)) {
        //					posList.remove(posData);
        //					Log.d("push", "deleted" + posData.getInstrumentID());
        //				}
        //			}
        for (Iterator<PosData> iterator = posList.iterator(); iterator.hasNext(); ) {
          PosData nextPos = iterator.next();
          if (nextPos.getInstrumentID().equals(instrumentId)) {
            // Remove the current element from the iterator and the list.
            iterator.remove();
          }
        }
      }
    }
  }
コード例 #3
0
ファイル: DataHolder.java プロジェクト: shuyi3/csapp
  @Nullable
  public PosData getPosData(boolean isLong, String instrumentId) {

    synchronized (PosListLock) {
      for (PosData posData : posList) {
        // System.out.println("pos data:" + posData.getInstrumentID() + "=="
        // + instrumentId);
        if (posData.getInstrumentID().equals(instrumentId)) {
          // System.out.println("pos data: match");
          if (posData.isLongOrShort() == isLong) {
            return posData;
          }

        } else {
          //				System.out.println(posData.getInstrumentID() + " not match " + instrumentId);
        }
      }

      return null;
    }
  }
コード例 #4
0
ファイル: DataHolder.java プロジェクト: shuyi3/csapp
 public double getFloating(String instrumentId, boolean isLong) {
   InsInfo mInfo = getInsInfoMap().get(instrumentId);
   if (mInfo == null) return 0.0;
   StockData lastData = mInfo.getLastData();
   if (lastData == null) return 0.0;
   PosData longPos = getPosData(true, instrumentId);
   PosData shortPos = getPosData(false, instrumentId);
   if (isLong) {
     if (longPos == null) return 0.0;
     double longFloating =
         (lastData.getLastPrice() - longPos.getOpenPrice())
             * longPos.getVolume()
             * getInsInfoMap().get(instrumentId).getMultiplier();
     return longFloating;
   } else {
     if (shortPos == null) return 0.0;
     double shortFloating =
         (shortPos.getOpenPrice() - lastData.getLastPrice())
             * shortPos.getVolume()
             * getInsInfoMap().get(instrumentId).getMultiplier();
     return shortFloating;
   }
 }
コード例 #5
0
ファイル: DataHolder.java プロジェクト: shuyi3/csapp
  public void insertPosData(@NotNull PosData mPosData) {

    synchronized (PosListLock) {
      if (posList == null) return;

      boolean isFound = false;
      for (PosData posData : posList) {
        if (posData.getInstrumentID().equals(mPosData.getInstrumentID())) {
          if (posData.isLongOrShort() == mPosData.isLongOrShort()) {
            posData.setOpenPrice(
                (posData.getOpenPrice() * posData.getVolume()
                        + mPosData.getOpenPrice() * mPosData.getVolume())
                    / (posData.getVolume() + mPosData.getVolume()));
            posData.setVolume(posData.getVolume() + mPosData.getVolume());
            isFound = true;
            Log.d("push", "found " + mPosData.getInstrumentID());
            break;
          }
        }
      }
      if (!isFound) {
        Log.d("push", "added " + mPosData.getInstrumentID());
        posList.add(mPosData);
      }
    }
  }