Emir bulma görevi - sayfa 3

 
Игорь Герасько :

Çeşitli "ızgaralar" uygularken aşağıdaki yapıyı buldum:

Yapı, Magic Number değerine dayalı olarak her yeni onayda doldurulur (siparişi tanımlamak için gerekli tüm bilgileri depolar: sipariş numarası, hangi ızgaraya ait olduğu vb.).

Bu yüzden bu kod gibi bir şey buldum

 class Info
  {
private :
   struct str
     {
       string             Sym;                                 // Символ ордера
       string             Com;                                 // Коммент ордера
       int                Tic;                                 // Тиккет ордера
       int                Typ;                                 // Тип ордера
       int                Mag;                                 // Меджик номер ордера
       double             Lot;                                 // Лот ордера
       double             Pri;                                 // Цена открытия ордера
       double             SL_;                                 // Стоп лосс ордера
       double             TP_;                                 // Тейк профит ордера
       datetime           Tim;                                 // Время открытия ордера
       double             Pro;                                 // Профит ордера
     };
   int                m_tick_upper;                           // Тиккет максимального по цене ордера
   int                m_tick_upper_;                         // Тиккет предпоследнего максимального по цене ордера
   int                m_tick_lower;                           // Тиккет минимального по цене ордера
   int                m_tick_lower_;                         // Тиккет предпоследнего минимального по цене оредра

   int                m_tick_start;                           // Тиккет первого по времени ордера
   int                m_tick_start_;                         // Тиккет вторго по времени ордера
   int                m_tick_end;                             // Тиккет последнего по времени ордера
   int                m_tick_end_;                           // Тиккет предпоследнего по времени ордера

   int                m_magic;                               // Меджик номер
   string             m_symbol;                               // Символ ордера

   void               SearchTicketPriceType( const int type); // Поиск по цене
   void               SearchTicketTimeType( const int type);   // Поиск по времени

public :

   str               Price_Max;                             // Структура запроса максимальных ценн
   str               Price_Min;                             // Структура запроса минимальных  ценн
   str               Time_End;                               // Структура последних ордеров
   str               Time_Start;                             // Структура начальных ордеров

   str               Price_Max2;                             // Структура запроса максимальных ценн
   str               Price_Min2;                             // Структура запроса минимальных  ценн
   str               Time_End2;                             // Структура последних ордеров
   str               Time_Start2;                           // Структура начальных ордеров

   void               SetMagic ( const int     mag) { m_magic  = mag; } // Принудительное указание меджик номера
   void               SetSymbol( const string sym) { m_symbol = sym; } // Принудительное указание символа

   void               SearchTimeOrder( const int type);       // Заполнение структуры по времени      
   void               SearchPriceOrder( const int type);       // Заполнение структуры по ценам 

                     Info( const string sym, const int mag);   // Параметрический конструктор
                     Info(){};
                    ~Info(){};
  };
 
Михаил :
...

"Bu arada - Windows çökerse, danışman siparişleri silemez - yalnızca burada manuel olarak, bu nedenle bu örnek otomatik ticaret için tam olarak uygulanamaz."

YAPABİLİRSİNİZ, muhtemelen nasıl olduğunu bilmiyorsunuz. İlgilenirseniz kodu gönderebilirim.

Hayır, bir koda ihtiyacınız yok. Algoritma kısaca, mümkünse... Çökmüş bir işletim sisteminde çalışan bir terminalde bir danışmanı nasıl çalıştıracağımı gerçekten bilmiyorum
 
Artyom Trishkin :
Hayır, bir koda ihtiyacınız yok. Algoritma kısaca, mümkünse... Çökmüş bir işletim sisteminde çalışan bir terminalde bir danışmanı nasıl çalıştıracağımı gerçekten bilmiyorum

Kodu göndermek benim için açıklamaktan daha kolay:

 //+------------------------------------------------------------------+
//| Expert Remove orders function                                    |
//+------------------------------------------------------------------+
void RemoveOrders()
{
   int orders_total = OrdersTotal ();
//---  
   if ( orders_total > 0 )
  {
     for ( int i = 0 ; i < orders_total; i++ )
    {
       ulong temp_order_ticket = OrderGetTicket ( i );
      
       if ( OrderSelect ( temp_order_ticket ) )
      {
         string temp_symbol = OrderGetString ( ORDER_SYMBOL );
        
         if ( temp_symbol == _Symbol )
        {
          RemoveOldOrder( temp_symbol, temp_order_ticket );
        }
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Expert remove old order function                                 |
//+------------------------------------------------------------------+
void RemoveOldOrder( const string symbol, const ulong ord_ticket )
{
   MqlTradeRequest request = { 0 };
   MqlTradeResult   result  = { 0 };
  
  request.action = TRADE_ACTION_REMOVE ;
  request.order  = ord_ticket;
  
   if ( OrderSend ( request, result ) )
   {
     if ( result.retcode == TRADE_RETCODE_PLACED )
     { 
//        SetTransCount( true );
     }
  }
   else
  {
     Print ( "Удаление старого ордера не выполнено! Билет = " , ord_ticket);
  }
}
 
Vladimir Pastushak :

Bu yüzden bu kod gibi bir şey buldum

Lanet olsun dostum, sikişme. Doğru yönü kendiniz belirlediniz: durum mevcut ortama göre restore edilmelidir, MT'nin size sunduğu en güvenilir seçenektir. Bunun yerine, içine harici işlevler tarafından bulunan değerleri doldurmanız gereken uzun ve aptal bir Bilgi sınıfı yazarsınız. Evet, sonuç olarak, sizin için gerekli değişkenleri içerecektir: fiyat açısından maksimum ve minimum siparişlerin bileti ve ayrıca sizin için önemli olan diğer saçmalıklar. Ancak gerçekte, görev özel bir sipariş kabı kullanılarak çözülür: her siparişin birçok sütunlu bir tablo satırını temsil ettiği bir sipariş listeniz olduğunu hayal edin (sipariş kimliği, açık zaman, açık fiyat, kâr, vb.). ). Sütunlardan birine göre sıralarsınız ve tam olarak ihtiyacınız olan sırayı elde edersiniz. Yani, tüm bunlar, kullanmayı çok sevdiğiniz sınıfların yardımıyla yapılabilir (aptalca da olsa, üzgünüm). Bu nasıl yapılır - İlgilenirseniz yarın yazacağım.
 
Vasiliy Sokolov :
Lanet olsun dostum, sikişme. Doğru yönü kendiniz belirlediniz: durum mevcut ortama göre restore edilmelidir, MT'nin size sunduğu en güvenilir seçenektir. Bunun yerine, içine harici işlevler tarafından bulunan değerleri doldurmanız gereken uzun ve aptal bir Bilgi sınıfı yazarsınız. Evet, sonuç olarak, sizin için gerekli değişkenleri içerecektir: fiyat açısından maksimum ve minimum siparişlerin bileti ve ayrıca sizin için önemli olan diğer saçmalıklar. Ancak gerçekte, görev özel bir sipariş kabı kullanılarak çözülür: her siparişin birçok sütunlu bir tablo satırını temsil ettiği bir sipariş listeniz olduğunu hayal edin (sipariş kimliği, açık zaman, açık fiyat, kâr, vb.). ). Sütunlardan birine göre sıralarsınız ve tam olarak ihtiyacınız olan sırayı elde edersiniz. Yani, tüm bunlar, kullanmayı çok sevdiğiniz sınıfların yardımıyla yapılabilir (aptalca da olsa, üzgünüm). Bu nasıl yapılır - İlgilenirseniz yarın yazacağım.

Ben gerçekten görmek istiyorum....

Bilgi uğruna değil, daha fazla işlem ve hesaplamalar uğruna bilgiye ihtiyacım var ...

 
Михаил :

Kodu göndermek benim için açıklamaktan daha kolay:

Bozuk bir bilgisayarda nasıl çalışacak??? (işlevler hiç şaşırtmadı)

Bu yüzden dedim ki - bir koda ihtiyacım yok. Çalışmayan bir bilgisayarda çalışan bir algoritmaya ihtiyacım var (sonuçta eksen çöktü, hatırlarsanız, alıntı yapıyorum: “Çökme durumunda çalışan bir terminalde danışman çalıştırmayı gerçekten bilmiyorum. OS” ve VPS ve diğer şeylere gerek yok - danışmanlı terminalin çalıştığı bilgisayarda, sunucuda vb. İşletim sisteminin çöktüğünü düşünüyoruz - orada kodunuz fil ve . .. kalemler, kalemler ... ).

 
Artyom Trishkin :

Bozuk bir bilgisayarda nasıl çalışacak ??? (işlevler hiç şaşırtmadı)

Bu yüzden dedim ki - bir koda ihtiyacım yok. Çalışmayan bir bilgisayarda çalışan bir algoritmaya ihtiyacım var (sonuçta eksen çöktü, hatırlarsanız, alıntı yapıyorum: “Çökme durumunda çalışan bir terminalde danışman çalıştırmayı gerçekten bilmiyorum. OS” ” ve VPS ve diğer şeylere gerek yok - danışmanla birlikte terminalin çalıştığı bilgisayar, sunucu vb. . kulplar, kulplar ...).

Eh, kim ormana gitti, kim yakacak odun için başladı ...

SİZİNLE bu konudaki tartışmamızı yapalım ve bitirelim!

 
Михаил :

Eh, kim ormana gitti, kim yakacak odun için başladı ...

SİZİNLE bu konudaki tartışmamızı yapalım ve bitirelim!

Sorun yok. Kendi fikrimi aktarmaya çalışmaktan bıktım artık...
 
Artyom Trishkin :
Sorun yok. Kendi fikrimi iletmeye çalışmaktan bıktım artık...

Sonuç olarak, sunucudaki eksen çökse bile, ev PC'nizde sunucuyu yeniden başlatmak için geçen süre boyunca hesap üzerindeki kontrolü geri yükleyecek baykuşlar çalıştırabilirsiniz.

VDS / VPS sunucularıyla çalışma pratiğim sırasında, işletim sistemi onlara hiç uçmadı, ancak öngörülemeyen ve planlanmış yeniden başlatmalar var.

Sorumun özü, mevcut durum hakkında bilgi toplayan kodu doğru bir şekilde yazmak...

 
Vladimir Pastushak :

...

Sorumun özü, mevcut durum hakkında bilgi toplayan kodu doğru bir şekilde yazmak...

Burada, prosedürel tarzda zaten yazılmış olduğunu yazdınız. Yani tüm bunlar sadece sınıfta toplamak için. Ayrıca işlev çağrılarından bazı parametreleri kaldırabilir, parametreleri önceden ayarlamak için yöntemler (sihir, sembol) yapabilir, ancak bunu yapmamak daha iyidir.

Tabii yapacak bir şey yoksa diğer tarafa gidebilirsiniz. Sınıf. Siparişlerin listesini almak için bir Refresh() yöntemine sahiptir (yanlış döndürebilen tek yöntem). Yöntemlerin geri kalanı bu listeyi kullanır.