<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MQLmagazine.com &#187; MetaTrader5</title>
	<atom:link href="http://mqlmagazine.com/ro/category/metatrader5/feed/" rel="self" type="application/rss+xml" />
	<link>http://mqlmagazine.com/ro</link>
	<description>Sursa ta de MetaTrader</description>
	<lastBuildDate>Sat, 10 Jul 2010 16:10:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tick Data &amp; Charting : De ce nu un MetaTrader de Nivel II ?</title>
		<link>http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/</link>
		<comments>http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 19:36:54 +0000</pubDate>
		<dc:creator>Bogdan Caramalac, MQLmagazine sr.editor</dc:creator>
				<category><![CDATA[MetaTrader5]]></category>

		<guid isPermaLink="false">http://mqlmagazine.com/ro/?p=1223</guid>
		<description><![CDATA[[English version] [MQLmagazine.com in english] [Editia romaneasca]
Ar trebui sa vezi acest articol ca pe o continuare a celui despre Progress Apama, pentru ca vine cu probleme institutionale la nivelul MetaTrader5. Daca vezi strategia de arbitraj statistic, o sa observi ca are o executie cel mult la 1-2 secunde. Deci, nu pare HFT deloc. Dar devine [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mqlmagazine.com/metatrader5/tick-data-charting-why-not-a-level-ii-metatrader/" target="_top">[English version]</a> <a title="[MQLmagazine.com in english]" href="http://mqlmagazine.com" target="_top">[MQLmagazine.com in english]</a> <a title="[Editia romaneasca]" href="http://mqlmagazine.com/ro" target="_top">[Editia romaneasca]</a></p>
<p>Ar trebui sa vezi acest articol ca pe o continuare a celui despre Progress Apama, pentru ca vine cu probleme institutionale la nivelul MetaTrader5. Daca vezi strategia de arbitraj statistic, o sa observi ca are o executie cel mult la 1-2 secunde. Deci, nu pare HFT deloc. Dar devine HFT in contextul rularii a 500 de instante &#8211; pentru ca va avea sute de executii pe secunda. Totusi, pana la 10-20 de instante, e ceva ce si <strong>MetaTrader5 poate suporta</strong>.</p>
<p>Aceasta strategie m-a inspirat sa ma gandesc la un indicator care deseneaza charturi la nivel de tick. Desigur, poti vedea un asemenea chart, dar in Market Watch, facand clic pe &#8220;Tick Chart&#8221; langa &#8220;Symbols&#8221;. Dar daca vrei sa vezi mai mult decat una la un moment dat? Asa ca am scris un indicator. Nu prea mi-a reusit, dar Rosh (Rashid Umarov) mi-a sarit in ajutor. Acesta este corpul indicatorului, scris dupa inserarea nivelelor:</p>

<div class="wp_codebox"><table width="100%" ><tr id="p12232"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</pre></td><td class="code" id="p1223code2"><pre class="mql5" style="font-family:monospace;"><span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #808080;">//|                                                        Ticks.mq5 |</span>
<span style="color: #808080;">//|                        Copyright 2010, MetaQuotes Software Corp. |</span>
<span style="color: #808080;">//|                                              http://www.mql5.com |</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #339900;">#property copyright &quot;2010, MetaQuotes Software Corp.&quot;</span>
<span style="color: #339900;">#property link      &quot;http://www.mql5.com&quot;</span>
<span style="color: #339900;">#property version   &quot;1.00&quot;</span>
<span style="color: #339900;">#property indicator_separate_window</span>
<span style="color: #339900;">#property indicator_buffers 2</span>
<span style="color: #339900;">#property indicator_plots   2</span>
<span style="color: #808080;">//--- plot Bid</span>
<span style="color: #339900;">#property indicator_label1  &quot;Bid&quot;</span>
<span style="color: #339900;">#property indicator_type1   DRAW_LINE</span>
<span style="color: #339900;">#property indicator_color1  Blue</span>
<span style="color: #339900;">#property indicator_style1  STYLE_SOLID</span>
<span style="color: #339900;">#property indicator_width1  1</span>
<span style="color: #808080;">//--- plot Ask</span>
<span style="color: #339900;">#property indicator_label2  &quot;Ask&quot;</span>
<span style="color: #339900;">#property indicator_type2   DRAW_LINE</span>
<span style="color: #339900;">#property indicator_color2  Red</span>
<span style="color: #339900;">#property indicator_style2  STYLE_SOLID</span>
<span style="color: #339900;">#property indicator_width2  1</span>
<span style="color: #339900;">#property indicator_level0  0.00</span>
<span style="color: #339900;">#property indicator_level1  0.00</span>
<span style="color: #339900;">#property indicator_level2  0.00</span>
<span style="color: #339900;">#property indicator_level3  0.00</span>
<span style="color: #339900;">#property indicator_level4  0.00</span>
<span style="color: #339900;">#property indicator_level5  0.00</span>
<span style="color: #339900;">#property indicator_level6  0.00</span>
<span style="color: #339900;">#property indicator_level7  0.00</span>
<span style="color: #339900;">#property indicator_level8  0.00</span>
<span style="color: #339900;">#property indicator_level9  0.00</span>
<span style="color: #339900;">#property indicator_level10  0.00</span>
<span style="color: #339900;">#property indicator_level11  0.00</span>
<span style="color: #339900;">#property indicator_level12  0.00</span>
<span style="color: #339900;">#property indicator_level13  0.00</span>
<span style="color: #339900;">#property indicator_level14  0.00</span>
<span style="color: #339900;">#property indicator_level15  0.00</span>
<span style="color: #808080;">//--- input parameters</span>
<span style="color: #0000ff;">input</span> <span style="color: #0000ff;">int</span>      number_of_ticks<span style="color: #000080;">=</span><span style="color: #008000;">1000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">input</span> <span style="color: #0000ff;">int</span>      points_indent<span style="color: #000080;">=</span><span style="color: #008000;">10</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">input</span> <span style="color: #0000ff;">int</span>      LevelsCount<span style="color: #000080;">=</span><span style="color: #008000;">7</span><span style="color: #008080;">;</span>
<span style="color: #808080;">//--- indicator buffers</span>
<span style="color: #0000ff;">double</span>         BidBuffer<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">double</span>         AskBuffer<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #808080;">//| Custom indicator initialization function                         |</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #0000ff;">int</span> OnInit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
<span style="color: #808080;">//--- indicator buffers mapping</span>
   <span style="color: #8a2be2;">SetIndexBuffer</span><span style="color: #008000;">&#40;</span>0,BidBuffer,<span style="color: #333399;">INDICATOR_DATA</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">SetIndexBuffer</span><span style="color: #008000;">&#40;</span>1,AskBuffer,<span style="color: #333399;">INDICATOR_DATA</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">PlotIndexSetDouble</span><span style="color: #008000;">&#40;</span>0,PLOT_EMPTY_VALUE,0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">PlotIndexSetDouble</span><span style="color: #008000;">&#40;</span>1,PLOT_EMPTY_VALUE,0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">IndicatorSetString</span><span style="color: #008000;">&#40;</span><span style="color: #333399;">INDICATOR_SHORTNAME</span>,<span style="color: #8a2be2;">Symbol</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #008080;">&quot; Tick Chart&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #808080;">//---</span>
   <span style="color: #0000ff;">return</span><span style="color: #008000;">&#40;</span>0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #808080;">//| Custom indicator iteration function                              |</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #0000ff;">int</span> OnCalculate<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> rates_total,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> prev_calculated,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">datetime</span> <span style="color: #000040;">&amp;</span>time<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">double</span> <span style="color: #000040;">&amp;</span>open<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">double</span> <span style="color: #000040;">&amp;</span>high<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">double</span> <span style="color: #000040;">&amp;</span>low<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">double</span> <span style="color: #000040;">&amp;</span>close<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">long</span> <span style="color: #000040;">&amp;</span>tick_volume<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">long</span> <span style="color: #000040;">&amp;</span>volume<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span>,
                <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> <span style="color: #000040;">&amp;</span>spread<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
   <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">int</span> ticks<span style="color: #000080;">=</span><span style="color: #008000;">0</span><span style="color: #008080;">;</span>
<span style="color: #808080;">//---</span>
   <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span>ticks<span style="color: #000080;">==</span>0<span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
      <span style="color: #8a2be2;">ArrayInitialize</span><span style="color: #008000;">&#40;</span>AskBuffer,0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #8a2be2;">ArrayInitialize</span><span style="color: #008000;">&#40;</span>BidBuffer,0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
   setMaxMinPrice<span style="color: #008000;">&#40;</span>ticks,points_indent<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #808080;">//--- CopyRates</span>
   MqlTick last_tick<span style="color: #008080;">;</span>
   <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span><span style="color: #8a2be2;">SymbolInfoTick</span><span style="color: #008000;">&#40;</span><span style="color: #8a2be2;">Symbol</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,last_tick<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
     <span style="color: #008000;">&#123;</span>
      BidBuffer<span style="color: #008000;">&#91;</span>ticks<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>last_tick.<span style="color: #007788;">bid</span><span style="color: #008080;">;</span>
      AskBuffer<span style="color: #008000;">&#91;</span>ticks<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>last_tick.<span style="color: #007788;">ask</span><span style="color: #008080;">;</span>
      <span style="color: #0000ff;">int</span> shift<span style="color: #000080;">=</span>rates_total<span style="color: #000040;">-</span>1<span style="color: #000040;">-</span>ticks<span style="color: #008080;">;</span>
      ticks<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
      BidBuffer<span style="color: #008000;">&#91;</span>rates_total<span style="color: #000040;">-</span>1<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>last_tick.<span style="color: #007788;">bid</span><span style="color: #008080;">;</span>
      AskBuffer<span style="color: #008000;">&#91;</span>rates_total<span style="color: #000040;">-</span>1<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>last_tick.<span style="color: #007788;">ask</span><span style="color: #008080;">;</span>
      <span style="color: #8a2be2;">PlotIndexSetInteger</span><span style="color: #008000;">&#40;</span>0,<span style="color: #333399;">PLOT_SHIFT</span>,shift<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #8a2be2;">PlotIndexSetInteger</span><span style="color: #008000;">&#40;</span>1,<span style="color: #333399;">PLOT_SHIFT</span>,shift<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #8a2be2;">Comment</span><span style="color: #008000;">&#40;</span><span style="color: #008080;">&quot;Bid =&quot;</span>,last_tick.<span style="color: #007788;">bid</span>,<span style="color: #008080;">&quot;   Ask =&quot;</span>,last_tick.<span style="color: #007788;">ask</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
     <span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #808080;">//--- return value of prev_calculated for next call</span>
   <span style="color: #0000ff;">return</span><span style="color: #008000;">&#40;</span>rates_total<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
  <span style="color: #008000;">&#125;</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #808080;">//| set Maximum and Minimum for an indicator window based on last values</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span>
<span style="color: #0000ff;">void</span> setMaxMinPrice<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> last_values,<span style="color: #0000ff;">int</span> indent<span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
   <span style="color: #0000ff;">int</span> dgs<span style="color: #008080;">;</span>
   <span style="color: #0000ff;">double</span> dist<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> visiblebars<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #8a2be2;">ChartGetInteger</span><span style="color: #008000;">&#40;</span>0,<span style="color: #333399;">CHART_VISIBLE_BARS</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">int</span> depth<span style="color: #000080;">=</span><span style="color: #8a2be2;">MathMin</span><span style="color: #008000;">&#40;</span>last_values,visiblebars<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">int</span> startindex<span style="color: #000080;">=</span>last_values<span style="color: #000040;">-</span>depth<span style="color: #008080;">;</span>
   <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>startindex<span style="color: #000080;">&lt;</span>0<span style="color: #008000;">&#41;</span> startindex<span style="color: #000080;">=</span><span style="color: #008000;">0</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">int</span> max_index<span style="color: #000080;">=</span><span style="color: #8a2be2;">ArrayMaximum</span><span style="color: #008000;">&#40;</span>AskBuffer,startindex,depth<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   max_index<span style="color: #000080;">=</span>max_index<span style="color: #000080;">&gt;=</span>0<span style="color: #008080;">?</span>max_index<span style="color: #008080;">:</span><span style="color: #008000;">0</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">int</span> min_index<span style="color: #000080;">=</span><span style="color: #8a2be2;">ArrayMinimum</span><span style="color: #008000;">&#40;</span>BidBuffer,startindex,depth<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   min_index<span style="color: #000080;">=</span>min_index<span style="color: #000080;">&gt;=</span>0<span style="color: #008080;">?</span>min_index<span style="color: #008080;">:</span><span style="color: #008000;">0</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">double</span> MaxPrice<span style="color: #000080;">=</span>AskBuffer<span style="color: #008000;">&#91;</span>max_index<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>indent<span style="color: #000040;">*</span><span style="color: #ff00ff;">_Point</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">double</span> MinPrice<span style="color: #000080;">=</span>BidBuffer<span style="color: #008000;">&#91;</span>min_index<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>indent<span style="color: #000040;">*</span><span style="color: #ff00ff;">_Point</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">IndicatorSetDouble</span><span style="color: #008000;">&#40;</span><span style="color: #333399;">INDICATOR_MAXIMUM</span>,MaxPrice<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #8a2be2;">IndicatorSetDouble</span><span style="color: #008000;">&#40;</span><span style="color: #333399;">INDICATOR_MINIMUM</span>,MinPrice<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   dgs<span style="color: #000080;">=</span><span style="color: #8a2be2;">SymbolInfoInteger</span><span style="color: #008000;">&#40;</span><span style="color: #8a2be2;">Symbol</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,<span style="color: #333399;">SYMBOL_DIGITS</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   dist<span style="color: #000080;">=</span><span style="color: #8a2be2;">NormalizeDouble</span><span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>MaxPrice<span style="color: #000040;">-</span>MinPrice<span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #008000;">&#40;</span>LevelsCount<span style="color: #000040;">+</span>1<span style="color: #008000;">&#41;</span>, dgs<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
   <span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #008000;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>LevelsCount<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
      <span style="color: #008000;">&#123;</span>
       <span style="color: #8a2be2;">IndicatorSetDouble</span><span style="color: #008000;">&#40;</span><span style="color: #333399;">INDICATOR_LEVELVALUE</span>,i,MinPrice<span style="color: #000040;">+</span>dist<span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span>1<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
      <span style="color: #008000;">&#125;</span> 
  <span style="color: #008000;">&#125;</span>
<span style="color: #808080;">//+------------------------------------------------------------------+</span></pre></td></tr></table></div>

<p>Ca si indicator la nivel de tick, arata bine. Dar daca vrei sa mai pui ceva pe el, cum ar fi medii mobile sau benzi Bollinger, sau chiar sa monitorizezi spread-uri, ca in fereastra strategiei din Progress Apama ? Asta inseamna ca trebuie sa scrii indicatori din nou si din nou, numai ca sa-ti arate. Desigur, calculele sunt simplu de facut dintr-un expert &#8211; vor avea loc in marea majoritate in evenimentul OnTick() &#8211; dar ai nevoie de indicatori ca sa te ajute sa-ti vizualizezi strategia, chiar si daca aplicarea lor practica va fi in mai tot timpul non necesara, datorita calculului separat in expert. Dar fii constient ca <strong>nu exista istoric la nivel de tick. Asemenea indicatori deseneaza de la zero</strong>. Daca vrei sa vezi pe termen mai indelungat, chiar si cata vreme Strategy Tester nu e disponibil ca sa poti pune indicatorul pe el, trebuie sa-i dai timp sa afiseze, nefiind instant ca ceilalti indicatori.</p>
<p>Deci, <strong>daca ar exista istoric la nivel de tick, insemnand si PERIOD_TICK de asemenea,</strong> atunci anumite lucruri bune pentru noi vor aparea, cum ar fi:<br />
a. Nu ar fi nevoie de indicatori speciali pentru nivelul de tick.<br />
b. Charturile la nivel de tick apar imediat si se intind pe tot istoricul<br />
c. Istoricul la nivel de tick va face backtesterul mai corect, pentru ca nu va avea nevoie sa inventeze ticksi ca sa acopere asemenea zone.<br />
d. <em>(bila neagra):</em> <strong>Spatiu foarte mare de hard disk ocupat de istoric, cerinte mai mari de memorie.</strong></p>
<p>Ce inseamna pentru MetaQuotes:<br />
a. Schimbare in istoric si agregarea datelor, incepand de la tick pentru a face restul, nu de la M1, pastrand M1 ca referinta pentru istoricul vechi unde datele de tick nu sunt disponibile;<br />
b. Modificari minore la functiile de acces la date (gen campuri openbid, openask, closebid, closeask la structura MqlRates etc).<br />
c. Modificari minore la backtester;<br />
d. <strong>MetaTrader brandat ca platforma aproape institutionala.</strong></p>
<p>De ce am vrea asta? Ei bine, de ce baietii mari nu folosesc charturi la nivel de bara? La urma urmei, <strong>nu exista surprize pe charturile la nivel de tick</strong> &#8211; si o sa investigam asta alta data &#8211; asa ca n-o sa te mai temi ca o bara ca un picior de paianjen iti va atinge stop loss in mijlocul unui trend care arata bine.</p>
<p>Asa ca, daca ai Nivelul II disponibil, si daca il automatizezi, esti aproape de nivelul HFT. De fapt, ceea ce e blama astazi nu e intregul trading algoritmic &#8211; pentru ca nu se gandesc niciodata la userii de MetaTrader, E-Signal sau chiar NeoTicker &#8211; ci tradingul institutional , necinstit (a se citi &#8220;colocat&#8221;). La suprafata, discutia este de conflictul intre tradingul computerizat si cel uman. Dar ambele parti ale conflictului lucreaza pe Nivelul II, unde exista posibilitatea de a cota si a avea ordinul executat (adica sa cumperi la bid sau sa vinzi la ask), si sa platesti mici comisioane pentru aceste tranzactii. Chestia e ca, daca am avea Nivel II plus automatizarea MetaTrader, cu comisioane mici de brokeraj, anumite forme de HFT ar deveni aplicabile. Asta e un lucru care a ramas ascuns, faptul ca <strong>tradingul de latenta redusa</strong> nu e chiar acelasi lucru cu <strong>tradingul de frecventa inalta</strong>. Eu cred ca tradingul algoritmic de Nivel II poate fi proiectat sa fie HFT chiar daca nu beneficiaza de executia cu latenta redusa. Problema e, traderii au fost indoctrinati asa de mult cu Nivelul I, incat e foarte greu sa faci ca Nivelul II sa fie acceptat. Pentru ca <strong>Nivelul I are o mentalitate &#8220;cumperi sau vinzi acum, vezi mai tarziu daca ai avut dreptate&#8221;</strong>, pe cand <strong>Nivelul II o are in gen &#8220;vezi asta, cotezi, inchizi mai tarziu daca ai avut executie&#8221;</strong>. Acelasi &#8220;mai tarziu&#8221; are intelesuri diferite, pentru Nivelul I inseamna de la minute in sus, de regula ore, pe cand la Nivelul II inseamna secunde. Stopul tarator in Nivelul II se misca pip cu pip. Si totul este pentru a face <strong>bani in timp real</strong>. Nu in ore, nu maine, nu saptamana viitoare. Ci mai degraba, ca sa vezi equity crescand de cateva ori pe minut. Ceea ce se uita de multe ori in trading, e ca strategiile de trading nu sunt pentru roboti care pot astepta o eternitate sa-si imbunatateasca strategiile de trading. <strong>Viata se intampla in timp real.</strong> <strong>Nu suntem nemuritori</strong> si dincolo de asta, <strong>tineretea e al naibii de scurta</strong>. Acesta e si unul din factorii care imping reducerea latentei. Pe de o parte, exista nevoia de a avea ordinele executate inaintea concurentei, pe de alta parte, mai multe si mai multe profituri pe o unitate de timp din ce in ce mai mica inseamna salarii mai grase pentru management&#8230; In acest timp, chiar si cel mai rationali si mai de succes traderi pe Nivelul I nu pot trece de anumite limte ale rentabilitatii. Esential, sistemele automate de Nivel II au scopul asta, de a comprima timpul, si de a obtine rentabilitati similare Nivelului I, dar intr-un timp de o suta de ori mai mic sau chiar si mai mic. Dar aceste rentabilitati sunt relative si mici, vazute din interiorul industriei hedge fund. Pentru ca, rezultatele sistemelor sunt relative fata de lichiditatea medie utilizata. Adica, o mare parte din lichiditate ramane neutilizata, dar trebuie sa intoarca rentabilitate. Si, in timp ce diversificarea e un mod de a utiliza mai multa lichiditate, timpul e cealalta fata a monedei, pentru ca o tranzactie pe secunda e un ceva, iar o suta de tranzactii in aceeasi secunda, intinzandu-se pe intervale in microsecunde fiecare, sunt altceva. Pe de alata parte, platformele HFT costa sume nerusinate de bani, iar institutiile mai mici nu si le permit, pentru ca o mare parte din rentabilitate trebuie sa finanteze costurile platformelor si salariile quantilor cu PhD. Acum intelegi de ce un MetaTrader de Nivel II, chiar fara latenta redusa, este important ? Chiar si Irene Aldridge admite ca <strong>nu sunt prea multe companii care vand produse pentru buyside</strong>. De fapt, daca excludem Strategy Runner, X-Trader si Ninja Trader, nici nu-mi aduc aminte de altele. X-Trader are o automatizare institutionala in termeni de costuri, iar Strategy Runner e asa de criptic ca trebuie sa platesti foarte mult pentru dezvoltarea strategiilor. Niciuna dintre aceste platforme nu integreaza optiunile, iar formarea pietei in optiuni, avand executii acolo, e o cale importanta de a face economii, caci spreadurile optiunilor sunt ridicate.</p>
<p>La urma urmei, daca te uiti pe forumul MQL5, poti vedea ca MetaQuotes cel putin pare a fi hotarata sa <strong>faca MetaTrader 5 cea mai buna platforma de trading din lume</strong>.  Daca MetaTrader5 devine <strong>Level II ready</strong> (va amintiti vechile placi de baza cu eticheta <strong>Prescott ready</strong> ?) si prin generarea unei constientizari crescute asupra importantei actiunii la nivel de tick in comunitatea de retail trading, se pot determina schimbari la nivelul brokerajelor.<br />
Pe masura ce brokerii vor da mai mult acces la ECN-uri (de la <em>Electronic Currency Network</em>) cu spreaduri stranse, acestea vor cobori, si e posibil ca sistemul bazat pe spreaduri chiar sa dispara, fiind inlocuit de modelul pe baza de comision &#8211; si zic aici comisioane mici, suficient de mici cat sa-l faca pe trader sa simta ca e intr-un ECN , nu ca are doar un feed de retail care brandeaza comisionul in loc de spread. In acest fel mult strategii de la nivelele institutionale vor deveni portabile catre MetaTrader si lumea de retail &#8211; care poate chiar va deveni &#8220;institutional cu latenta mare&#8221; , sau, mai important pentru traderii de retail, <strong>HFT GRATUIT, usor de instalat care nu e bazat pe latenta</strong>. Problema e, comisioanele sunt functie de volum. Cu cat e mai mare volumul, cu atat sunt mai mici comisioanele. Totusi, cel putin traderii forex au levier mare. (Da, americanii s-ar putea ca in curand sa nu-l mai aiba). Avand levier mare, pierderile mici continua sa loveasca in equity. Cat de mult ai putea suporta pierderi din comisioane pana cand acestea devin destul de mici pentru trece pe profit din rabaturi? Sa nu uitam, economia globala e in recesiune, si brokerii, ca orice afacere normala din lumea asta, traiesc din vanzari&#8230; Ceea ce-i face mai deschisi pentru inovare si reducerea comisioanelor, de la mici la infime. </p>
<p>Pe de alta parte, cum ar putea fi MT sa fie utilizat ca platforma de Nivel II asa cum e acum? Sigur, OrderSend() poate fi folosit intr-o maniera Level II, dar cu un backtester care doar modeleaza ticksi, in loc de a fosi ticksi reali? Cred ca nu. Datele la nivel de tick sunt absolut necesare pentru ca statia sa fie brandata ca una de Nivel II.<br />
Totusi, mai sunt lucruri de facut pana acolo, caci MetaQuotes mai are si alte teme de facut : Strategy Tester, o sintaxa mai buna pentru OnTrade(), fereastra Depth of Market si mai ales OnBookEvent(). Cand toate acestea vor fi completate, MT5 va fi atat de departe incat vei uita de dulciurile MT4, sunt sigur de asta&#8230;</p>
<p><em>Daca traderii din comunitatea de retail nu cer totusi mai mult, nimic nu se va obtine, caci ei tin mult la Level II&#8230;</em></p>
<div class='dd_after'><table><tr><td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/&amp;t=Tick+Data+%26+Charting+%3A+De+ce+nu+un+MetaTrader+de+Nivel+II+%3F&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td><td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/&amp;title=Tick+Data+%26+Charting+%3A+De+ce+nu+un+MetaTrader+de+Nivel+II+%3F&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></td><td><script type='text/javascript'><!--yahooBuzzArticleHeadline=Tick+Data+%26+Charting+%3A+De+ce+nu+un+MetaTrader+de+Nivel+II+%3F;//--></script><script type='text/javascript' src='http://d.yimg.com/ds/badge2.js' badgetype='small-votes'></script></td><td><iframe src='http://api.tweetmeme.com/button.js?url=http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/&amp;source=&amp;style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></td><td><script type='text/javascript'> var fbShare = {url: 'http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/',size:'small'}</script> <script type='text/javascript' src='http://widgets.fbshare.me/files/fbshare.js'></script></td></tr></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ -->]]></content:encoded>
			<wfw:commentRss>http://mqlmagazine.com/ro/metatrader5/tick-data-charting-de-ce-nu-un-metatrader-de-nivel-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debuggerul &#8211; o noutate in MT5</title>
		<link>http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/</link>
		<comments>http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:29:53 +0000</pubDate>
		<dc:creator>Bogdan Baltatu, MQLmagazine editor</dc:creator>
				<category><![CDATA[MetaTrader5]]></category>

		<guid isPermaLink="false">http://mqlmagazine.com/ro/?p=567</guid>
		<description><![CDATA[[English version] [MQLmagazine.com in english] [Editia romaneasca]
Una dintre inbunatatirile aduse de MetaQuotes platformei de dezvoltare MetaEditor este introducerea unui debugger.
Pe parcursul articolului voi folosi cuvantul ‘eroare’ ca referinta pentru erorile de gandire ale codului cum ar fi conditii scrise gresit , expresii de calcul gresit , .. Atentie: nu le confundati cu erorile pe care [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mqlmagazine.com/metatrader5/the-debugger-a-novelty-of-mt5/" target="_top">[English version]</a> <a title="[MQLmagazine.com in english]" href="http://mqlmagazine.com" target="_top">[MQLmagazine.com in english]</a> <a title="[Editia romaneasca]" href="http://mqlmagazine.com/ro" target="_top">[Editia romaneasca]</a></p>
<p>Una dintre inbunatatirile aduse de MetaQuotes platformei de dezvoltare MetaEditor este introducerea unui debugger.</p>
<p>Pe parcursul articolului voi folosi cuvantul ‘eroare’ ca referinta pentru erorile de gandire ale codului cum ar fi conditii scrise gresit , expresii de calcul gresit , .. Atentie: nu le confundati cu erorile pe care le intoarce compilatorul.</p>
<p>Pentru cei care nu stiu scopul debuggerului este de a rula linie cu linie codul pentru a gasi erorile conceptuale de programare, totodata si pentru a vedea in timp real valoarea variabilelor.</p>
<p>In lipsa unui Debugger, in MT4, programatorii se foloseau de functia Print pentru a gasi erorile in cod , aceasta fiind singura metoda. Aceasta metoda este foarte greoaie si timpul de depistare al erorii este mult mai mare decat in cazul folosirii unui Debugger pentru ca functia Print necesita compilarea de fiecare data a codului , atasarea lui pe ecran si citirea in loguri pentru a vedea ce a scris functia Print. In cazul in care in cod apelam functii care dadeau un rezultat gresit (functia era prost scrisa) trebuia sa ne ducem si in functia respectiva sa punem si pe acolo linii de Print pentru a vedea unde este eroarea. Dupa depistarea erorii trebuia curatat codul de liniile de Print folosite in scopul identificarii erorii.</p>
<p>Momentan debuggerul merge doar pe testarea scripturilor, dar credem ca va fi integrat in Strategy Tester pentru a functiona pe experti. Acest lucru este necesar si pentru ca anumite module cu probleme ale expertilor pot sa fie executate numai in conditii rare de piata, care nu vor aparea in testarea forward, dar vor fi revelate in timpul backtestului.</p>
<p>Acum lucrurile s-au simplificat, din aceeasi fereastra se poate urmari functionarea programului prin parcurgerea linie cu linie a codului.</p>
<p>Pentru a folosi debuggerul trebuie ca in cod acolo sa apelam functia <strong>DebugBreak()</strong> acolo unde dorim sa oprim executia in viteza pentru a trece la executia linie cu linie. Daca atasam pe chart un script care are in cod apelata functia de oprire a debuggerului acesta nu se va opri din executie , functia oprind codul doar cand se porneste modul debug din meniul MetaEditor.</p>
<p>Pentru a porni scriptul pentru debug se apasa pe Debug->Start sau pe tasta F5 sau pe butonul dedicat din bara special dedicata debuggerului , bara in care se mai gasesc si 3 butoane pentru parcurgerea codului.</p>
<p><img src="http://mqlmagazine.com/ro/wp-content/uploads/2010/02/MT5Debugger.PNG" alt="MT5Debugger" title="MT5Debugger" width="690" height="803" class="alignnone size-full wp-image-1061" /></p>
<p>Grupul de butoane care se afla in dreptunghiul numerotat cu 1 sunt cele 6 butoane care se folosesc la debug. Primele 3 butoane sunt pentru a intra si iesi in/din modul debug , dar si pentru a pune pauza. Utimele 3 butoane sunt pentru a parcurge codul in modul debug dar in mai multe moduri:</p>
<p>- parcurgand codul cu Step Into (F11) parcurgem linie cu linie dar intram in functiile la care se face referire. De exemplu daca suntem cu cursorul pe linia &#8216;p=prod(a,b)&#8217; si apasam Step Into atunci cursorul o sa se duca in functia &#8216;prod&#8217; si vom putea parcurge linie cu linie codul aceste functii;</p>
<p>- parcurgand codul cu Step Over(F10) parcurgem linie cu linie codul , dar debuggerul va sari functiile apelate (vor fi executate, dar nu linie cu linie intr-un mod debug);</p>
<p>-Step Out ar trebui sa iasa din functia in care suntem cu cursorul dar sa nu iasa din modul debug , lucru care se intampla acum.</p>
<p>Sageata verde notata cu 2 reprezinta linia pe care ne aflam in momentul curent. Daca apasam pe F10 (Step Over) sagetica se va muta pe linia urmatoare.</p>
<p>Ruland un cod in modul &#8216;Debug&#8217; se deschide o noua pagina in pageframeul Toolbox care este impartita in doua  (zonele 3 si 4).</p>
<p>In zona 3 vedem numele fisierului in care ne aflam , numele functiei dar si numarul liniei pe care suntem in modul debug.</p>
<p>Zona 4 este similara cu fereastra Watch din Borland C++ si Borland Pascal, sau alte medii de dezvoltare mai vechi , si in ea se pot urmari valoarea variabilelor dar si tipul lor.</p>
<p>In poza de mai sus in zona 4 avem 3 variabile pe care le urmarim : a, s si p. Variabila &#8216;a&#8217; are valoare 5 deoarece am trecut de linia &#8216;a=5&#8242; unde initializam variabila cu 5. Variabila &#8216;p&#8217; are valoarea 0 , deoarece asta e valoarea implicita pe care o iau variabilele de tip integer cand le definesc , iar &#8217;s&#8217; este nedefinita, pentru ca chiar acolo s-a oprit executia, inainte de declararea ei.</p>
<p>Acestea fiind spuse va doresc mult succes la scrierea codurilor si debugging.</p>
<div class='dd_after'><table><tr><td><iframe src='http://digg.com/api/diggthis.php?w=new&amp;u=http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/&amp;t=Debuggerul+-+o+noutate+in+MT5&amp;s=compact' height='18' width='120' frameborder='0' scrolling='no'></iframe></td><td><iframe src='http://widgets.dzone.com/links/widgets/zoneit.html?url=http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/&amp;title=Debuggerul+-+o+noutate+in+MT5&amp;t=2' height='18' width='120' frameborder='0' scrolling='no'></iframe></td><td><script type='text/javascript'><!--yahooBuzzArticleHeadline=Debuggerul+-+o+noutate+in+MT5;//--></script><script type='text/javascript' src='http://d.yimg.com/ds/badge2.js' badgetype='small-votes'></script></td><td><iframe src='http://api.tweetmeme.com/button.js?url=http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/&amp;source=&amp;style=compact' height='20' width='90' frameborder='0' scrolling='no'></iframe></td><td><script type='text/javascript'> var fbShare = {url: 'http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/',size:'small'}</script> <script type='text/javascript' src='http://widgets.fbshare.me/files/fbshare.js'></script></td></tr></table></div><!-- Generated by Digg Digg plugin, 
    Author : Yong Mook Kim
    Website : http://www.mkyong.com/blog/digg-digg-wordpress-plugin/ -->]]></content:encoded>
			<wfw:commentRss>http://mqlmagazine.com/ro/metatrader5/debuggerul-o-noutate-in-mt5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

