为什么寻找入场点和出场点如此具有挑战性?
$ h! F! @* d' k+ H* B1 D6 |7 ~0 ]& L4 K! o2 D% M; C) T
如果你知道在哪里进入和退出市场,你可能不需要知道其他任何事情。不幸的是,出入场点问题是一个难以捉摸的问题。乍一看,您总是可以确定一个模式并遵循它一段时间。但是,如果没有先进的工具和指标,如何检测它呢?最简单且总是重复出现的模式是趋势和横盘。趋势是一个方向的长期运动,而横盘意味着更频繁的反转。5 D2 n( Q4 g" T' ], J7 o
9 G/ t) R( Z7 Z) U: t
/ T; h1 ^. O. B- z" V! ~9 Y1 q( W% O# A6 k
1 h5 A- f( q1 [1 i, a/ Q) M
6 y6 R2 a4 K, b3 c
1 e5 Z# q, r$ d1 }9 H2 [
! ~6 `5 l, n: B! k, b* k# `, Q9 N5 R
这些模式很容易被发现,因为人眼可以在没有任何指标的情况下找到它们。这里的主要问题是,我们只能在模式被触发之后才能看到它。此外,没有人能保证有任何模式。没有任何模式可以保住您的存款不被摧毁,无论使用什么样的策略。我将尝试用数学语言来提供可能的原因。3 G/ e' W0 J1 ^: Q6 @4 X
( q% b. Z( e( \6 U/ e+ Q* u; D3 U市场机制和水平/ ?0 q! t' K" Z/ x, V1 Q4 U8 v
2 Z; n% a$ ^' c5 {; P0 U) P让我告诉你一些有关价格和使市场价格变化的动力的事情。市场上有两种力量——市场和限价。类似地,有两种订单——市价单和限价单。限价买家和卖家填充了市场深度,而市价买卖参与其中。市场深度基本上是一个垂直的价格尺度,表明那些愿意购买或出售的东西。在限价卖家和买家之间,永远有一个间隙,这个间隙叫做点差。点差是最佳买入和卖出价格之间的距离,以最小价格移动单位来衡量。买家想以最便宜的价格购买,而卖家想以最高价出售。因此,买方的限价单总是位于底部,而卖方的限价单总是位于顶部。标记买家和卖家进入市场深度,两个订单(限额和市场订单)相连。当限价订单被触发时,市场就会发生变化。赫兹股票量化交易软件
7 V6 T4 d9 ?9 i$ X% ~$ D, C当一个活跃的市价订单出现时,它通常含有止损和获利。与限价订单类似,这些止损水平分散在市场四周,形成价格加速或反转水平。一切都取决于止损水平的数量和类型,以及交易量。知道了这些水平,我们就可以说价格可能加速或逆转。赫兹股票量化交易软件
2 `/ U. ]' o4 q! D! q+ x3 k/ T限价订单也会形成难以通过的波动和集群。它们通常出现在重要的价格点,比如一天或一周的开盘。在讨论基于水平的交易时,交易员通常是指限价订单的水平。所有这些可以简单地显示如下。
4 n+ o. v+ ?$ \$ j4 W' j2 Z8 L! [8 {! e9 w
! K) Z O) Q; X. r: b r% Z }" ^. J5 [4 z8 p; I# y
市场的数学描述 X) k6 V$ x/ P8 N- C; J
4 f/ `; B# \+ B我们在 赫兹股票量化交易软件 窗口中看到的是t参数的离散函数,其中t是时间。函数是离散的,因为报价点(tick)的数目是有限的。在当前情况下,报价点是中间不包含任何内容的点。报价点是可能的价格离散化的最小元素,较大的元素是柱、M1、M5、M15烛形等。市场既有随机因素,又有模式因素。这些模式可以有不同的规模和持续时间。然而,市场在很大程度上是一个概率性的、混乱的、几乎不可预测的环境。要理解市场,就要用概率论的概念来看待市场。引入概率和概率密度的概念需要离散化。
0 e& v; u. n6 O) \1 u为了介绍预期收益的概念,我们首先需要考虑术语“事件”和“穷尽事件”:0 `3 D b1 x7 X! A" M) [
O* ]4 G! Q' Z2 P; {% F# l# \# F, m. r# \
- C1 事件 — 利润,它等于获利
0 z1 r2 l5 R, m9 Q1 i: _( p# { - C2 事件 — 亏损,它等于止损
) [& s$ ^4 G$ _) v6 g" B - P1 — C1 事件的概率
6 s- ~: L. M R) k T - P2 — C2 事件的概率. p2 a5 c! n9 b2 T
С1和С2事件形成一组完全相反的事件(即,在任何情况下都会发生其中一个事件)。因此,这些概率之和等于1 P2(tp,sl) + P2(tp,sl) = 1. 这个方程式以后可能会很有用。
) J E& V7 K' j3 P* U8 U在测试 EA 交易或者人工策略时,如果使用随机开启仓位,以及随机止损和获利,我们将会得到随机的结果,而预期收益会等于“-(点差)”,如果我们可以把点差设为0,结果就是0。这表明无论止损水平如何,在随机市场上我们总是得到零预期收益。在非随机市场上,只要市场具有相关的模式,我们总是得到一个损益。我们可以通过假设预期收益(Tick[0].Bid-Tick[1].Bid)也等于零得出相同的结论。这些结论非常简单,可以通过多种方式得出。
8 i9 A& i" r$ \+ X- x) s8 f4 B. }1 _( t" @2 |
- M=P1*tp-P2*sl= P1*tp-(1- P1)*sl — 对于任何市场1 w& Y% [9 u8 W$ U) \
- P1*tp-P2*sl= 0 — 对于无序的市场
/ f. o% M( L1 u8 }# n$ c: |! d , w3 p6 c6 c) o4 p) S: F
这是主要的无序市场方程描述了混乱使用限价水平打开和关闭订单的预期收益。在解完最后一个方程后,我们得到了所有我们感兴趣的概率,包括完全随机性和相反的情况,只要我们知道限价数值。 赫兹股票量化交易软件: [+ h1 S9 z1 ]; G7 }1 B
这里提供的方程只适用于最简单的情况,可以推广到任何策略。这正是我现在要做的,以达到一个完整的理解,什么构成了最终的预期回报,我们需要使它不为零。另外,让我们引入利润因子的概念,并写出相应的方程式。) u6 K s5 X; F
假设我们的策略包括通过止损水平和一些其他信号来关闭仓位。为此,我将引入С3、С4事件空间,其中第一个事件通过止损水平关闭仓位,而第二个事件通过信号关闭仓位。它们也构成了一组完整的对立事件,所以我们可以用类比来写:- P) o' i6 L4 D
M=P3*M3+P4*M4=P3*M3+(1-P3)*M4, 其中 M3=P1*tp-(1- P1)*sl, 而 M4=Sum(P0*pr) - Sum(P01[j]*ls[j]); Sum( P0 )+ Sum( P01[j] ) =1* `9 e* T4 K. C0 t$ T4 ~% ^
. N/ f1 z$ _8 m. i" c0 L+ g3 H: X5 c& C; b' j
5 ` u P2 h$ T& X" K- M3 — 当订单止损关闭时的预期收益。3 d* I& y9 M+ @& P7 H f
- M4 — 当根据信号关闭仓位时的预期收益。
% F7 d* d5 E( t* ]1 J$ t& E+ _! V - P1 , P2 — 如果在任何情况下触发其中一个止损水平,而止损水平激活的概率。
7 o8 u( n) e/ f$ _2 }1 E - P0 — 没有触发止损水平而关闭交易并取得了 pr 利润的概率。i — 关闭选项编号
& Z9 D' T/ d7 k& M5 B- P01[j] — 没有触发止损水平而关闭交易并取得 ls[j] 亏损的概率 j — 关闭选项编号
1 y8 ?; y- S: K3 r9 M' _ @) }8 [' o
9 s* o9 h$ Z; q; \
1 K) O# a/ D. \& F换句话说,我们有两个相反的事件。它们的结果形成了另外两个独立的事件空间,在这里我们也定义了完整的组。然而,P1、P2、P0 和 P01[j] 概率现在是有条件的,而P3和P4是假设的概率。条件概率是假设发生时事件发生的概率。一切都严格按照总概率公式(贝叶斯公式)进行。我强烈建议你仔细研究一下,以掌握这件事。对于完全无序的交易, M=0.
4 i! P5 }/ _) R/ Y: ]3 z9 q, S现在这个等式变得更加清晰和宽泛,因为它考虑了通过止损水平和信号来关闭。我们可以更进一步地遵循这个类比,写出任何策略的一般方程式,甚至考虑到动态止损水平。这就是我要做的。让我们来介绍N个新的事件,形成一个完整的组,这意味着以类似的止损和获利来开始交易。CS[1] .. CS[2] .. CS[3] ....... CS[N] . 类似地, PS[1] + PS[2] + PS[3] + ....... +PS[N] = 1.
1 R. p D+ S8 i# K# G+ J4 ?M = PS[1]*MS[1]+PS[2]*MS[2]+ ... + PS[k]*MS[k] ... +PS[N]*MS[N] , MS[k] = P3[k]*M3[k]+(1- P3[k])*M4[k], M3[k] = P1[k] *tp[k] -(1- P1[k] )*sl[k], M4[k] = Sum(i)(P0[k]*pr[k]) - Sum(j)(P01[j][k] *ls[j][k] ); Sum(i)( P0[k] )+ Sum(j)( P01[j][k] ) =1.
' f! K8 M6 d; l" S8 V
$ b8 z$ j7 o6 D8 B- PS[k] — 设置第k个止损水平选项的概率.4 l2 e4 [: ]2 @, M1 P/ T' {
- MS[k] — 使用第k个止损水平关闭交易的预期收益。
! H/ \3 Q2 F# \1 v& N. d: h. A - M3[k] — 当根据第k个止损水平关闭订单的预期收益。
2 U6 l% p8 a5 a7 v: E( X - M4[k] — 对于第k个止损水平由信号关闭订单的预期收益。
" Y2 B+ x% f2 w% G3 Y, d$ f. g - P1[k] , P2[k] — 任何情况下某一止损水平被触发的概率。# [! Z' \# `3 v6 Y, J1 n# l
- P0[k] — 关闭交易时利润是 pr[k],并且是根据 第k个止损水平所对应的信号关闭的概率. i — 关闭选项编号
& @. |3 \+ D0 i! \" d- P01[j][k] — 关闭交易时亏损是ls[j][k] , 并且是根据第k个止损水平所对应的信号关闭的概率 。 j — 关闭的选项编号2 h1 t c7 y; ]
和之前 (更加简单) 的方程类似, 如果是无序交易并且没有点差,那么 M=0。你能做的最多的就是改变策略,但是如果它没有合理的基础,你只需要改变这些变量的平衡,仍然得到0。为了打破这种不必要的均衡,我们需要知道市场在任何一个固定的运动区间内向任何方向运动的概率,或者在一段时间内预期的价格运动收益。入场/出场点的选择取决于此。如果你设法找到他们,那么你将有一个有利可图的战略。
! v& o, t) Q( D; q6 |现在让我们来建立利润因子方程。PF = Profit/Loss. 利润因子是利润与亏损的比率。如果该数字超过1,则该策略是有利可图的,否则就不是。这可以使用预期收益重新定义。PrF=Mp/Ml. 这意味着预期净利润回报与预期净亏损的比率。让我们写下他们的方程式。# S' T3 E3 d, y: y: z8 i; a& n
, ~. r# }: e5 }! Z( q
- Mp = PS[1]*MSp[1]+PS[2]*MSp[2]+ ... + PS[k]*MSp[k] ... +PS[N]*MSp[N] , MSp[k] = P3[k]*M3p[k]+(1- P3[k])*M4p[k] , M3p[k] = P1[k] *tp[k], M4p[k] = Sum(i)(P0[k]*pr[k])
' q+ Q' n; P! m! [2 M- Ml = PS[1]*MSl[1]+PS[2]*MSl[2]+ ... + PS[k]*MSl[k] ... +PS[N]*MSl[N] , MSl[k] = P3[k]*M3l[k]+(1- P3[k])*M4l[k] , M3l[k] = (1- P1[k] )*sl[k], M4l[k] = Sum(j)(P01[j][k]*ls[j][k])
' o1 U) J1 S7 n/ u) j Sum(i)( P0[k] ) + Sum(j)( P01[j][k] ) =1.# e) J8 F# f5 _) j
" w7 b& Y# ~+ o* I
- MSp[k] — 在第k个止损水平关闭交易的预期收益。) }: T3 a- n4 b8 h X
- MSl[k] — 在第k个止损水平关闭交易的预期收益.
5 S1 T& [: }" [$ M" A/ j+ K - M3p[k] — 当 第k个止损水平由止损来关闭订单的预期收益。! P1 z6 |+ ]2 S! {- u; `9 D
- M4p[k] — 当 第k个止损水平由信号来关闭订单的预期收益。" s9 [7 p0 T9 t, ^5 [2 j$ u
- M3l[k] — 在第k个止损水平上由止损来关闭订单的预期亏损。
) p' R7 U3 r7 {# e3 ] - M4l[k] — 在第k个止损水平上由信号来关闭订单的预期亏损。- {3 W P9 }$ s7 x P8 L
为了更深入地理解,我将描述所有嵌套事件:
0 A8 ?$ ?6 ]! E' S/ U
8 u% I2 i7 C& O0 ^1 g + `, O$ O' M& x' u% s+ @, O
7 P$ M4 \1 t9 P8 }- W; `事实上,这两个等式是相同的,尽管第一个等式缺少与损失相关的部分,而第二个等式缺少与利润相关的部分。在无序交易的情况下,PrF=1,前提是价差再次等于零。M 和 PrF 是两个足以从各个方面评估策略的值。3 r" V O# _* B& a7 M. Z+ r& z+ a/ i8 t
特别是,有能力评估趋势或横盘性质的某一工具使用相同的概率理论和组合数学。此外,利用概率分布密度也可以从随机性中找出一些差异。赫兹股票量化交易软件
/ I' l4 Z; z r5 c( F) I i我将建立一个随机值分布概率密度图,其离散价格间隔固定的H步。让我们假设,如果价格向任何方向移动了H个点,那么就已经进行了一步。X轴是以垂直价格图的形式显示一个随机值,以步数计量。在这种情况下,需要n个步骤,因为这是评估整体价格变动的唯一方法。赫兹股票量化交易软件' n! r' ?9 n! m8 f3 S" l+ T, |
4 ]8 c9 F6 }& _1 l" R7 o5 _4 J" T$ @4 }, y
- n — 步数总数 (常数值)* G: X3 Q+ K- J; h( p' I
- d — 价格下降的步数
+ V0 L( K" U; X4 f( }: ^5 | - u — 价格提升的步数# B" U5 c/ o$ b0 S
- s — 总的向上步数
6 [% |, J! a- V/ B: R 在定义了这些数值之后,计算u和d:
6 j, {6 M5 D$ ^5 S要提供总的“s”向上移动步数(该值可以是负的,表示向下移动步数),应提供一定数量的向上和向下移动步数:“u”、“d”。最终的“s”向上或向下移动取决于总的所有步数:
+ \3 q) o7 m, h$ O8 L- U1 L( A3 j9 `2 G6 o
n=u+d;# z1 L1 P, E3 g" P$ v- E: M( v
s=u-d; 这是一个由两个方程组成的系统。求解它得到u和d:/ ^% Y9 c. P+ b. Y
u=(s+n)/2, d=n-u. 但是,并非所有的“s”值都适合某个“n”值。可能的s值之间的步长始终等于2。这样做是为了给“u”和“d”提供自然数的值,因为它们将用于组合数学,或者更确切地说,用于计算组合。如果这些数字是分数,那么我们就不能计算阶乘,阶乘是所有组合数学的基石。下面是18个步骤的所有可能场景,该图显示了事件选项的范围。0 p6 c0 l: R# z8 V5 a5 _
' k& k5 H/ z! {% t6 X; n ~ 9 X/ V+ o/ G; {' z$ G. t1 n
) s/ Y- ~( {% C很容易定义期权的数量包括2^n,因为每个步骤后只有两个可能的移动方向-上升或下降。没有必要试图抓住每一个选项,因为这是不可能的。相反,我们只需要知道我们有n个独特的单元,其中u和d应该分别是向上和向下的。具有相同u和d的选项最终提供相同的s。为了计算提供相同“s”的选项总数,我们可以使用组合数学中的组合公式 С=n!/(u!*(n-u)!),以及等效方程С=n!/(d!*(n-d)!)。在u和d不同的情况下,我们得到了相同的C值。由于组合可以由上升段和下降段组成,这必然导致有重复。那么我们应该用什么片段来组成组合呢?答案是任意的,因为这些组合是等价的,尽管它们不同。我将在下面使用基于MathCad 15的应用程序来证明这一点。赫兹股票量化交易软件
8 E0 c6 o- T2 P2 V+ r现在我们已经确定了每个场景的组合数,我们可以确定特定组合(或事件,无论您喜欢什么)的概率。P = С/(2^n). 可以为所有“s”计算该值,并且这些概率之和始终等于1,因为这些选项中的一个无论如何都会发生。基于这个概率数组,我们可以在s步为2的情况下建立相对于s随机值的概率密度图。在这种情况下,可以简单地通过将概率除以s步长(即除以2)来获得特定步长处的密度。原因是我们无法为离散值建立连续函数。此密度保持与左右半步相关,即1。它帮助我们找到节点,并允许数值积分。对于负的“s”值,我将简单地镜像相对于概率密度轴的图形。对于偶数n值,节点编号从0开始,对于奇数n值,节点编号从1开始。在偶数n值的情况下,我们不能提供奇数s值,而在奇数n值的情况下,我们不能提供偶数s值。下面的计算应用程序屏幕截图阐明了这一点:6 A$ B6 `3 x" h1 o
+ `/ J" s4 T; U! b7 X" ~) W( h& h
8 D& D& r. Y, y* u( m
% ]! o& L/ n" S# T0 k: @8 r
它列出了我们需要的一切。应用程序附在下面,这样您就可以尝试不同的参数。最热门的问题之一是如何界定当前的市场形势是趋势还是横盘。我已经提出了我自己的公式来量化一个工具的趋势或平坦性质。我把趋势分为阿尔法趋势和贝塔趋势。阿尔法意味着一种趋势,要么买要么卖,而贝塔只是一种趋势,继续运动,没有明确界定买或是卖。最后,横盘意味着回到初始价格的趋势。赫兹股票量化交易软件
# b1 g2 i. A$ b不同交易者对趋势和横盘的定义差别很大。我试图给所有这些现象下一个更严格的定义,因为即使对这些问题及其量化方法有一个基本的理解,也允许应用许多以前被认为是死的或过于简单的策略。以下是主要方程式:
( d/ {- |! a: b2 R! T+ ~9 ~K=Integral(p*|x|)8 {/ C* n$ k- Q1 C; {' z
或者, ]. \& t2 j4 g6 t% M; Z+ d, O4 H
K=Summ(P*|s|) 第一个选项用于连续随机变量,而第二个选项用于离散随机变量。为了更清楚,我已经使离散值连续,因此使用了第一个方程。积分的跨度从负到正无穷大。这是均衡或趋势比率。在计算了一个随机值后,我们得到了一个平衡点,用来比较报价的真实分布和参考分布。如果 Кp > K, 市场可以被认为是趋势性的。富国 Кp < K, 市场就属于横盘。赫兹股票量化交易软件5 I) R8 W' Q* b7 \0 U% b; J
我们可以计算出比率的最赫兹股票量化交易软件大值。它等于 KMax=1*Max(|x|) or KMax=1*Max(|s|). 我们也可以计算出比率的最小值。它等于 KMin=1*Min(|x|) = 0 or KMin=1*Min(|s|) = 0. KMid 是中点, 最小值和最大值是评估所分析区域的趋势或横盘性质所需的全部百分比。赫兹股票量化交易软件
4 _3 {' N$ L+ _. V- b' dif ( K >= KMid ) KTrendPercent=((K-KMid)/(KMax-KMid))*100 else KFletPercent=((KMid-K)/KMid)*100. 但这仍然不足以充分描述这种情况。还有需要解决的第二个比率 T=Integral(p*x), T=Summ(P*s)。它基本上显示了上升步骤数量的预期收益,同时也是阿尔法趋势的一个指标。Tp > 0 表示买入趋势, 而 Tp < 0 表示卖出趋势, 也就是说 T=0 用于随机游走。 赫兹股票量化交易软件! b, b% a; A3 m
让我们找到这个比率的最大值和最小值: TMax=1*Max(x) 或者 TMax=1*Max(s), 最小值的绝对值等于最大值, 只不过它是负的 TMin= - TMax. 如果我们测量从100到-100的α趋势百分比,我们可以编写与上一个类似的计算公式:赫兹股票量化交易软件
% x' Y- ~; b$ [ m1 `APercent=( T /TMax)*100. 如果百分比为正,则趋势为牛市,如果为负,则趋势为熊市。情况可能混合出现。可能存在α-横盘和α-趋势,但不同时存在α-横盘和α-趋势。下面是上述陈述的图解,以及为不同步数构造的密度图的示例。赫兹股票量化交易软件" J6 G) R8 d9 J, N6 W
+ H! ^1 Z2 K8 p( W% @% c

9 O& Z: `4 q$ l! L
2 a# v. a/ x( z
- M- H! _" M8 s1 w: B
$ |" g8 T6 J" }" z3 ^- I & f3 P8 ]' Q; \" z l
- y4 W' n- b7 _$ ~& C+ |* F
& _/ f$ `- ?# X0 i
# G7 ~1 \7 l$ p4 p2 ~4 n7 ^* q$ l如我们所见,随着步数的增加,图形变得越来越窄,越来越高。对于每个步数,对应的alpha和betta值是不同的,就像分布本身一样。更改步数时,应重新计算参考分布。赫兹股票量化交易软件
0 i% D6 J, ]5 b所有这些方程都可以用来建立自动交易系统。这些算法也可以用来开发指标。一些交易者已经在EA中实现了这些功能。我确信一件事:应用这种分析比避免它要好。那些熟悉数学的人会马上想出一些新的方法来应用它,而那些不熟悉数学的人将不得不做出更多的努力。- t8 y2 Y% g: z2 {1 n3 ]
. h3 U/ f9 ]5 d% J4 t写一个简单的指标
7 x) j. m. L1 X- e3 K
1 @* F) r0 x. n0 X; `# E1 Q' r在这里,我将把我简单的数学研究转化为一个指标,检测市场进入点,并作为开发EA交易的基础。我将使用 MQL5 开发指标。但是,代码要是可适应的,以便最大限度地移植到MQL4。一般来说,只有当代码变得不必要的麻烦和不可读时,我才尝试使用最简单的方法求助于OOP。然而,这在90%的情况下是可以避免的。不必要的彩色面板、按钮和图表上显示的大量数据只会妨碍视觉感知。相反,我总是尽量少用视觉工具。" j; T5 \/ O% ~' O: v0 n
让我们从指标的输入参数开始。赫兹股票量化交易软件) v: I7 E8 _& w( _( K# n; p
input uint BarsI=990;//Bars TO Analyse ( start calc. & drawing )
- y8 Z0 z+ V% ?) Z+ S+ M0 V% Dinput uint StepsMemoryI=2000;//Steps In Memory# Z' v' ^8 q/ X. }
input uint StepsI=40;//Formula Steps4 g: l3 `, ^- i
input uint StepPoints=30;//Step Value9 e# ^) v( Q5 ?- _" I9 M# Q5 A
input bool bDrawE=true;//Draw Steps
; X, s- Q4 r& `/ U+ ^( q F( K& N, Z( K- N: V0 D7 Y1 ?$ v5 ~/ d$ `
' n# p0 X/ a+ `! g; _. Y
当指标加载时,我们能够以最后的烛形为基础,对一定数量的步数进行初始计算。我们还需要缓冲区来存储有关最后一步的数据。新数据将取代旧数据。它的大小是有限的。在图表上用同样的尺寸画步骤。我们应该指定步骤的数量,为其构建分布并计算必要的值。然后我们应该以点为单位告知系统步长,以及是否需要可视化步长。步骤要通过在图表上绘图来可视化。赫兹股票量化交易软件2 I* q$ f1 b8 H* v
我在一个单独的窗口中选择了指示器样式,显示中立分布和当前情况。有两条线,不过最好有第三条。不幸的是,指标功能并不意味着在一个单独的主窗口中绘图,所以我不得不求助于绘图。赫兹股票量化交易软件 |