[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 212

 
dzhini :

Tamam, herkes burada. Dün gece yayınladım, ancak sihrin ne olduğu ve nasıl hazırlandığına dair açıklamalarla konu zaten oldukça ileri gitti)))

Lütfen soruma bir cevap verin.

Belirli bir zamanda danışman BUYLIMIT ve SELLLIMIT gecikmelerini ayarlar. Taraflardan birinde bir emir (OP_BUY veya OP_SELL) açma anında diğer yönde bekleyenleri kaldıracağını kendisinden almak isterim.

Benim seçimim şuydu:


Bu şekilde daha iyi görünüyor:

 void start(){
  .....

  for ( int i= OrdersTotal () - 1 ;i>= 0 ;i--) 
    if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) 
     {
      if (CalculateCurrentOrders( Symbol ())> 0 ) { Alert (CalculateCurrentOrders( Symbol ()));ClosePendingOrder(OP_SELLLIMIT);} // (1) 
      if (CalculateCurrentOrders( Symbol ())< 0 ) { Alert (CalculateCurrentOrders( Symbol ()));ClosePendingOrder(OP_BUYLIMIT);} //(2) 
      if ( TimeCurrent () - OrderOpenTime()>=HowManyHours* 60 * 60 ) {ClosePendingOrder(OP_BUYLIMIT);ClosePendingOrder(OP_SELLLIMIT);} //(3) 
     } 
   ....

}

Mantığa girmeden, küme parantezlerinin yokluğu ve OrderSelect () çalışmasının yanlış organizasyonu hemen belirgindir.

 
eddy :

Neden bu soruları tematik olarak gruplandırmıyorsunuz ve orada soru sorma yeteneği eklemiyorsunuz? bu normal bir soru olurdu.

ve buna sadece soruları değil, aynı zamanda cevap olarak kodlar / makaleler ile görevler de ekleme yeteneğini eklerseniz - önerdiğimi elde edersiniz - mevcut tüm içeriğini içeren farklı bir site yapısı

Roman, hazırlık çalışmaları uzun süredir devam ediyor, SSS ideolojisi daha önce geliştirildi ve özel bir şubeye gönderilecek, teknik temeli yönetimle kararlaştırıldı.
Şubenin açılmasını bekleyin, fikirlerinizle ne kadar örtüştüğünü görün ve gerekirse bütçeniz varsa projenizi geliştirip hayata geçirebilirsiniz.
 
Sergey_Rogozin :

Bu şekilde daha iyi görünüyor:

Mantığa girmeden, küme parantezlerinin yokluğu ve OrderSelect () çalışmasının yanlış organizasyonu hemen belirgindir.

OrderSelect() ile neyin yanlış olduğunu açıklayabilir misiniz? Çünkü daha önce de yazdığım gibi, zaten açık olan bir anlaşma yönündeki gecikmeleri kaldırırsanız, o zaman her şey sorunsuz gider. Ayrıca, kesin olarak tanımlanmış bir zamanda tüm mevduatların kaldırılmasını sorunsuz bir şekilde gerçekleştirir.
 
dzhini :
OrderSelect() ile neyin yanlış olduğunu açıklayabilir misiniz? Çünkü daha önce de yazdığım gibi, zaten açık olan bir anlaşma yönündeki gecikmeleri kaldırırsanız, o zaman her şey sorunsuz gider. Ayrıca, kesin olarak tanımlanmış bir zamanda tüm mevduatların kaldırılmasını sorunsuz bir şekilde gerçekleştirir.
Kodu görmeden kesin bir şey söylemek zor. Sembol, büyü, işlem türü vb. ile seçim yapmanız gerekmiyorsa OrderSelect() de işe yarayabilir.
 

Aslında bu, farklı sipariş gruplarıyla (sadece iki değil) çalışmak için gelecek için bir çalışma zamanı yapma girişimidir.

Sipariş gözden geçirme döngüsü çalışırken, danışman normal olarak uyarıya gider, ancak silme işleviyle doğru şekilde çalışmak istemez:

 void ClosePendingOrder( int ORDERType)
{
 while (!IsTradeAllowed()) Sleep ( 100 );
 if (OrderType()==ORDERType)
 {
 if (OrderSymbol()== Symbol ())
 { 
 if (!OrderDelete(OrderTicket(), CLR_NONE ))
   Print ( "Order close error" , GetLastError ());
return ;
      }
    }
}
 
granit77 :
SSS'nin ideolojisi daha önce geliştirildi, teknik temel yönetimle kararlaştırıldı.
fikirlerinizle nasıl örtüştüğünü görün ve gerekirse kendi projenizi geliştirebilirsiniz.
Cevabı doğru anladım: "her şey zaten düşünüldü ve yönetimle kararlaştırıldı (yani, değiştirmenin bir yolu yok), fikirlerinize uygun olmayan bir şey varsa, kendi işinizi yapabilirsiniz"?
 
eddy :
Cevabı doğru anladım: "her şey zaten düşünüldü ve yönetimle kararlaştırıldı (yani, değiştirmenin bir yolu yok), fikirlerinize uygun olmayan bir şey varsa, kendi işinizi yapabilirsiniz"?
"Her şey senden önce zaten çalındı" (c)))))
 
dzhini :

Aslında bu, farklı sipariş gruplarıyla (sadece iki değil) çalışmak için gelecek için bir çalışma zamanı yapma girişimidir.

Sipariş gözden geçirme döngüsü çalışırken, danışman normal olarak uyarıya gider, ancak silme işleviyle doğru şekilde çalışmak istemez:

Her şey yerli yerinde görünüyor. bilmiyorum.
 
Sergey_Rogozin :

Bu nasıl çalışır: ClosePendingOrder(OP_SELLLIMIT);} // (1) ?

Onun kodu.

Sipariş silme fonksiyonunun kodu da aynı mesajda verilmiş... Belki soruyu anlamadım ama nasıl anladığımdan yola çıkarak açıklamaya çalışacağım:

for döngüsü, mevcut tüm açık siparişleri ve bekleyenleri numaralandırır. ClosePendingOrder(OP_SELLLIMIT) - bu listeden para birimi sembolünü ve OP_SELLLIMIT parametresini karşılayanları seçer. Bu eşleşmeleri bulur bulmaz bu ertelemeyi kaldırır.

 
dzhini :

Sipariş silme fonksiyonunun kodu da aynı mesajda verilmiş... Belki soruyu anlamadım ama nasıl anladığımdan yola çıkarak açıklamaya çalışacağım:

for döngüsü, mevcut tüm açık siparişleri ve bekleyenleri numaralandırır. ClosePendingOrder(OP_SELLLIMIT) - bu listeden para birimi sembolünü ve OP_SELLLIMIT parametresini karşılayanları seçer. Bu eşleşmeleri bulur bulmaz bu ertelemeyi kaldırır.

Zaten anladım .. İlk başta, sadece dikkatsizce baktım.

Ben hatayı görmüyorum.