Commit a6916ffa authored by Ahmad Nemati's avatar Ahmad Nemati

git pu

parent 1ade12e0
......@@ -4,22 +4,19 @@ let ai = require('./ai-new')
let path = 'C:\\yMTa\\Set\\AltSet2\\'
let longSide = 'LONG'
let shortSide = 'SHORT'
let bybit=require('./test_bybit')
let bybit = require('./test_bybit')
let zignaly = require('./zignaly')
let redis = require('redis')
const client = redis.createClient(
{url: 'redis://default:p@db.zignaly.xyz:7001'}
);
let datas = []
let longToken = 'a7d9ab4de89d2717f54182e008f62cd2'
let shortToken = '268267180105f463a69d8933a498fadc'
let longId = 'ETHLONG'
let shortId = 'ETHSHORT'
let datas = [
]
const ccxt = require ('ccxt')
const ccxt = require('ccxt')
const exchange = new ccxt.bybit ({
const exchange = new ccxt.bybit({
apiKey: "7iW1muhWWyX8PxuQWx",
secret: "5Bf4FFISdQNxVJqg5pqyn860CIrgjsXXy3pK",
enableRateLimit: true,
......@@ -29,13 +26,22 @@ const exchange = new ccxt.bybit ({
exchange.urls['api'] = exchange.urls['test'];
init()
async function init() {
client.on('error', (err) => console.log('Redis Client Error', err));
await client.connect();
run()
}
run()
async function run() {
let files = await fs.readdirSync(path)
for (let i = 0; i < files.length; i++) {
if (!files[i].includes('id') )
if (!files[i].includes('id'))
continue
......@@ -48,16 +54,16 @@ async function run() {
let vars = ai.run(data)
let sp=files[i].split('_')
let id=sp[4]
let usage=sp[5]
let value=parseFloat(sp[6])
let sp = files[i].split('_')
let id = sp[4]
let usage = sp[5]
let value = parseFloat(sp[6])
//console.log(vars.VarProfitDrawDownZeroProfit)
datas.push({name: files[i], size: stats.size, vars: vars,id:id,usage:usage,value:value})
datas.push({name: files[i], size: stats.size, vars: vars, id: id, usage: usage, value: (-1 * value)})
}
console.log(datas)
// checker()
// console.log(datas)
checker()
}
......@@ -70,13 +76,14 @@ function grabData(data) {
try {
let d = data[i].split(',')
let profit = parseFloat(d[31])
let runUp = parseFloat(d[34])
let drawDown = parseFloat(d[35])
let profit = parseFloat(d[7])
let runUp = parseFloat(d[8])
let drawDown = parseFloat(d[9])
let closeTime=d[6]
if (isNaN(profit))
continue
arr.push({profit, runUp, drawDown})
arr.push({profit, runUp, drawDown,closeTime})
} catch (e) {
}
......@@ -100,7 +107,7 @@ function grabData(data) {
async function checker() {
let arr = []
// console.log('check')
// console.log('check')
let files = await fs.readdirSync(path)
for (let i = 0; i < files.length; i++) {
......@@ -108,7 +115,6 @@ async function checker() {
continue
arr.push(make(files[i]))
}
await Promise.all(arr)
......@@ -121,7 +127,7 @@ async function make(name) {
let size = getSizeFromName(name)
if (size !== stats.size) {
// console.log(name + ' changes')
// console.log(name + ' changes')
updateSizeFromName(name, stats.size)
await updateVars(name)
}
......@@ -133,61 +139,172 @@ async function make(name) {
async function updateVars(name) {
let lastFile = await fs.readFileSync(path + name, 'utf8')
lastFile = lastFile.split('\n')
// console.log([lastFile[lastFile.length-2]])
let lastData = lastFile[lastFile.length - 2]
let id=name.split('_')[3].replace('id','')
id=parseInt(id)/100
let qty=0.01
// if (name.includes('id1'))
// qty=0.01
// else if (name.includes('id2'))
// qty=0.02
// else if (name.includes('id3'))
// qty=0.03
// else if (name.includes('id4'))
// qty=0.04
// else if (name.includes('id5'))
// qty=0.05
// else if (name.includes('id6'))
// qty=0.05
if (lastData.includes('Buy')) {
// bybit.reduceOrder('Buy',qty)
exchange.createMarketOrder('ETHUSDT','Buy',qty,0)
// zignaly.exitAndCanlcelAll(longToken, 'ETHUSDT', longId)
// zignaly.createNewOrderNew(shortToken,'ETH',shortSide,5,shortId)
} else {
// bybit.reduceOrder('Sell',qty)
exchange.createMarketOrder('ETHUSDT','Sell',qty,0)
// zignaly.exitAndCanlcelAll(shortToken, 'ETHUSDT', shortId)
// zignaly.createNewOrderNew(longToken,'ETH',longSide,5,longId)
}
let qty = 0.01
let sig = ''
let allData = getAllFromName(name)
if (lastData.includes('Buy'))
sig = allData.id + '_Buy'
else
sig = allData.id + '_Sell'
closer(sig)
let data = grabData([lastData])
// console.log(data)
let vars = ai.run(data, getVarsFromName(name))
// console.log('VarProfitDrawDownZeroProfit :', vars.VarProfitDrawDownZeroProfit)
if (lastData.includes('Buy')) {
console.log('Buy:'+name)
// bybit.createNewOrder('Buy',qty)
exchange.createMarketOrder('ETHUSDT','Buy',qty,0,{reduceOnly:true})
// zignaly.createNewOrderNew(shortToken, 'ETH', shortSide, 7, shortId)
} else {
console.log('Sell:'+name)
exchange.createMarketOrder('ETHUSDT','Sell',qty,0,{reduceOnly:true})
//bybit.createNewOrder('Sell',qty)
// zignaly.createNewOrderNew(longToken, 'ETH', longSide, 7, longId)
}
if (vars.VarProfitDrawDownZeroProfit < -0.01) {
let varUsage=getVarFromUsage(vars,allData.usage)
if (varUsage < allData.value)
{
console.log(allData.id +' '+'Try Add usage:'+allData.usage +' with current var '+varUsage +' and less than '+allData.value)
if (lastData.includes('Buy'))
sig = allData.id + 'Sell'
else
sig = allData.id + 'Buy'
adder(sig,0.01,data.closeTime)
}
// console.log(name,vars)
updateVarsFromName(name, vars)
}
function getVarFromUsage(vars,usage)
{
if (usage === 'fft') {
return vars.countDrop
} else if (usage === 'ddPlusRunCount') {
return vars.drawDownPlusRunUpCount
} else if (usage === 'ProfitZeroProfit') {
return vars.allLossProfit
} else if (usage === 'RunupDrawDownZeroRunupDrawDown') {
return vars.drawDownPlusRunUpPercent
} else if (usage === 'ProfitZeroDrawDown') {
return vars.ProfitZeroDrawDownPercent
} else if (usage === 'fftRunup') {
return vars.countDropRunup
} else if (usage === 'ProfitZeroDrawDownProfit') {
return vars.diffDrawdownProfitAll
} else if (usage === 'ProfitZeroProfitRunup') {
return vars.canCreateRunupPercent
} else if (usage === 'ProfitZeroRunupProfit') {
return vars.VarProfitZeroRunupProfit
} else if (usage === 'ProfitZeroRunupDrawDown') {
return vars.VarProfitZeroRunupDrawDown
} else if (usage === 'RunUpDrawDownZeroProfit') {
return vars.RunUpDrawDownAllLossProfit
} else if (usage === 'RunUpDrawDownZeroDrawDownProfit') {
return vars.RunupDrawDownDiffDrawdownProfitAll
} else if (usage === 'RunUpDrawDownZeroDrawdown') {
return vars.runUpDrawDownZeroDrawDownPercent
} else if (usage === 'RunUpDrawDownZeroRunupProfit') {
return vars.VarDrawDownZeroProfit
} else if (usage === 'RunupZeroRunupDrawDown') {
return vars.VarRunupZeroRunupDrawDown
} else if (usage === 'RunupZeroProfit') {
return vars.VarRunupZeroProfit
} else if (usage === 'RunupZeroProfitDrawDown') {
return vars.VarRunupZeroProfitDrawDown
} else if (usage === 'RunupZeroDrawDown') {
return vars.VarRunupZeroDrawDown
} else if (usage === 'RunupZeroProfitRunup') {
return vars.VarRunupZeroProfitRunup
} else if (usage === 'DrawDownZeroDrawDown') {
return vars.VarDrawDownZeroDrawDown
} else if (usage === 'DrawDownnZeroProfit') {
return vars.VarDrawDownnZeroProfit
} else if (usage === 'DrawDownZeroProfitDrawDown') {
return vars.VarDrawDownZeroProfitDrawDown
} else if (usage === 'DrawDownZeroProfitRunup') {
return vars.VarDrawDownZeroProfitRunup
} else if (usage === 'DrawDownZeroRunupDrawDown') {
return vars.VarDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitDrawDownZeroDrawDown') {
return vars.VarProfitDrawDownZeroDrawDown
} else if (usage === 'ProfitDrawDownZeroProfit') {
return vars.VarProfitDrawDownZeroProfit
} else if (usage === 'ProfitDrawDownZeroProfitDrawDown') {
return vars.VarProfitDrawDownZeroProfitDrawDown
} else if (usage === 'ProfitDrawDownZeroProfitRunup') {
return vars.VarProfitDrawDownZeroProfitRunup
} else if (usage === 'ProfitDrawDownZeroRunupDrawDown') {
return vars.VarProfitDrawDownZeroRunupDrawDown
} else if (usage === 'ProfitRunupZeroDrawDown') {
return vars.VarProfitRunupZeroDrawDown
} else if (usage === 'ProfitRunupZeroProfit') {
return vars.VarProfitRunupZeroProfit
} else if (usage === 'ProfitRunupZeroProfitDrawDown') {
return vars.VarProfitRunupZeroProfitDrawDown
} else if (usage === 'ProfitRunupZeroProfitRunup') {
return vars.VarProfitRunupZeroProfitRunup
} else if (usage === 'ProfitRunupZeroRunupDrawDown') {
return vars.VarProfitRunupZeroRunupDrawDown
}
}
async function closer(sig) {
const [data, delStatus] = await client
.multi()
.get(sig)
.del(sig)
.exec();
if (delStatus !== 1) {
console.log('Cant Find '+sig +' in db So dont try reduce')
return
}
let qty = JSON.parse(data)
qty = qty.qty
if (sig.includes('Buy')) {
exchange.createMarketOrder('ETHUSDT', 'Sell', qty, 0, {reduceOnly: true})
} else {
exchange.createMarketOrder('ETHUSDT', 'Buy', qty, 0, {reduceOnly: true})
}
}
async function adder(sig, qty,date) {
let lastToken=sig+'_'+date
if (sig.includes('Buy')) {
let d = await exchange.createMarketOrder('ETHUSDT', 'Buy', qty, 0,{order_link_id:lastToken})
if (d.id) {
const [add] = await client
.multi()
.set(sig, JSON.stringify({qty: qty}))
.exec();
}
} else {
let d = exchange.createMarketOrder('ETHUSDT', 'Sell', qty, 0,{order_link_id:lastToken})
if (d.id) {
const [add] = await client
.multi()
.set(sig, JSON.stringify({qty: qty}))
.exec();
}
}
}
function getVarsFromName(name) {
for (let i = 0; i < datas.length; i++)
......@@ -201,6 +318,12 @@ function getSizeFromName(name) {
return datas[i].size
}
function getAllFromName(name) {
for (let i = 0; i < datas.length; i++)
if (datas[i].name === name)
return datas[i]
}
function updateVarsFromName(name, vars) {
for (let i = 0; i < datas.length; i++)
......
......@@ -14,8 +14,9 @@ exchange.urls['api'] = exchange.urls['test'];
async function test () {
const orders = await exchange.createMarketOrder('ETHUSDT','Buy',0.1,0,{position_idx:1})
//fc33a4ce-2f89-486c-9f77-f52ab452f53b
const orders = await exchange.createMarketOrder('ETHUSDT','Buy',1,0)
console.log(orders)
......
// let t='Num.,OpClOrds,MaxTotOpOrdNo,MaxEffOpLot,prfpDmddp,MddInPc,PrfInPc,PrfVal,InvprfpDmddp,InvMddInPc,InvPrfInPc,InvPrfVal,AnyDirPrf,PPST1_stMnBarAge,PPST1_PvtPtPeriod,PPST1_AtrFactor,PPST1_AtrPeriod,PPST2_stMnBarAge,PPST2_PvtPtPeriod,PPST2_AtrFactor,PPST2_AtrPeriod,nEntSignalCodeNum,3crm_nStopLoss_AtrPeriod,3crm_dStopLoss_AtrRiskAdjustmentCoef,3crm_nStopLoss_SwingLookbackBarNo,3crm_bUseTrailingStopLoss,3crm_enumTrailSlRef,3crm_dTrailSlAtrMultiplier,m_nToUseSym0MinSpreadPip,nInitTpPip_Sym1_Tgt1,nInitSlPip_Sym1_Tgt1,stMnRefHopAge,nAllTmMktTrEntNum,nAftLkbkTmMktTrEntNum,dToClAllSsAndRestartImd_ReqEqIncPc,SimCp1_dToClAllSsAndRestartImd_ReqEqIncPc,nByReqEgIncPcClAllSsNum,PrfPips_BestTpSl,Tp_BestTpSl,Sl_BestTpSl,InvPrfPips_BestTpSl,Tp_InvBestTpSl,Sl_InvBestTpSl, dTkSimStEquityUsd,bUpDirEntEnabled,bDnDirEntEnabled,dFixedOrdLot,dRiskPercentForLot,nMaxAnyDirOrdNo,nMaxOneDirOrdNo,nTkSimOrdExecHaltAgeMsecNo,bUseOrdExecHaltAgeForOrdClosing,bInverseEntSig,bClOppDirOrds,TotOpClLot,TotOpB_ClLot,TotOpS_ClLot,ProcTickNo,RealSsNo,PrfRealSsNo,LssRealSsNo,PotSsCnt,OpB_ClNo,OpS_ClNo,hOrds,MaxOpBuyyLots,MaxOpBuyyLots_Fr,MaxOpBuyyLots_To,MaxOpSellLots,MaxOpSellLots_Fr,MaxOpSellLots_To,MaxTotAccsEq,MaxTotAccsEq_MinusStEq,MaxTotAccsEq_Fr,MaxTotAccsEq_To,MinTotAccsEq,MinTotAccsEq_MinusStEq,MinTotAccsEq_Fr,MinTotAccsEq_To,MaxTotOpOrdNo_Fr,MaxTotOpOrdNo_To,MaxEffOpLot_Fr,MaxEffOpLot_To,MddInVal,StEq,Mdd_EqUto,Mdd_EqUto_mSt,Mdd_EqDto,Mdd_EqDto_mSt,MddTm_Fr,MddTm_To,InvMddInVal,StEq,InvMdd_EqUto,InvMdd_EqUto_mSt,InvMdd_EqDto,InvMdd_EqDto_mSt,InvMddTm_Fr,InvMddTm_To,dtTrLookBackStTime_Str,dtTrStTime_Str,dtTrEnTime_Str,SimRgAgeStr,SufxStr'
//
// t=t.split(',')
// for (let i=0;i<t.length;i++)
// console.log(i,t[i])
let t='Ticket,Open_Time,Type,Symbol,Open_Price,Close_Price,Close_Time,dPrfPipWrtOpPrPc,dAgeHiPrfInPrPc_RunUpPc,dAgeLoPrfInPrPc_DrawDownPc'
t=t.split(',')
for (let i=0;i<t.length;i++)
console.log(i,t[i])
// let t='last.json-220217122835_O1_BNC_ETHUSDT_Lp3191_1ETH1.csv'
......@@ -18,9 +17,9 @@
//
// let header=''
let t='220524120420_O1_ETHUSDT_Lp3_id3_ProfitZeroProfit_0.3_ETH.csv'
let sp=t.split('_')
let id=sp[4]
let usage=sp[5]
let value=parseFloat(sp[6])
console.log(id,usage,value)
// let t='220524120420_O1_ETHUSDT_Lp3_id3_ProfitZeroProfit_0.3_ETH.csv'
// let sp=t.split('_')
// let id=sp[4]
// let usage=sp[5]
// let value=parseFloat(sp[6])
// console.log(id,usage,value)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment