33: Create a small dirty hacky functionality for position increase instead of Push Notification
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.r35157.jupiterperpsalarm.impl.ref;
|
package com.r35157.jupiterperpsalarm.impl.ref;
|
||||||
|
|
||||||
|
import com.r35157.cryptowallet.solana.SolanaWallet;
|
||||||
|
import com.r35157.cryptowallet.solana.impl.ref.SolanaWalletImpl;
|
||||||
import com.r35157.libs.jupiter.perps.JupiterPerpsService;
|
import com.r35157.libs.jupiter.perps.JupiterPerpsService;
|
||||||
import com.r35157.libs.jupiter.perps.impl.anchoridl.AnchorIdlJupiterPerpsServiceImpl;
|
import com.r35157.libs.jupiter.perps.impl.anchoridl.AnchorIdlJupiterPerpsServiceImpl;
|
||||||
import com.r35157.libs.objcache.ObjectCache;
|
import com.r35157.libs.objcache.ObjectCache;
|
||||||
@@ -78,6 +80,11 @@ public final class JupiterPerpsAlarmImpl {
|
|||||||
|
|
||||||
List<AlarmAction> actions = new ArrayList<>();
|
List<AlarmAction> actions = new ArrayList<>();
|
||||||
actions.add(new ConsoleAlarmAction());
|
actions.add(new ConsoleAlarmAction());
|
||||||
|
SolanaBlockChain sbc = new SolanaBlockChainImpl();
|
||||||
|
JupiterPerpsService jupiter = new AnchorIdlJupiterPerpsServiceImpl(sbc);
|
||||||
|
ΩSolanaWalletIdΩ walletId = "vj98roDZ7744EBfxyuDFkKpEGCsKQLr7K8UFRumJNHf";
|
||||||
|
SolanaWallet wallet = new SolanaWalletImpl(walletId, "evelyn-prod", sbc);
|
||||||
|
actions.add(new JupiterPerpsPositionIncreaseAlarmAction(wallet, jupiter));
|
||||||
|
|
||||||
if (config.pushoverToken() != null && config.pushoverUserKey() != null) {
|
if (config.pushoverToken() != null && config.pushoverUserKey() != null) {
|
||||||
actions.add(new PushoverAlarmAction(
|
actions.add(new PushoverAlarmAction(
|
||||||
|
|||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
package com.r35157.jupiterperpsalarm.impl.ref;
|
||||||
|
|
||||||
|
import com.r35157.cryptowallet.solana.SolanaWallet;
|
||||||
|
import com.r35157.libs.jupiter.perps.JupiterPerpsPositionDirection;
|
||||||
|
import com.r35157.libs.jupiter.perps.JupiterPerpsService;
|
||||||
|
import com.r35157.libs.solana.SolanaSignedTransaction;
|
||||||
|
import com.r35157.libs.solana.SolanaUnsignedTransaction;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
public final class JupiterPerpsPositionIncreaseAlarmAction implements AlarmAction {
|
||||||
|
public JupiterPerpsPositionIncreaseAlarmAction(SolanaWallet wallet, JupiterPerpsService jupiter) {
|
||||||
|
this.wallet = wallet;
|
||||||
|
this.jupiter = jupiter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void trigger(OraclePrice price, ResolvedPriceAlarm alarm) {
|
||||||
|
ΩUSDCAmountΩ inputTokenAmount = new ΩUSDCAmountΩ("0.25");
|
||||||
|
ΩUSDCAmountΩ sizeUsdDelta;
|
||||||
|
|
||||||
|
if(alarm.id() == 4) {
|
||||||
|
// Critical
|
||||||
|
sizeUsdDelta = new ΩUSDCAmountΩ("2.50"); // Leverage: 10x
|
||||||
|
} else if(alarm.id() == 5) {
|
||||||
|
// Info
|
||||||
|
sizeUsdDelta = new ΩUSDCAmountΩ("6.25"); // Leverage: 25x
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
SolanaUnsignedTransaction utrans =
|
||||||
|
jupiter.buildPositionIncreaseTransaction(
|
||||||
|
wallet.getAddress(),
|
||||||
|
SOL_MINT,
|
||||||
|
JupiterPerpsPositionDirection.LONG,
|
||||||
|
inputTokenAmount,
|
||||||
|
sizeUsdDelta,
|
||||||
|
200
|
||||||
|
);
|
||||||
|
SolanaSignedTransaction strans = wallet.signTransaction(utrans);
|
||||||
|
ΩSolanaTransactionSignatureΩ signature = jupiter.executePositionIncreaseTransaction(strans);
|
||||||
|
System.out.println("Position Increase Signature: " + signature);
|
||||||
|
} catch(Exception e) {
|
||||||
|
System.err.println("EXCEPTION: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ΩSPLMintAddressΩ SOL_MINT = "So11111111111111111111111111111111111111112";
|
||||||
|
private static final ΩSPLMintAddressΩ BTC_MINT = "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh";
|
||||||
|
|
||||||
|
private SolanaWallet wallet;
|
||||||
|
private JupiterPerpsService jupiter;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user