开拓者期货期权程序化系统交易论坛

标题: buy、sell指令发单,现在改为使用A_SendOrder发单的问题 [打印本页]

作者: zhanghualawyer    时间: 2019-4-23 16:43:47     标题: buy、sell指令发单,现在改为使用A_SendOrder发单的问题

一、账户无持仓时的开仓
If( (A_TotalPosition == 0 )&&( CurrentBar != 0)&&( CurrentBar != 1))  //账户无持仓时
{
If(High > LineHi)
        {
         myEntryPrice = min(high, LineHi + MinPoint);
         If( Open> myEntryPrice) myEntryPrice = Open;   // 大跳空的时候用开盘价代替
         A_SendOrder(Enum_Buy,Enum_Entry,Units, myEntryPrice);
        }
  If(Low < LineLo)
        {
        myEntryPrice = max(low, LineLo - MinPoint);
       If( Open< myEntryPrice) myEntryPrice = Open;    // 大跳空的时候用开盘价代替
        A_SendOrder(Enum_Sell,Enum_Entry,Units, myEntryPrice);
}  
}
二、账户持仓时的平仓   

If( (A_BuyPosition > 0) &&(Barssinceentry>=0) )  //持多仓的情况且开仓bar及以后
{
     If(Low < ExitLowestPrice)
          {
          myExitPrice = ExitLowestPrice- MinPoint;
          If( Open< myExitPrice) myExitPrice= Open;    // 大跳空的时候用开盘价代替
         A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),myExitPrice) ;
          }
} Else  if ( (A_SellPosition >0) &&(Barssinceentry>=0) )  //持空仓的情况且开仓bar及以后
{
      If(High > ExithighestPrice)
       {
        myExitPrice = ExithighestPrice+ MinPoint;
        If( Open> myExitPrice) myExitPrice= Open;   // 大跳空的时候用开盘价代替
       A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition(),myExitPrice);   
       }
}


之前用buy、sell指令发单,现在改为使用A_SendOrder发单
弄了好长时间还有许多不懂的地方,有几个问题请教下:
1、Params和Vars里都是原来buy、sell指令发单的程序,没有改动,Params里是否需要添加声明?Vars里是否需要添加声明?
2、CurrentBar ,barssinceentry ,ATR,MA,myentryprice,myExitPrice这几个在A_SendOrder发单程序里能用么?
3、判断有无持仓、多头仓、空头仓是否正确?
4、看了教程后,不会用GetGlobalVar ,SetGlobalVar控制频繁发单,在语句中怎么添加?麻烦给个示例(我的思路是只要是无持仓就开仓,且只开一次仓,中间没有加仓减仓,只要有持仓就不能再开仓了,平仓也是所有持仓一次全部平掉,我只交易一个品种的主力合约,且只可能存在同一方向上的持仓)
5、        A_SendOrder里开仓指令、平仓指令对不对?不用Q_AskPrice()和Q_BidPrice()而用myEntryPrice、myExitPrice可以么?
6、High、Low最高最低价是否需要换成close(最新价)?
7、使用A_SendOrder发单是否可以解决用buy、sell指令的时候,开仓bar上不开仓的问题?


作者: zhanghualawyer    时间: 2019-4-23 17:50:29

请版主回答一下吧,谢谢!
作者: 小米    时间: 2019-4-24 08:40:02

A函数不是这么写的。。。
为什么要使用A函数呢?是什么样的需求使用BUY,SELL不能实现吗?
作者: zhanghualawyer    时间: 2019-4-24 09:53:25

小米 发表于 2019-4-24 08:40
A函数不是这么写的。。。
为什么要使用A函数呢?是什么样的需求使用BUY,SELL不能实现吗? ...

1、我必须一直用账户里的可用资金的固定百分比计算仓位并且下单,BUY,SELL取不到账户里实际资金的比例
2、并且由于marketposition的原因平仓bar上无法开仓。
最主要是因为第一点。
作者: 小米    时间: 2019-4-24 10:00:51

zhanghualawyer 发表于 2019-4-24 09:53
1、我必须一直用账户里的可用资金的固定百分比计算仓位并且下单,BUY,SELL取不到账户里实际资金的比例
2 ...

好的。那您就全部使用A函数来写策略吧。。
从条件到指令都是用A,而不是简单地将buy,sell换成a_sendorder就完事了。。
之前 的marketposition,barssinceentry,等函数都不适用于A函数的策略中。。
另外,A函数的属性与图表指令不同。。其只在最后K线能取到有效值 ,且下单需要进行判断持仓的判断以及配合全局变量的控制 ,以避免重复发单 。。
建议要对 A函数有系统的了解后再进行运用。。
您这个代码需要修改的地方还比较多呢。。
作者: zhanghualawyer    时间: 2019-4-24 10:01:08

小米 发表于 2019-4-24 08:40
A函数不是这么写的。。。
为什么要使用A函数呢?是什么样的需求使用BUY,SELL不能实现吗? ...

能否在我发的基础上修改下?教程一直听也听不懂
作者: 小米    时间: 2019-4-24 10:09:32

zhanghualawyer 发表于 2019-4-24 10:01
能否在我发的基础上修改下?教程一直听也听不懂

您这个,真没法改。。
作者: zhanghualawyer    时间: 2019-4-24 10:14:01

小米 发表于 2019-4-24 10:09
您这个,真没法改。。

哦,有没有一个A函数的完整例子,比如海龟法则或其他?我看看别人的例子是怎么写的,另外下载的书里我看好多遍也不太明白,有没有对A函数程序完整的讲解视频?
作者: zhanghualawyer    时间: 2019-4-24 10:56:25

小米 发表于 2019-4-24 10:09
您这个,真没法改。。

再请问下您,用A函数编程序能不能用   当前K线之前的300根k线的的收盘价   ?如果不能用,则A函数编程序就不弄了
作者: alantop    时间: 2019-4-24 23:57:10

可以实现
作者: ayi1me    时间: 2019-5-3 21:05:01

A函数主要用于数据流的交易方式,你这图表策略完全不适合用A函数发单,用A函数发单,除了全局变量的控制,还要考虑撤单,BIDPRICE ASKPRICE,是否重发单,什么时候重发单等等等的问题。
好好的图表策略就用BUY SELL就好了,TB的交易助手,滑点,头寸监控等等系统,都稳稳的把图表策略控制好了,安全稳定高效,还搞毛A函数。我不是要开发高频策略,我都不搞A函数。
也就是说,A函数不是目前这个级别用的。
作者: zhanghualawyer    时间: 2019-5-8 20:09:49

ayi1me 发表于 2019-5-3 21:05
A函数主要用于数据流的交易方式,你这图表策略完全不适合用A函数发单,用A函数发单,除了全局变量的控制, ...

感谢你的回复。
我的策略非常简单,只做一个品种的主力合约,只做5分钟K,对于近期若干年历史数据每笔全部EXCEL手工测试过,所以没有优化一说,开平仓依据也是基于前期K线的四个价格加减乘除得到了,buy、sell指令发单都能做了,可我的策略里仓位控制才是最重要的,说白了极其简单,每一次开仓都是真实账户可用金额的50%计算,每天平均交易3次,开平算一次,无加仓,持仓只可能有一个方向。buy、sell指令和账户真实资金连不起来,交易中间手工干预仓位也不是长久之计,所以考虑A函数,谁知道后期如此麻烦
作者: CFXQM    时间: 2019-5-8 23:59:31

本帖最后由 CFXQM 于 2019-5-9 10:49 编辑

Buy(Numeric Share=0,Numeric Price=0),你只要Share用真实可用资金计算不就行了吗?
A_FreeMargin() 获取账户的可用金额
Share =A_FreeMargin() /2/.....
作者: zhanghualawyer    时间: 2019-5-9 11:00:56

CFXQM 发表于 2019-5-8 23:59
Buy(Numeric Share=0,Numeric Price=0),你只要Share用真实可用资金计算不就行了吗?
A_FreeMargin() 获取 ...

谢谢指点!我试试




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2