下载MetaTrader 5

请教关于OrderSend的一些疑问

要添加评论,请登录注册
tian xiu he
24
tian xiu he  
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个问题,谢谢

BaiChun Li
842
BaiChun Li  

因为:

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

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

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

BaiChun Li
842
BaiChun Li  

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

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

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

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

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

tian xiu he
24
tian xiu he  
谢谢回答
我试者简化一下问题吧,以现货黄金为例,我的平台打开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美元/盎司,我该怎么做?

问题三
我听说挂单基本不用考虑划点,这个问题先放着
BaiChun Li
842
BaiChun Li  
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 。但是需要注意挂单满足价格就会成交,那么增加的额外条件就必须优先考虑、执行、连动。

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

要添加评论,请登录注册