Geliştiriciler! Oluşturduğunuz şeyi hiç test ediyor musunuz? - sayfa 9

 
Mikalas :

P-4 Bence operasyonel bilgi edinmek çok daha fazla

daha ilginç bir hikaye. Araç hakkında iki şey bilmemiz gerekiyor:

1. Siparişler

2. Konum

Ve bana öyle geliyor ki, işlemleri analiz etmek çok daha önemli çünkü. onlar en alt seviyededir ve onlardan emir ve pozisyonları öğrenebilirsiniz, ancak bunun tersi doğru değildir. Tanrı onlarla olsun.

OnInit(), programın başında bir kez yürütülür, içinde for, gerekli kontrollerin bir bloğu dikilir. Ancak, yalnızca bir kontrol bloğu olmalıdır. Danışmanın durumunu mevcut durumla senkronize eder. Ve yeni verilerin hangi taraftan, başlatma anındaki siparişlerin geçmişinden, yürütme anındaki geçmişten veya OnTradeTransaction olayından geldiği önemli değildir. Sonuç aynı olmalıdır, çünkü Bundan sorumlu blok da sadece bir tanesidir.

 

Basil "ilkel" bir kod parçasıdır.

Burada her şey basit - bir sipariş alıyorsunuz ve onunla çalışıyorsunuz....

my_order = temp_order;

Tek çizgi!

 
papaklass :

Mevcut haliyle OnTradeTransaction olayına gerçekten ihtiyacınız var mı?

Görünüşe göre, öyle değil, çünkü hala tarihten bilgi almanız gerekiyor.
 

Mikalas :

Az önce ürünün test edilmesi gerektiğini fark ettim (param için test ediyorum)!

Sanırım bu konu dışına çıkıyor.

Peki dergi ve kod verir misin?

Yardım etmek için buradayım.

 
C-4 :
Görünüşe göre, öyle değil, çünkü hala tarihten bilgi almanız gerekiyor.

İşte o zamanlar! Tarihte doğru mu?

papaklass, muhtemelen, OnTradeTransaction'ın hata döndürdüğü anlamına mı geliyordu?

 

sergeev -> Yardım etmek için buradayım.

Üzgünüm ama yardıma ihtiyacım yok.

 
Mikalas :

sergeev -> Yardım etmek için buradayım.

Üzgünüm ama yardıma ihtiyacım yok.

neden 9 sayfada salya akıyor?
 
Mikalas :

Basil "ilkel" bir kod parçasıdır.

Burada her şey basit - bir sipariş alıyorsunuz ve onunla çalışıyorsunuz....

Tek çizgi!

Bir satır mı yoksa yüz satır mı olduğu ile ilgili değil. Bu bir yaklaşım meselesi. TAMAM. İşte ne demek istediğimi görmek için bir örnek kod. İster başlatma ister yeni bir siparişin gelişi olsun, TradeTransaction olayı olsun veya olmasın yeni siparişlerin gelişini izleme garanti edilir:

 /*Какое бы событие не наступило, оно будет обработано OnRefresh()*/

OnInit ()
{
    OnRefresh();
}

void OnTimer ( void )
{
    OnRefresh();
}

void    OnTradeTransaction (
       const MqlTradeTransaction &    trans,
       const MqlTradeRequest &        request,
       const MqlTradeResult &         result
   )
{
     OnRefresh();
}

///
/// Следит за поступлением новых трейдов и ордеров.
///

void OnRefresh()
{
     HistorySelect ( 0 , TimeCurrent ());
    for (; ordersCountNow < HistoryOrdersTotal (); ordersCountNow++)
    {  
       printf(HistoryOrderGetTicket (dealsCountNow));
    }
}

///
/// Текущее количество ордеров.
///
int ordersCountNow;
 
papaklass :

İşte bundan bahsediyoruz.

Bu OnTradeTransaction neden ayrı olaylara bölünmüyor:

- OnOrderCreate // sipariş vermek;

- OnOrderModify // mevcut siparişin değiştirilmesi;

- OnOrderDelete // bir siparişin silinmesi;

- OnPositionOpen //konum açma;

- OnPositionModify //ayarlama/değiştirme, konum hacmini değiştirmeyi durdurur;

- OnPositionClosed // zararı durdur veya piyasa emriyle bir pozisyonu kapatmak;

vb.

Bu yaklaşımla, tüccar, kendisini ilgilendiren olaylara abone olacak ve işleyecektir.

Beni ilgilendiren tüm olayları alıyorum, orada sadece bir bölünme var!
 

C-4 elbette işlenecek, ama neden OnRefresh() gerekli?

Her şey OnTradeTransaction() içinde ayrılmıştır. Bilgi eksikliğim yok.

Neden: