我之前使用的是指标消息。 做法是在每一个警报的消息设置中写入OpenLong 、 OpenShort,然后发送到FMZ机器人执行。
这样是OK的
现在使用策略发送消息,
TradingView的代码是
// 警报消息
var string Message_open_long = input.string('OpenLong', '开多消息', group = '===================exit警报=======================', tooltip = '如果“创建警报”对话框的“消息”字段包含{{strategy.order.alert_message}}占位符,则警报消息将用此文本替换占位符。')
var string Message_open_short = input.string('OpenShort', '开空消息', group = '===================exit警报=======================', tooltip = '如果“创建警报”对话框的“消息”字段包含{{strategy.order.alert_message}}占位符,则警报消息将用此文本替换占位符。')
var string Message_close_long = input.string('CloseLong', '平多消息', group = '===================exit警报=======================', tooltip = '如果“创建警报”对话框的“消息”字段包含{{strategy.order.alert_message}}占位符,则警报消息将用此文本替换占位符。')
var string Message_close_short = input.string('CloseShort', '平空消息', group = '===================exit警报=======================', tooltip = '如果“创建警报”对话框的“消息”字段包含{{strategy.order.alert_message}}占位符,则警报消息将用此文本替换占位符。')
////////========开仓处理==========//////////////
if (Open_long or Open_short) and barstate.isconfirmed
Trade_vol := Trade_type == '合约' ? 1000 : 1000 / close // 设定交易量
// 开多
if Open_long
strategy.entry('Long'
, strategy.long
, qty = Trade_vol
, alert_message = Message_open_long // 订单成交时发送的警报内容
)
State_position := 1
// 开空
if Open_short
strategy.entry('Short'
, strategy.short
, qty = Trade_vol
, alert_message = Message_open_short // 订单成交时发送的警报内容
)
State_position := 0
然后在警报设置中使用{{strategy.order.alert_message}}方法
FMZ平台接收到了消息,但是不开单
请教一下这个问题是什么原因导致的,如何解决?
以下是FMZ代码
switch (command) {
case 'OpenLong': // 开多单
_OpenPositions(1, 0, positions, account, ticker);
break;
case 'OpenShort': // 开空单
_OpenPositions(0, 1, positions, account, ticker);
break;
case 'CloseLong': // TV信号平多
if (positions.length > 0) {
if (positions[0].Type === PD_LONG) {
_Cover_1(); // 快速平仓
_ResetVariables(); // 重置运算变量
_CalculateProfit(positions, account, ticker); // 统计收益
} else {
Log('当前持有空头仓位');
}
}
else {
Log('没有持仓,无法平多');
}
break;
case 'CloseShort': //TV信号平空
if (positions.length > 0) {
if (positions[0].Type === PD_SHORT) {
_Cover_1(); // 快速平仓
_ResetVariables(); // 重置运算变量
_CalculateProfit(positions, account, ticker); // 统计收益
} else {
Log('当前持有多头持仓');
}
} else {
Log('没有持仓,无法平空');
}
break;
default:
break;
}