//+----------------------------------------------------------------------------+//| Автор : Ким Игорь |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает флаг существования позиции или ордера около рынка |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - торговая операция ( -1 - любая операция) |//| mn - MagicNumber ( -1 - любой магик) |//| ds - расстояние в пунктах от рынка ( 1000000 - по умолчанию) |//+----------------------------------------------------------------------------+bool ExistOPNearMarket(string sy="", int op=-1, int mn=-1, int ds=1000000) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
double p=MarketInfo(sy, MODE_POINT);
if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
if (MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
}
if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if (MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
}}}}} return(False); }
和NumberOfOrders()函数 -
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.11.2006 |//| Описание : Возвращает количество ордеров. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ko=0, ot;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) ko++;
}}}} return(ko);}
..... Второй вариант более важен для трейдера. Представим себе, что на момент фиксинга, компания будет раздвигать торговые спреды. Это значит, что по всем Вашим открытым позициям суммарный профит будет уменьшаться, и эта разница будет списываться с баланса... Такую процедуру компания будет проводить в конце каждого торгового дня, - и это будет похоже на скрытое свопирование........
朋友 !!!!我决定再给自己一次冲击,写一个基于限价订单的EA,我将很高兴得到任何帮助。我已经根据Kim的功能建立了限价订单。我目前正试图根据tick统计(https://www.mql5.com/ru/forum/125272) 获得平均数和偏差(因为我认为它们更可靠),以建立仓位。我们将不得不实现一个模块,将限价订单移到价格后面,并实现一个模块,在利润达到一定程度时关闭头寸。
...... Надо будет реализовать модуль передвижки лимит ордера за ценой и модуль закрытия позиций при достижения профита определенного.
下面是移动订单的代码。啤酒算你的!
其中,-函数ExistOPNearMarket()//这个函数返回一个标志,表示在市场附近存在一个订单或一个头寸。
//(在离市场指定的点位距离)。更准确地选择要检查的订单或头寸
要//检查的订单或头寸是由外部参数设定的。
/sy - 仪器的名称。如果该参数被设置,函数将验证
只检查指定符号的//顺序或位置。"" 或 NULL 表示
//当前符号。
//op - 交易操作,订单或头寸类型。有效值:OP_BUY。
// OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, OP_SELLSTOP或-1。
//默认值为-1意味着任何交易操作。
//mn - 订单或位置标识符(MagicNumber)。默认值-1
// - 任何标识符。
//ds - 以点为单位的市场距离。默认值是1000000。
和NumberOfOrders()函数 -
非常感谢,crunch给了我一个函数来计算任何时期的ticks的平均值,我也答应给他一杯啤酒,我得一次装满一箱:)))),我希望我自己不要喝得太高兴!!!!!。
//-----------------------------
"尊敬的客户,请注意,从2010年4月14日开始,与BT-08协议附录第1.3.6条相应的行动 将生效。
1.3.6 资产负债表的固定。
1.3.6.1贸易差额 的确定过程应在每日进行,在互换应计过程之前进行。
该程序包括自动计算所有已执行交易的财务结果,并将其与交易账户的当前余额进行比较。如果有差异,交易账户余额将按差异的金额进行修正。
从这一刻开始,修复平衡的程序将每天进行。
如 果在此程序之后,交易账户上的财务结果出现差异,你可以联系技术支持部门....."
//------------------------------------------------
我搞不清楚这到底是什么?
数额上的差异是什么?在理论上,它来自哪里?
我们在这里谈论的是什么呢?
И - "....交易账户的余额将被调整" - 如何调整?
我恐怕是错的,但BT-08协议的第1.3.6.1条,给了公司另一个蚕食客户的机会。
理论上,差异会从哪里来?
有两种可能性。
第一个是,如果你的订单在非市场价格下被执行(你知道,尖峰和其他失败)--公司将决定这种订单的命运,并确定什么是 "非市场价格"。但这种情况并不经常发生,也没有那么糟糕。
第二种选择对交易员来说更为重要。让我们设想一下,在定盘时,公司将扩大交易价差。这意味着你所有的未结头寸 的总利润将减少,而这个差额将从余额中扣除。这个程序将由公司在每个交易日结束时进行,它将像一个隐藏的交换...没有魔鬼,没有魔鬼能阻止公司这样做......。她是CFD的女主人......
当然,每个人都愿意相信公司的诚信,相信它不会这样作弊......时间会证明一切......,但人们必须找到地方为海外诉讼和昂贵的律师筹集资金......
.....
Второй вариант более важен для трейдера. Представим себе, что на момент фиксинга, компания будет раздвигать торговые спреды. Это значит, что по всем Вашим открытым позициям суммарный профит будет уменьшаться, и эта разница будет списываться с баланса... Такую процедуру компания будет проводить в конце каждого торгового дня, - и это будет похоже на скрытое свопирование........
只是想.....
点差在每天的会期日收盘时确实扩大了不少(对于那些每日会期之间有休息的工具,即几乎所有商品和期货--对于我们的交易方法)。
这一点并不十分清楚。在这种情况下,权益(资金)会暂时减少,但余额不会减少。
这些职位仍然开放,余额不能有任何变化。
而如果这种 "扩大 "的价差(当新的会期开启时)被写进余额中,就很难理解了。
我每天晚上都要保存一份详细的报表,并严格地与早上的 "新余额 "进行比较。
显然是这样。
将得到答复。
http://www.procapital.ru/showthread.php?p=649145#post649145
一个熟人把这个问题交给了技术支持人员。
将得到答复。
>> http://www.procapital.ru/showthread.php?p=649145#post649145
我也看了技术支持的回答,我明白不会发生什么事(希望如此)。
余额=资金+未结头寸 的总利润...
而答案中的这句话,用红色标出,并没有困扰你......再次重申,已结束的交易不会受此影响,它们的所有数字将保持不变。只检查最终的账户余额。
当然,没有人打算修复已经关闭的位置。这将是一次入室盗窃。但他们可以进入开放的...
我没有一个真正的B......我有点不在乎,但你真的建议安排一个晚上和早上的平衡对账......