From d33dff7091c1479cb0e67dda8ba08ffe532c8037 Mon Sep 17 00:00:00 2001 From: Minimons Date: Sun, 19 Jul 2026 16:22:50 +0200 Subject: [PATCH] 33: Create a small dirty hacky functionality for position increase instead of Push Notification --- .../impl/ref/JupiterPerpsAlarmImpl.tjava | 7 +++ ...iterPerpsPositionIncreaseAlarmAction.tjava | 55 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsPositionIncreaseAlarmAction.tjava diff --git a/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsAlarmImpl.tjava b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsAlarmImpl.tjava index 7d5dae4..2c8c5e0 100644 --- a/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsAlarmImpl.tjava +++ b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsAlarmImpl.tjava @@ -1,5 +1,7 @@ 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.impl.anchoridl.AnchorIdlJupiterPerpsServiceImpl; import com.r35157.libs.objcache.ObjectCache; @@ -78,6 +80,11 @@ public final class JupiterPerpsAlarmImpl { List actions = new ArrayList<>(); 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) { actions.add(new PushoverAlarmAction( diff --git a/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsPositionIncreaseAlarmAction.tjava b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsPositionIncreaseAlarmAction.tjava new file mode 100644 index 0000000..8b3553f --- /dev/null +++ b/src/main/tjava/com/r35157/jupiterperpsalarm/impl/ref/JupiterPerpsPositionIncreaseAlarmAction.tjava @@ -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; +}