Forex Tester 交易策略 - 订单功能的使用

订单的基本就五个功能:

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('止损
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tmlige

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值