Hangi tasarım doğru? - sayfa 7

 
Vladon :
Kod tabanında bir keresinde farklı türleri kapatmak için setimi yayınladım.
Bu durumda derlenmiş dosyalar veriyorsunuz ki bu da bu dalda işe yaramıyor.
Vladon :
https://www.mql5.com/ru/code/mt4

Üzgünüm, burada yanlış forum.

Suç yok.

 

oh, bu değil :-), şimdi.


https://www.mql5.com/ru/code/9052

 
int Close_This_Symbol_All()
{
//----
  string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
  for ( int Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
  {
    if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

        while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
        if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
        if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}
O zaman böyle bir yapı, teorik olarak, genel olarak tüm siparişleri kapatmalıdır, ancak yalnızca mevcut pencerenin çiftini kapatır, hata nedir?
 
Vladon :

oh, bu değil :-), şimdi.


https://www.mql5.com/ru/code/9052


Evet, setiniz iyi, ancak kodumdaki hatanın nerede olduğunu çözemiyorum.
 
valenok2003 :

Evet, setiniz iyi, ancak kodumdaki hatanın nerede olduğunu çözemiyorum.

 int Close_This_Symbol_All()
{
//----
   string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
   for ( int Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
  {
     if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

         while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
         if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
         if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}


for ( int  Cnt = OrdersTotal (); Cnt >= 0 ; Cnt--) 
Bazen inatçılık sadece şaşırtıcıdır. Bu ileti dizisinin 3. sayfasında ve ileti dizisi boyunca, siparişleri numaralandırmanın doğru örneğini gösterdiniz. Sonuçta RTFM. Kaç kez tekrarlayabilirsiniz: Sınır dışı dizisi . Numaralı siparişler
 OrdersTotal ()

bulunmuyor ! O zaman bu işe yarayacak:

 if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;
 
VladislavVG :
Bazen inatçılık sadece şaşırtıcıdır. Bu ileti dizisinin 3. sayfasında ve ileti dizisi boyunca, siparişleri numaralandırmanın doğru örneğini gösterdiniz. Sonuçta RTFM. Kaç kez tekrarlayabilirsiniz: Sınır dışı dizisi . Numaralı siparişler

bulunmuyor ! O zaman bu işe yarayacak:


Vladislav, özür dilerim, bu inat değil, dikkatsizlik. Denedim ve kodu düzeltmedim.

Kesinlikle doğru:

 for ( int  Cnt = OrdersTotal ()- 1 ; Cnt >= 0 ; Cnt--) 

Ancak, düzeltilmiş tasarım nedeniyle bu neden görünmüyor.

 int Close_This_Symbol_All()
{
//----
  string a = "Всего ордеров = " + DoubleToStr( OrdersTotal (), 0 )+ "\n" ;
  for ( int Cnt = OrdersTotal ()- 1 ; Cnt >= 0 ; Cnt--) 
  {
    if (! OrderSelect (Cnt, SELECT_BY_POS, MODE_TRADES)) break ;

        while (!IsTradeAllowed()) Sleep ( 1000 );
        RefreshRates();
        if (OrderType() == OP_BUY ) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Bid, Digits ), slip, CLR_NONE );
        if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), NormalizeDouble (Ask, Digits ), slip, CLR_NONE );
       Comment (a+ GetLastError ());  
  }
//----
   return ( 0 );
}

her neyse, komut dosyasını attığınız pencerenin yalnızca bir çifti için siparişleri kapatır, ancak tüm çiftleri değil.

 

Konuyu başlatan kişinin profilinden "Sipariş üzerine de dahil olmak üzere MQL4'te yazıyorum." - tipik bir aşırı domuz örneği.

Programcıların da ortalama olduğunu anlıyorum. alışırsın. Evet ve bazen denememe rağmen kodu çok iyi yazamıyorum. Ama ne olurdu...

Birinin uzun süredir devam eden varsayımını onaylıyorum, konuyu başlatan kişinin kafasında yün var.

 
valenok2003 :


Vladislav, özür dilerim, bu inat değil, dikkatsizlik. Denedim ve kodu düzeltmedim.

Kesinlikle doğru:

Ancak, düzeltilmiş tasarım nedeniyle bu neden görünmüyor.

her neyse, komut dosyasını attığınız pencerenin yalnızca bir çifti için siparişleri kapatır, ancak tüm çiftleri değil.

Tüm çiftler varsa, o zaman Sor, Bid yanlış kullanıyorsunuz - mevcut tablodan alırsınız. Siparişleri kapatırken hataları ele aldıysanız, mesajları görürsünüz.

Sor - MarketInfo(OrderSymbol(),MODE_ASK); yerine, Bid - MarketInfo(OrderSymbol(),MODE_BID);

İyi şanlar.

PS ve betiğin adını değiştirin, aksi takdirde isme göre doğru çalışır;).

 
gip :

Konuyu başlatan kişinin profilinden "Sipariş üzerine de dahil olmak üzere MQL4'te yazıyorum." - tipik bir aşırı domuz örneği.

Programcıların da ortalama olduğunu anlıyorum. alışırsın Evet ve bazen denememe rağmen kodu çok iyi yazamıyorum. Ama ne olurdu...

Birinin uzun süredir devam eden varsayımını onaylıyorum, konuyu başlatan kişinin kafasında yün var.


Bunu duymak elbette utanç verici. Ancak, yerine getiremeyeceğim siparişleri asla almam. Ve umarım sipariş seviyelerinin de farklı olabileceğini anlamışsınızdır. Ve birinin dediği gibi - Bilmemek ayıp değil. Sormaktan utanıyorum .... Ve anladığım kadarıyla, bu forum sadece öğrenme fırsatı olsun diye var. Bu nedenle züppeliğiniz bana açık değil ve eleştirinizi kabul etmiyorum. Yine de bu forumdaki en zeki kişi olduğunu kabul ediyorum.

PS Programlama sanatı, kod yazabilme becerisinde değil, doğru algoritmayı oluşturabilme becerisindedir. Sanki tüm hayatın boyunca bir Lada sürdüysen ve sonra bir Mercedes'e geçtiysen ve düğmelerin ve düğmelerin nerede olduğunu bilmiyorsan, o zaman kötü bir sürücü olmazsın.

 
VladislavVG :

Tüm çiftler varsa, o zaman Sor, Bid yanlış kullanıyorsunuz - mevcut tablodan alırsınız. Siparişleri kapatırken hataları ele aldıysanız, mesajları görürsünüz.

Sor - MarketInfo(OrderSymbol(),MODE_ASK); yerine, Bid - MarketInfo(OrderSymbol(),MODE_BID);

İyi şanlar.


Çok teşekkür ederim, hataları işliyorum, bir mesaj geliyor - yanlış fiyat , ama neyin yanlış olduğunu anlayamıyorum.