Last active
June 18, 2021 06:54
-
-
Save earthchie/0aaeb599fa025dfafe187ba1d09211a4 to your computer and use it in GitHub Desktop.
git clone https://github.com/earthchie/DeFi-SDK ./
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ethers = require('ethers'); | |
const DeFiSDK = require('./defi-sdk/defi-sdk-node'); | |
const DeFi = new DeFiSDK('https://bsc-dataseed.binance.org/', 'your private key or mnemonic keys'); | |
DeFi.loadContracts().then(async () => { | |
console.log('Ready...'); | |
const offset = 5; // in percent | |
let DOP = { | |
balance: 0, | |
now: 0, | |
highest: -1, | |
lowest: 999999 | |
}; | |
let TWIN = { | |
balance: 0, | |
now: 0, | |
highest: -1, | |
lowest: 999999 | |
} | |
let log = ''; | |
let dop_is_transacting = false; | |
let twin_is_transacting = false; | |
DeFi.provider.on('block', async n => { | |
const busd_balance = await DeFi.Tokens.BUSD.balance(); | |
DOP.balance = await DeFi.Tokens.DOP.balance(); | |
TWIN.balance = await DeFi.Tokens.TWIN.balance(); | |
DOP.now = await DeFi.Twindex.DOP_BUSD.price(); | |
TWIN.now = await DeFi.Twindex.TWIN_BUSD.price(); | |
if(DOP.now > DOP.highest){ | |
DOP.highest = DOP.now; | |
} | |
if(DOP.now < DOP.lowest){ | |
DOP.lowest = DOP.now; | |
} | |
if(TWIN.now > TWIN.highest){ | |
TWIN.highest = TWIN.now; | |
} | |
if(TWIN.now < TWIN.lowest){ | |
TWIN.lowest = TWIN.now; | |
} | |
let new_log = ` | |
DOP = ${DOP.now.toFixed(4)} (${DOP.highest.toFixed(4)}/${DOP.lowest.toFixed(4)}) | |
TWIN = ${TWIN.now.toFixed(4)} (${TWIN.highest.toFixed(4)}/${TWIN.lowest.toFixed(4)}) | |
`; | |
if(new_log != log){ | |
log = new_log; | |
console.log(`\nBlock`, n, `| Balance: ${busd_balance.toFixed(4)} BUSD | ${DOP.balance.toFixed(4)} DOP | ${TWIN.balance.toFixed(4)} TWIN`, log); | |
}else{ | |
process.stdout.write('.'); | |
} | |
if(DOP.balance > 0 && DOP.now < (DOP.highest-DOP.highest*offset/100) && !dop_is_transacting){ | |
dop_is_transacting = true; | |
let r = await sellAll(DeFi.Tokens.DOP, DeFi.Twindex.DOP_BUSD); | |
console.log('Sell DOP @ ', DOP.now, r); | |
DOP.highest = DOP.now; | |
DOP.lowest = DOP.now; | |
setTimeout(function(){ | |
dop_is_transacting = false; | |
}, 30000) | |
} | |
if(busd_balance > 0 && DOP.now > (DOP.lowest+DOP.lowest*offset/100) && !dop_is_transacting){ | |
dop_is_transacting = true; | |
let r = await buyAll(DeFi.Tokens.DOP, DeFi.Twindex.DOP_BUSD); | |
console.log('Buy DOP @ ', DOP.now, r); | |
DOP.lowest = DOP.now; | |
DOP.highest = DOP.now; | |
setTimeout(function(){ | |
dop_is_transacting = false; | |
}, 30000) | |
} | |
if(TWIN.balance > 0 && TWIN.now < (TWIN.highest-TWIN.highest*offset/100) && !twin_is_transacting){ | |
twin_is_transacting = true; | |
let r = await sellAll(DeFi.Tokens.TWIN, DeFi.Twindex.TWIN_BUSD); | |
console.log('Sell TWIN @ ', TWIN.now, r); | |
TWIN.highest = TWIN.now; | |
TWIN.lowest = TWIN.now; | |
setTimeout(function(){ | |
twin_is_transacting = false; | |
}, 30000) | |
} | |
if(busd_balance > 0 && TWIN.now > (TWIN.lowest+TWIN.lowest*offset/100) && !twin_is_transacting){ | |
twin_is_transacting = true; | |
let r = await buyAll(DeFi.Tokens.TWIN, DeFi.Twindex.TWIN_BUSD); | |
console.log('Buy TWIN @ ', TWIN.now, r); | |
TWIN.highest = TWIN.now; | |
TWIN.lowest = TWIN.now; | |
setTimeout(function(){ | |
twin_is_transacting = false; | |
}, 30000) | |
} | |
}); | |
}); | |
async function sellAll(Token, Pair){ | |
const approve_amount = ethers.utils.parseUnits('1000000', 18).toString(); | |
try{ | |
await Token.approve(DeFi.contractAddresses.AMM.Twindex.Router, approve_amount); | |
return await Pair.sell(); | |
}catch(e){ | |
console.log('Sell failed. Retrying...', e); | |
return await sellAll(Token, Pair); | |
} | |
} | |
async function buyAll(Token, Pair){ | |
const approve_amount = ethers.utils.parseUnits('1000000', 18).toString(); | |
try{ | |
await Token.approve(DeFi.contractAddresses.AMM.Twindex.Router, approve_amount); | |
return await Pair.buy(); | |
}catch(e){ | |
console.log('Buy failed. Retrying...', e); | |
return await buyAll(Token, Pair); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
$ git clone https://github.com/earthchie/DeFi-SDK ./bot $ cd ./bot $ wget https://gist.githubusercontent.com/earthchie/0aaeb599fa025dfafe187ba1d09211a4/raw/9d6a19819b3171a99e769405220bf7ee74890638/DopBot.js
แล้วใส่ private key/mnemonic key ซะ จากนั้น