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
Post a Comment