订单的基本就五个功能:
SendInstantOrder - 发送即时市价买卖订单
SendPendingOrder - 发送挂单(如限价买入,止损买入,限价卖出,止损卖出)
ModifyOrder - 修改订单,如更改止损/止赢,或未完成订单的价格。7
CloseOrder - 关闭订单
DeleteOrder - 删除已挂起的订单
继续使用上一节的代码演示订单功能,每天早上8点发送即时市价单:
a.先将策略名更新
StrategyShortName('8点开仓'); //策略名
StrategyDescription('每天8点开仓'); //策略简短描述
b.在外部定义一个参数- Currency,以确认哪个交易标的使用此策略:
var
Currency: PChar;
...
RegOption('Currency', ot_Currency, Currency);
c.我们将在 GetSingleTick 过程中添加以下几行。 在GetSingleTick里会收到了所有的价格变化。
procedure GetSingleTick; stdcall;
var
time: TDateTime;
OrderHandle: Integer;
begin
//检查是否是我们交易的标的。Symbol是一个函数,它返回当前标的(货币)的名称。
//如果它不是设定的标的,就退出GetSingleTick,什么也不做。
if symbol <> Currrency then
exit;
//获取当前时间作为标的最后 1 分钟时间。
time:= iTime(Symbol, PERIOD_M1,0);
//使用 HourOf(time) 函数检查当前时间是否为上午 8 点
//(该函数和其他处理时间的函数位于 DateUtils 模块中,我们将其添加到“uses”声明中)
// 以及未平仓和未完成的订单为0时下单
if (HourOf(time) = 8) and (OrdersTotal = 0) then
SendInstantOrder(Symbol, op_Buy, 0.1, Ask - 100*Point, Ask + 50*Point, '', 0, OrderHandle);
完整的代码如下:
library DemoStrategy;
uses
SysUtils, StrategyInterfaceUnit, TechnicalFunctions,DateUtils;
// 外部参数
var
Delta: double = 3.46;
StopLoss: integer = 20;
Day: longword = 7;
UseStopLoss: boolean = true;
List: Integer = 0;
Currency: PChar;
SomeInfo: PChar;
procedure InitStrategy; stdcall;
begin
StrategyShortName('8点开仓'); //策略名
StrategyDescription('每天8点开仓'); //策略简短描述
RegOption('Delta', ot_Double, Delta); // 创建参数(名称,类型,选项)
RegOption('止损

最低0.47元/天 解锁文章
1175

被折叠的 条评论
为什么被折叠?



