复制 //@version=5
indicator('MACD Sample Script 2', overlay=true)
// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// Define the golden cross condition
buySignal = ta.crossover(macdLine, signalLine)
// Define the death cross condition
sellSignal = ta.crossunder(macdLine, signalLine)
// Function to generate custom JSON payload
get警报信息(action, instrument, signalToken, orderType, orderPriceOffset, investmentType, amount) =>
str = '{'
str := str + '"action": "' + action + '", '
str := str + '"instrument": "' + instrument + '", '
str := str + '"signalToken": "' + signalToken + '", '
str := str + '"timestamp": "' + str.tostring(timenow) + '", '
str := str + '"orderType": "' + orderType + '", '
str := str + '"orderPriceOffset": "' + str.tostring(orderPriceOffset) + '", '
str := str + '"investmentType": "' + investmentType + '", '
str := str + '"amount": "' + str.tostring(amount) + '"'
str := str + '}'
str
var ALERTGRP_CRED = "BitFrog Alert - Credential"
signalToken = input("", "Signal Token", inline = "11", group = ALERTGRP_CRED)
var ALERTGRP_ENTER = "BitFrog Alert - ENTER Signal"
enterOrderType = input.string("market", "Order Type", options = ["market", "limit"], inline = "21", group = ALERTGRP_ENTER)
enterOrderPriceOffset = input.float(0, "Order Price Offset", minval = 0, maxval = 100, step = 0.01, inline = "21", group = ALERTGRP_ENTER)
enterInvestmentType = input.string("percentage_balance", "Investment Type", options = ["margin", "contract", "percentage_balance", "percentage_investment"], inline = "31", group = ALERTGRP_ENTER)
enterAmount = input.float(100, "Amount", minval = 0.01, inline = "31", group = ALERTGRP_ENTER)
var ALERTGRP_EXIT = "BitFrog Alert - EXIT Signal"
exitOrderType = input.string("market", "Order Type", options = ["market", "limit"], inline = "41", group = ALERTGRP_EXIT)
exitOrderPriceOffset = input.float(0, "Order Price Offset", minval = 0, maxval = 100, step = 0.01, inline = "41", group = ALERTGRP_EXIT)
exitInvestmentType = input.string("percentage_position", "Investment Type", options = ["percentage_position"], inline = "51", group = ALERTGRP_EXIT)
exitAmount = input.float(100, "Amount", minval = 0.01, maxval = 100, step = 0.01, inline = "51", group = ALERTGRP_EXIT)
if buySignal
buy警报信息 = get警报信息(action = 'open_long', instrument = syminfo.ticker, signalToken = signalToken, orderType = enterOrderType, orderPriceOffset = enterOrderPriceOffset, investmentType = enterInvestmentType, amount = enterAmount)
alert(buy警报信息, freq = alert.freq_once_per_bar)
if sellSignal
sell警报信息 = get警报信息(action='close'/action='open_short', instrument = syminfo.ticker, signalToken = signalToken, orderType = exitOrderType, orderPriceOffset = exitOrderPriceOffset, investmentType = exitInvestmentType, amount = exitAmount)
alert(sell警报信息, freq = alert.freq_once_per_bar)