33: Create a small dirty hacky functionality for position increase instead of Push Notification

This commit is contained in:
2026-08-05 10:12:38 +02:00
parent 6a352e90e9
commit d33dff7091
2 changed files with 62 additions and 0 deletions
@@ -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(
@@ -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;
}