请教关于OrderSend的一些疑问

 
int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, void comment, void magic, void expiration, void arrow_color)

示例中
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+25*Point,"My order #2",16384,0,Green);

我有一些不明白之处,我知道price就是交易时的购买价格,
在第2项参数cmd为OP_BUY(买仓),而第4项参数price为Ask(最新卖价格)
我听说,如果开仓是多单,那么就是ASK价,空单则是BID价,例子也是如此,但是我不知道为什么是这样,为何买多要用卖价,买空要用买价呢?

我在实际编写的时候在没有弄清这一点的情况下,就无法继续编写下去
举个例子,我的交易平台里,现货黄金里面
1.在大多数情况下的点差为0.5美元,即在卖价为1300美元/盎司的时候,买价为1300.5美元/盎司,
2.因为点差是浮动点差,点差会在0.5美元到5美元之间浮动,即买价在卖价为1300美元/盎司的时候最高可达1305美元/盎司,
3.我的K线图表都是以卖价为参考的,所以在交易策略上都是以卖价为参考
4.我在使用MarketInfo ()得到我平台的MODE_SPREAD,即点差,在点差为0.5美元的时候返回的值是500

那么问题来了,
1.我在使用OrderSend的时候,第2项参数购买方式cmd为OP_BUYLIMIT,即买挂单交易,那么在第4项参数price里我希望以卖价1300美元/盎司的时候,且点差在小于等于2美元的情况下交易,即买价为1300.5美元/盎司或者因为点差的原因最大不超过1302美元/盎司的时候交易,在这里我该如何设置参数price呢?是直接设为1300美元/盎司吗?

2.我在使用OrderSend的时候,第2项参数购买方式cmd为OP_SELLLIMIT,即卖挂单交易,那么在第4项参数price里我希望以卖价1300美元/盎司的时候,且点差在小于等于2美元的情况下交易,即买价为1300.5美元/盎司或者因为点差的原因最大不超过1302美元/盎司的时候交易,在这里我该如何设置参数price呢?是设为卖价1300美元/盎司呢?还是按要求那么设为Bid,那么就会因为点差的原因设在1300之上了,可能是1300.5美元/盎司甚至1305美元/盎司了

3.在示例中第5项参数设置最大允许滑点数slippage里面,例子设为"3",这个"3"是指3个Point吗?而在点差为0.5美元的时候用MarketInfo(Symbol(), MODE_SPREAD))返回的值"500"也是500个Point吗?


就是以上3个问题,谢谢

 

因为:

你的“买入价”就是市场、做市商、或者叫平台、市场报价的“卖出价”;

你的“卖出价”就是市场、做市商、或者叫平台、市场报价的“买人价”;

你是与市场买,卖也是卖给了市场。总之,我个人就是这么理解的,没有人告诉我,更没有人告诉我理解的对不对,但是至少这样非常容易理解和记忆。实际上对不对也都不重要何况事实上也的确是这样的。

 

天呐,后面还有好几个问题呢啊。

那就是接着来,哎... ...

挂单,本身成交其实无论ask或者bid,只要在规定的差价之外都可以成交。具体的就要看你的要求,假设要有利于交易的价格那就计算上点差也就是前面说的price(当然,这是建立在“假设市场可以给你有力价格的前提下的”);如果想要容易成交以免错过行情那就允许一个、甚至多个点差区间的“误差”。

至于MarketInfo ()的返回值,实际上不同的平台会有不同!需要你自行去了解、适应、换算与处理。

“slippage”与MarketInfo ()中MODE_SPREAD的返回值500是不同的,“滑点”参数对应的值3取决于“Point”是“真正意义的”3个点。

 
谢谢回答
我试者简化一下问题吧,以现货黄金为例,我的平台打开K线图后,显示的市场价格和我的卖价是一致的,而买价则比卖价要高0.5美元,也就是点差为0.5美 元,那么,如果我要在市场价(K线图上的价格)1300美元/盎司的时候作多,那么我进入市场的价格买单则为1300.5美元/盎司,那么如果价格在 1300美元/盎司以上,我要挂一张市场价在(K线图上的价格)1300美元/盎司的时候买单,我应该如何选择以下?
1.OrderSend(Symbol(),OP_BUYLIMIT,1,1300)
2.OrderSend(Symbol(),OP_BUYLIMIT,1,1300.5)
(以上为问题一,即点差固定在0.5美元的时候)

问题二
我要挂一张市场价在(K线图上的价格)1300美元/盎司的时候买单,点差不高于2美元,即我的买入价不能高于1302美元/盎司,我该怎么做?

问题三
我听说挂单基本不用考虑划点,这个问题先放着
 
redstone199:
谢谢回答
我试者简化一下问题吧,以现货黄金为例,我的平台打开K线图后,显示的市场价格和我的卖价是一致的,而买价则比卖价要高0.5美元,也就是点差为0.5美元,那么,如果我要在市场价(K线图上的价格)1300美元/盎司的时候作多,那么我进入市场的价格买单则为1300.5美元/盎司,那么如果价格在 1300美元/盎司以上,我要挂一张市场价在(K线图上的价格)1300美元/盎司的时候买单,我应该如何选择以下?
1.OrderSend(Symbol(),OP_BUYLIMIT,1,1300)
2.OrderSend(Symbol(),OP_BUYLIMIT,1,1300.5)
(以上为问题一,即点差固定在0.5美元的时候)

问题二
我要挂一张市场价在(K线图上的价格)1300美元/盎司的时候买单,点差不高于2美元,即我的买入价不能高于1302美元/盎司,我该怎么做?

问题三
我听说挂单基本不用考虑划点,这个问题先放着

1、这属于我前面说的,你希望在有利的价格成交,所以买入的价格应该是1300-0.5,结合报价与目标价格之间的关系决定BUYLIMIT还是BUYSTOP就可以了。

2、和第一个问题其实是一样,只是变化一下买入的价格为1300-点差并且是在点差<=2 。但是需要注意挂单满足价格就会成交,那么增加的额外条件就必须优先考虑、执行、连动。

当然,具体的你应该去试试检验一下,实践是检验真理的唯一标准,我没试哈。

原因: