Skip to main content

can anyone help me Convert this typescript script to php, new to typescript

Basically i am creating a trading script in php , i have done almost 80% work , i need to convert this typescript or javascript code to php , iam a native php user and not so familier with javascript, i tried it multiple errors but i failed , please help me

Exchange class-

export type Balance = Record<string, number>;

export enum OrderSide {
  BUY = "BUY",
  SELL = "SELL",
}

export interface OrderConfig {
  side: OrderSide;
  pair: string;
  amount: number;
  price: number;
}

export class Exchange {
  public async getBalance(): Promise<Balance>;

  public async createOrder(config: OrderConfig);

  public async getAllPrices(): Promise<Record<string, number>>;
}

main code-

import { Exchange, OrderSide } from "./Exchange";

export interface BotConfig {
  pair: string;
}

export interface GridLine {
  active: boolean;
  price: number;
  side: OrderSide;
}

export default class GridBot {
  private MAX_QUOTE_ASSET_AMOUNT = 200;

  constructor(public config: BotConfig, private gridLines: GridLine[], private exchange: Exchange) {}

  private manageOrder(side: OrderSide, price: number): Promise<void> {
    const amount = this.MAX_QUOTE_ASSET_AMOUNT / price;
    return this.exchange.createOrder({ pair: this.config.pair, side, amount, price });
  }

  private updateGridLinesAfterDecision(index: number) {
    this.gridLines[index].active = false;

    for (let i = 0, il = this.gridLines.length; i < il; ++i) {
      if (i > index) {
        this.gridLines[i].active = true;
        this.gridLines[i].side = OrderSide.SELL;
      } else if (i < index) {
        this.gridLines[i].active = true;
        this.gridLines[i].side = OrderSide.BUY;
      }
    }
  }

  private decide(lastPrice: number): OrderSide | undefined {
    // check if price is below-min/over-high => disable or recalibrate

    // check buy
    for (let i = 0, il = this.gridLines.length; i < il; ++i) {
      const { active, side, price } = this.gridLines[i];

      if (active && side === OrderSide.BUY && lastPrice <= price) {
        this.updateGridLinesAfterDecision(i);
        return OrderSide.BUY;
      }
    }

    // check sell
    for (let i = this.gridLines.length - 1; i >= 0; --i) {
      const { active, side, price } = this.gridLines[i];

      if (active && side === OrderSide.SELL && lastPrice >= price) {
        this.updateGridLinesAfterDecision(i);
        return OrderSide.SELL;
      }
    }
  }

  public async execute(lastPrice: number) {
    const side = this.decide(lastPrice);
    if (side) {
      await this.manageOrder(side, lastPrice);
    }
  }
}

please explain me how it works , or how it executes , Thanks

Via Active questions tagged javascript - Stack Overflow https://ift.tt/iBCHoGU

Comments

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console