股票市场。股票。交易订单的执行速度。 - 页 8

 
Replikant_mih #:

不能什么?)最好的报价 - 10.1,我抛出一个限制,在11买入,收集整个杯子到11,如果杯子里的体积到11是不足以履行整个申请,或停止在中间的某个地方。如果有必要让它完全履行,那么,做一个更大的抨击,就可以了。如果我想让我的订单精确地被填满,我就必须提高最高价格,并在它前面的某个地方设置一个价格。一般来说,如果我把整个玻璃扫得很深--对我来说,这更像是一个信号,说明我做错了什么)))。


IOC--好吧,你执行所有碍事的东西,然后你就把剩下的东西移走。国际奥委会也是如此)。我不做套利交易,也许我不了解一些狭义的具体内容。如果你想把所有的要求都吃到某种程度--好吧,你可以观察有什么量,并把这个量扔给Rosno,如果你对余下的提款变量不满意。简而言之,我对这项任务并不清楚)。

我已经说过了,所以我在Quick里做了。

procedure TExpert.SellBuySpot;
var
  outStr, id: string;
  res: long;
  ErrCode: long;
  ErrSize: Dword;
  ErrStr: LPSTR;
  Dt: TDateTime;
begin
  FOrder:= 0;
  FTransID:= GetTransID();
  id:= IntToStr(TransID);
  case BuySell of
    1: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=B' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.SellPrice + 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
    2: outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=S' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.BuyPrice - 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';';
  end;
  ErrCode:= 0;
  ErrSize:= 0;
  ErrStr:= nil;
  res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
  if(res <> TRANS2QUIK_SUCCESS) then
  begin
    FTransID:= 0;
    FTransBusy:= false;
  end else
  begin
    Dt:= now();
    FMemo.Lines.Add(DateToStr(Dt) + ' ' + FormatDateTime('hh:mm:ss.zzz', Now()) +
                              ' --> Ордер ' + ExpData.SpotData.SecCode + ' отправлен.');
  end;
end;

但有时(这种情况很少发生),秩序仍然在玻璃中,因此

它必须被删除,并设置一个新的,并再次观看 - 这一切都需要太多的时间。

此外,它可能在你脱下它之前就已经关闭了!

这就是为什么最可靠的是IOC,但它不在现场。

在套利中,一切都非常简单,如果你买了100个单位的一个腿,那么你必须立即卖出100个单位的另一个腿(关键词是IMMEDIATELY)。

因此,挑战在于如何在合适的价格和数量上 尽快进行反交易。

由以下人员添加

在MT-5中,一切都更简单,更快,而且有很多选项

例如,在计算了所选价格+先前(最佳)价格的总成交量后,通过SPOT甲板运行,并不立即采取最佳价格,这是没有问题的。

这就是为什么我担心MT-5中股票交易订单的执行速度。

但同样的,也不能保证市场会发生巨大的变化,如果你把价格看得太深,你就会走到套利的局面之外!

在Quick,SPOT上的交易速度为240至490毫秒,ping为3-4毫秒!

在FORTS上,在相同的ping下,交易从4.5ms到12ms。

不幸的是,由于堡垒的流动性低,你必须先卖出期货。

 
prostotrader #:

我已经说过,这是我在快餐店做的事情。

但有时(这很罕见,但会发生),订单仍在玻璃中,因此

因此,我必须把它拿下来,设置一个新的,再看一遍--这一切都需要太多的时间。

此外,订单可能会被执行,而你正准备把它拿出来。

这就是为什么最可靠的是IOC,但它不在现场。

在套利中,一切都非常简单,如果你买了100个单位的一个腿,那么你必须立即卖出100个单位的另一个腿(关键词是IMMEDIATELY)。

因此,挑战在于如何在合适的价格和数量上 尽快进行反交易。

由以下人员添加

在MT-5中,一切都更简单、更快,而且有很多选项

例如,在计算了所选价格+先前(最佳)价格的总成交量后,通过SPOT甲板运行,并不立即采取最佳价格,这是没有问题的。

这就是为什么我担心MT-5中股票交易订单的执行速度。

但同样的,也不能保证市场会发生巨大的变化,如果你把价格看得太深,你就会走到套利的局面之外!这就是为什么我们要做的事情。

在Quick,SPOT上的交易速度为240至490毫秒,ping为3-4毫秒!

在FORTS上,在相同的ping下,交易从4.5ms到12ms。

不幸的是,由于堡垒的流动性低,你必须先卖出期货。


明白了。
在mt5-Quik上用股票和期货套利是真的吗?还是我需要一些 "智力 "成分来与我那些速度快的伙伴们竞争?

 
Replikant_mih #:


明白了。
以mt5-Quik的速度进行股票与期货的套利是现实的吗?还是我需要一些 "智力 "成分来与速度快的伙伴们竞争?

如果只是经典,那么快速就足够了,如果像我想尝试的那样,剥头皮,那么我至少需要MT-5(2个终端)。

 
prostotrader #:

如果只是经典,那么快速就足够了,如果像我想尝试的那样,剥头皮,那么我至少需要MT-5(2个终端)。

2是因为经纪人不允许在一个终端上进行股票和期货交易(如Otkritie),还是因为一切都在你的终端连接中运作,不需要改变任何东西?只是mt5-mt5而不是mt5-Quik。

 
Replikant_mih #:

2是因为经纪商不允许你在一个终端上同时交易股票和期货(如Otkritie),还是因为一切都通过你的终端连接工作,因此你不需要重新做任何事情?它将只是mt5-mt5而不是mt5-Quik。

不,现在只是Quik,我已经开始写mt5-mt5了。

由以下人员添加

好了,你有了它,写好了。

现在,还不清楚何时能够测试...


 
prostotrader #:

不,现在只有快速,我开始写MT5 - MT5

由以下人员添加

好了,就在这里,写好了。

现在,还不清楚什么时候可以测试它...


祝贺你!

你是如何计划的--为每一对现货期货设计你的EA,还是用一个EA处理所有的交易?

 
Andrey Miguzov #:

祝贺你!

您是如何计划的--为每对现货期货使用不同的EA,还是用一个EA处理所有的对子?

我自己的客户-服务器集的每一对

为什么要从一个EA中跟踪所有的期货和SPOTs,这让人头疼?

EA本质上只是一个(客户端),服务器只是一个执行者--购买SPOTs的拐杖 :)

添加

顾问 - 客户端自动向(从)服务器发送(接收)所有必要的数据。

哪一对并不重要,顾问会自动调整到未来点对。

 
prostotrader #:

为什么要从一个EA中跟踪所有的期货和SPOTs,这让人头疼。

说实话,我在Otkritie的个人账户上看到你的截图,受到很大启发,我还在调试交易期货股票的专家顾问(不是剥头皮,而是正面模式的经典之作)。

合理的做法是在到期前以较大的利润进入该货币对(考虑到佣金和实际合同数)。

因此,我们必须分析所有的实际配对。如果为每一对设置一个EA--它们将彼此独立工作。

头痛的问题确实存在,尤其是在对一个货币对进行平仓并切换到另一个货币对时。另外,我认为当有很多对子时,它的速度会减慢。


ZZZ:鉴于目前的利率值,在不久的将来,这种策略的利润率会更高,当然,如果交易所开放的话 :)

我从视频中看到+你自己写的,你为黄牛写的。平均进入和退出--是平均EMA(链接) 还是你以某种方式平均化它(如果它不是一个秘密)?

 
Andrey Miguzov #:

输入和输出的平均值是EMA的平均值(链接),还是你以其他方式进行了平均化(如果它不是一个秘密)?

没有什么秘密,我只是在每次访问函数时计算出平均值

exp_data.midle_enter = exp_data.midle_enter * exp_data.m_ent_cnt;
  exp_data.m_ent_cnt++;
  exp_data.midle_enter = (exp_data.midle_enter + result)/exp_data.m_ent_cnt; 

exp_data.midle_exit = exp_data.midle_exit * exp_data.m_exit_cnt;
  exp_data.m_exit_cnt++;
  exp_data.midle_exit = (exp_data.midle_exit + result)/exp_data.m_exit_cnt;

需要这些数据来了解这个货币对的价格水平。

 
prostotrader #:

没有什么秘密,我只是在每次调用该函数时计算平均数。

我需要这些数据来了解某一特定货币对的价格水平。

我明白了,如果用挥手的方式,那就是SMA 但离计算开始越远,平均值就会与当前值相差越远。

粗略地说,这种平均法不会 "忘记 "旧的数值,因为 exp_data.m_ent_cnt在每次调用时都会越来越多,每个新的数值对最终结果的影响越来越小。

根据我的观察,平均值在一天中发生变化,而且相当敏感。

理论上,EMA应该更适合于剥头皮,代码大约如下。

double EMA_period = 100.0; //Период ЕМА для усреднения, тиков
double SmoothFactor = 2.0/(1.0+EMA_period);
 
if (EMA_ask<0) EMA_ask=ask; //первый тик
   else
  EMA_ask=ask*SmoothFactor+EMA_ask*(1.0-SmoothFactor);