MQL5 Kullanan Hisse Osilatörü

 

Herkese selam!

Bir gündür, Eklendiği çizelgenin altında Hisse Senedi osilatörünü inşa etme sorunuyla uğraşıyorum (çünkü Test Cihazındaki çizelge ana şeyden yoksun, yani, bu arada, bu arada, piyasa değişiklikleriyle karşılaştırma kolaylığı, başkaları tarafından yazılmıştır).

Sorun, anladığım kadarıyla iki taraflı.

Bir yandan, osilatörün OnCalculate yönteminde, her çubuk için Equity AccountInfoDouble(ACCOUNT_EQUITY) belirleme yöntemi çalışmayı reddediyor.

Öte yandan, AccountInfoDouble(ACCOUNT_EQUITY) yönteminin çalıştığı Expert Advisor'ın OnTick kodundan osilatör grafiğini (daha doğrusu veri arabelleğini) değiştirmenin mümkün olup olmadığını anlamak zordur.

Aşağıda, tüm basitliğine rağmen sonuç vermeyen osilatörün kodunu veriyorum.

//+------------------------------------------------------------------+
//|                                                       Equity.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      " http://www.mql5.com "
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double        Values[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(){
   //--- indicator buffers mapping
   SetIndexBuffer(0,Values,INDICATOR_DATA);
   PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, 100);
   PlotIndexSetDouble(0, PLOT_EMPTY_VALUE, EMPTY_VALUE);
   ArraySetAsSeries(Values, false);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[]){
   int toCount = (int)MathMin(rates_total, rates_total - prev_calculated + 1);
   for (int i = toCount - 2; i >= 0; --i){
      Values[i] = AccountInfoDouble(ACCOUNT_EQUITY);  
   }
   return rates_total;
}

Sezgisel olarak, sorunun basitçe çözülmesi gerektiğini anlıyorum, ancak hala nasıl olduğunu anlayamıyorum.

Belki birinin bu konuda bazı düşünceleri vardır?

 
DV2010 :

Herkese selam!

Bir gündür, Eklendiği çizelgenin altında Hisse Senedi osilatörünü inşa etme sorunuyla uğraşıyorum (çünkü Test Cihazındaki çizelge ana şeyden yoksun, yani, bu arada, bu arada, piyasa değişiklikleriyle karşılaştırma kolaylığı, başkaları tarafından yazılmıştır).

Sorun, anladığım kadarıyla iki taraflı.

Bir yandan, osilatörün OnCalculate yönteminde, her çubuk için Equity AccountInfoDouble(ACCOUNT_EQUITY) belirleme yöntemi çalışmayı reddediyor.

Öte yandan, AccountInfoDouble(ACCOUNT_EQUITY) yönteminin çalıştığı Expert Advisor'ın OnTick kodundan osilatör grafiğini (daha doğrusu veri arabelleğini) değiştirmenin mümkün olup olmadığını anlamak zordur.

Aşağıda, tüm basitliğine rağmen sonuç vermeyen osilatörün kodunu veriyorum.


Sezgisel olarak, sorunun basitçe çözülmesi gerektiğini anlıyorum, ancak hala nasıl olduğunu anlayamıyorum.

Belki birinin bu konuda bazı düşünceleri vardır?

AccountInfoDouble (ACCOUNT_EQUITY); mevcut özkaynak durumunu döndürür ve geçmişi yoktur. Örneğinizde, gösterge arabelleğinin tüm hücreleri aynı değerle yazılmıştır. İşte bir öz sermaye göstergesi örneği, ancak yalnızca grafikte başlatıldığı andan itibaren çalışır

 //+------------------------------------------------------------------+
//|                                                       Equity.mq5 |
//|                                                    Сергей Грицай |
//|                                               sergey1294@list.ru |
//+------------------------------------------------------------------+
#property copyright "Сергей Грицай"
#property link       "sergey1294@list.ru"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  MediumAquamarine
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1

double          Label1Buffer1[];
double          Label1Buffer2[];
double          Label1Buffer3[];
double          Label1Buffer4[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Label1Buffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,Label1Buffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,Label1Buffer4, INDICATOR_DATA );

   ArraySetAsSeries (Label1Buffer1,true);
   ArraySetAsSeries (Label1Buffer2,true);
   ArraySetAsSeries (Label1Buffer3,true);
   ArraySetAsSeries (Label1Buffer4,true);
   
   ArrayInitialize (Label1Buffer1, 0.0 );
   ArrayInitialize (Label1Buffer2, 0.0 );
   ArrayInitialize (Label1Buffer3, 0.0 );
   ArrayInitialize (Label1Buffer4, 0.0 );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   Label1Buffer1[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
   Label1Buffer2[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
   Label1Buffer3[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
   Label1Buffer4[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 

Gösterge biraz düzeltildi, böylece daha iyi olacak

 #property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  MediumAquamarine
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1

double          Label1Buffer1[];
double          Label1Buffer2[];
double          Label1Buffer3[];
double          Label1Buffer4[];

datetime Time[ 1 ];
datetime curbar[ 1 ];
datetime lastbar[ 1 ];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Label1Buffer1, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,Label1Buffer2, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,Label1Buffer3, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,Label1Buffer4, INDICATOR_DATA );

   ArraySetAsSeries (Label1Buffer1,true);
   ArraySetAsSeries (Label1Buffer2,true);
   ArraySetAsSeries (Label1Buffer3,true);
   ArraySetAsSeries (Label1Buffer4,true);

   ArrayInitialize (Label1Buffer1, 0.0 );
   ArrayInitialize (Label1Buffer2, 0.0 );
   ArrayInitialize (Label1Buffer3, 0.0 );
   ArrayInitialize (Label1Buffer4, 0.0 );

//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   if (NewBar())
     {
      Label1Buffer1[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
      Label1Buffer2[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
      Label1Buffer3[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
      Label1Buffer4[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
     }
   if ( AccountInfoDouble ( ACCOUNT_EQUITY )>Label1Buffer2[ 0 ])Label1Buffer2[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
   if ( AccountInfoDouble ( ACCOUNT_EQUITY )<Label1Buffer3[ 0 ])Label1Buffer3[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
   Label1Buffer4[ 0 ]= AccountInfoDouble ( ACCOUNT_EQUITY );
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
bool NewBar()
  {
   if ( CopyTime ( _Symbol , 0 , 0 , 1 ,Time)< 1 ) return (false);

   curbar[ 0 ]=Time[ 0 ];
   if (lastbar[ 0 ]!=curbar[ 0 ])
     {
      lastbar[ 0 ]=curbar[ 0 ];
       return (true);
     }
   else
     {
       return (false);
     }
  }
//+------------------------------------------------------------------+
 

Resim böyle çıkıyor

t

 

Sergey, teşekkürler!

Ancak tarihe dayalı tam teşekküllü bir Hisse Senedi osilatörü yaratmak gerçekten mümkün değil mi?

Sonuçta Expert Advisor'ın OnTick'inde testerda seçilen dönem için tüm Hisse değerleri en basit şekilde görüntüleniyor.

Yazdır( AccountInfoDouble ( ACCOUNT_EQUITY ))...

 
DV2010 :

Sergey, teşekkürler!

Ancak tarihe dayalı tam teşekküllü bir Hisse Senedi osilatörü yaratmak gerçekten mümkün değil mi?

Sonuçta Expert Advisor'ın OnTick'inde testerda seçilen dönem için tüm Hisse değerleri en basit şekilde görüntüleniyor.

Yazdır( AccountInfoDouble ( ACCOUNT_EQUITY ))...

Mümkün, ama o kadar kolay değil. İşlemlerin geçmişinde ticareti taklit etmek gerekir. ve farklı araçlar arasında veri senkronizasyonu ile ilgili sorunlar olabilir. Ve bir göstergeyi bir test cihazıyla karıştırmayın. Test cihazı sadece ticareti taklit eder.
 

Print'te ( AccountInfoDouble ( ACCOUNT_EQUITY ) ) değişen değerlerin görüntülenmesine bakılırsa, Equity'de değişiklikler var, çünkü Equity'nin geçmişteki mevcut durumu göstergenin OnCalculatde(...) yönteminde taklit ediliyor ve bu, EA'nın OnTick yönteminde işleme.

Anlaşma nedir? Göstergede değişmeden kalırken (benim durumumda - 10000) kar neden günlük çıktısında değişiyor?

Kod en basitidir (biraz yeniden yazılmıştır):

 //+------------------------------------------------------------------+
//|                                                       Equity.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
//--- indicator buffers
double Values[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit (){
   //--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Values, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN , 100 );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Values, false);
   return ( 0 );
  }


//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[]){


   //---Блок контрольных показателей
   HistorySelect ( 0 , TimeCurrent ());
   Print ( "Equity - OnCalculate: HistoryDealsTotal()=" , HistoryDealsTotal ());
   Print ( "Equity - OnCalculate: AccountInfoDouble(ACCOUNT_EQUITY)=" , AccountInfoDouble ( ACCOUNT_EQUITY ));
   Print ( "Equity - OnCalculate: rates_total=" , rates_total);
   Print ( "Equity - OnCalculate: prev_calculated=" , prev_calculated);
   Print ( "Equity - OnCalculate: ArraySize(open)= " , ArraySize (open));
   Print ( "Equity - OnCalculate: ArraySize(Values)= " , ArraySize (Values));
   Print ( "Equity - OnCalculate: datetime(time[" , ArraySize (time)- 1 , "])= " , datetime (time[ ArraySize (time)- 1 ]));  


   //---Блок заполнения Индикатора и журнала сообщений значениями
   for ( int i = prev_calculated; i <= rates_total- 1 ; ++i){
       //Путем сопоставления с выводом значений в Print() исследуются 2 варианта:
       // - Первый вариант - индикатор показывает динамику цен - правильно
       //Values[i] = open[i]; //То есть в соответствии с выводом в Print(...)
       // - Второй вариант - индикатор показывает динамику Equity - неправильно, так как объем остается постоянным
      Values[i] = AccountInfoDouble ( ACCOUNT_EQUITY ); //Хотя в выводе Print(...) он меняется 
       //---Блок проверки даты и показателей цены открытия и Equity в цикле заполнения в рамках диапазона тестирования:
       if (prev_calculated > 0 ){
         Print ( "Equity - OnCalculate - Cycle: datetime([" ,i, "])= " , datetime (time[i]));
         Print ( "Equity - OnCalculate - Cycle: ArraySize([" ,i, "])= " , open[i]);
         Print ( "Equity - OnCalculate - Cycle: AccountInfoDouble(ACCOUNT_EQUITY) = " , AccountInfoDouble ( ACCOUNT_EQUITY ));    
      }
   }
   return rates_total;
}


Sonuç olarak, Göstergedeki geçmişinde, Basılı çıktıda değişse de bakiyenin değeri sabittir ve = 10000 , ve bakiyenin değil fiyatların dinamikleri durumunda, ekran doğru bir şekilde gerçekleşir.

Örneğin, test edilen periyodun son çubukları için parametreler aşağıdaki gibidir.

2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - OnCalculate - Döngü: AccountInfoDouble(ACCOUNT_EQUITY) = 9949.2999999999999
2011.01.19 19:27:27 Core 1 2011.01.14 22:00:00 Equity - OnCalculate - Cycle: ArraySize([6418])= 1.33724
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - Hesapla - Döngü: datetime([6418])= 2011.01.14 22:00:00
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - OnCalculate: datetime(time[6418])= 2011.01.14 22:00:00
2011.01.19 19:27:27 Core 1 2011.01.14 22:00:00 Equity - OnCalculate: ArraySize(Values)= 6419
2011.01.19 19:27:27 Core 1 2011.01.14 22:00:00 Equity - OnCalculate: ArraySize(open)= 6419
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - OnCalculate: prev_calculated=6418
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - OnHesapla: oranları_toplam=6419
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Öz Sermaye - OnCalculate: AccountInfoDouble(ACCOUNT_EQUITY)=9949.2999999999999
2011.01.19 19:27:27 Çekirdek 1 2011.01.14 22:00:00 Hisse Senedi - OnCalculate: HistoryDealsTotal()=12

Документация по MQL5: Общие функции / Print
Документация по MQL5: Общие функции / Print
  • www.mql5.com
Общие функции / Print - Документация по MQL5
Dosyalar:
Equity.mq5  4 kb
 

Çok daha güzel.

 
DV2010 :

Aşağıda, tüm basitliğine rağmen sonuç vermeyen osilatörün kodunu veriyorum.

Vurgulanması için kodu doğru şekilde yapıştırın .
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
DV2010 :

Print'te ( AccountInfoDouble ( ACCOUNT_EQUITY ) ) değişen değerlerin görüntülenmesine bakılırsa, Equity'de değişiklikler var, çünkü Equity'nin geçmişteki mevcut durumu göstergenin OnCalculatde(...) yönteminde taklit ediliyor ve bu, EA'nın OnTick yönteminde işleme.

Anlaşma nedir? Göstergede değişmeden kalırken (benim durumumda - 10000) kar neden günlük çıktısında değişiyor?


Göstergenin yalnızca ilk kez hesaplandığını ve döngünün sonraki tiklerde çalışmadığını anlamak için tüm gereksiz çıktıları yorumlamanız ve prev_calculated değerini görüntülemeye başlamanız yeterlidir.

   //---Блок контрольных показателей
   //HistorySelect(0,TimeCurrent());
   //Print("Equity - OnCalculate: HistoryDealsTotal()=", HistoryDealsTotal());
   //Print("Equity - OnCalculate: AccountInfoDouble(ACCOUNT_EQUITY)=", AccountInfoDouble(ACCOUNT_EQUITY));
   //Print("Equity - OnCalculate: rates_total=", rates_total);
   //Print("Equity - OnCalculate: prev_calculated=", prev_calculated);
   //Print("Equity - OnCalculate: ArraySize(open)= ", ArraySize(open));
   //Print("Equity - OnCalculate: ArraySize(Values)= ", ArraySize(Values));
   //Print("Equity - OnCalculate: datetime(time[",ArraySize(time)-1,"])= ", datetime(time[ArraySize(time)-1]));  
   Print ( "prev_calculated=" ,prev_calculated, "   rates_total=" ,rates_total);
 

Rosh , dürüst olmak gerekirse, seni biraz anladım. Çekilme yalnızca Öz Sermayenin test aralığı içinde değişir.  

Test aralığının başlangıcından önce, OnCalculated'daki döngünün aralığa göre çalışması ve ardından test aralığı içinde, OnCalculated'a yapılan her çağrının yalnızca bir onay ve geçiş içermesi anlaşılabilir, ancak neden   Değişen Değerler Gösterge dizisine yazılmasına rağmen değişen Özkaynak değeri Göstergede görüntülenmiyor mu?

OnCalculated'ın kısaltılmış bir versiyonunun kodu:

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[]){
   Print ( "prev_calculated=" ,prev_calculated, "   rates_total=" ,rates_total);
   Print ( "Equity - OnCalculate: AccountInfoDouble(ACCOUNT_EQUITY)=" , AccountInfoDouble ( ACCOUNT_EQUITY ));
   for ( int i = prev_calculated; i <= rates_total- 1 ; ++i){
      Values[i] = AccountInfoDouble ( ACCOUNT_EQUITY );
   }
   return rates_total;
}

Gösterge değerleri dizisine yazdığımız Özkaynakların ilk 10000 bakiyesinden değiştiğini ve farklılaştığını gösteren test dönemi sonundaki sonuçlar şöyle:

 2011.01 . 20 13 : 32 : 07      Core 1   OnTester result 0
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 23 : 59 : 59    order performed sell 0.15 at 1.33829 [ # 13 sell 0.15 EURUSD at 1.33829 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 23 : 59 : 59    deal performed [ # 13 sell 0.15 EURUSD at 1.33829 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 23 : 59 : 59    deal # 13 sell 0.15 EURUSD at 1.33829 done (based on order # 13 )
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 23 : 59 : 59    position closed due end of test at 1.33829 [buy 0.15 EURUSD 1.33593 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 22 : 00 : 00    Equity - OnCalculate : AccountInfoDouble ( ACCOUNT_EQUITY )= 9949.299999999999
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 22 : 00 : 00    prev_calculated= 6418    rates_total= 6419
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 21 : 00 : 00    CTrade::PositionOpen: instant buy 0.15 EURUSD at 1.33593 [done at 0.00000 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 21 : 00 : 00    order performed buy 0.15 at 1.33593 [ # 12 buy 0.15 EURUSD at 1.33593 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 21 : 00 : 00    deal performed [ # 12 buy 0.15 EURUSD at 1.33593 ]
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 21 : 00 : 00    deal # 12 buy 0.15 EURUSD at 1.33593 done (based on order # 12 )
2011.01 . 20 13 : 32 : 07      Core 1    2011.01 . 14 21 : 00 : 00    instant buy 0.15 EURUSD at 1.33593 ( 1.33577 / 1.33593 / 1.33577 )
Ve işte test dönemi için atanmış değerlere sahip denge tablosu

2011.01.14 22:00 itibari ile gösterge tablosuna göre Özkaynak değerinin kontrol edilmesi.

2011.01 tarihli kütüğe göre. 14 22:00:00 9949 olmalıdır :

 ... 2011.01 . 14 22 : 00 : 00    Equity - OnCalculate : AccountInfoDouble ( ACCOUNT_EQUITY )= 9949.299999999999

Ve gösterge tablosunda ne görüyoruz?

Neden: