[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 348

 
FAQ :
Neden pozisyonunu değil de sipariş biletini hatırlamıyorsun. ve böyle bir düzen olmazsa direkt transferde ne olacak? sıfır siparişi siler misin


Bunu zaten denedim. Bu da şu şekilde çalışır:

 //+-------------------------------------------------------------------------------------+
//| Удаление несработанных отложеннык шортов                                            |
//+-------------------------------------------------------------------------------------+
void DeletePendingSells( int & amountOfCurrPending)
{
   int total = OrdersTotal () - 1 ,
       ordersToDelete = level - amountOfCurrPending,   // Количество отложек, которые требуется удалить
       s_ticket = 1 ,                                   // Тикет искомого ордера
   amountOfCurrPendingBuys = 0 ;                       // Количество текущих отложек на покупку
   amountOfCurrPendingSells = 0 ;                       // Количество текущих отложек на продажу

   double OOP = 20.0 ;                                   // Зададим значение цены открытия отложки, которой не может быть..
   
   if (ordersToDelete == 0 ) return ( 0 );

   for ( int i=total; i>= 0 ; i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() != OP_SELLSTOP) continue ;         // Работает только с шортовыми ордерами
      
       if (OOP > OrderOpenPrice())
      {
          OOP = OrderOpenPrice();                   // Ищется ордер, с минимальной ценой открытия
          s_ticket = OrderTicket();                 // Получаем тикет ордера с минимальной ценой открытия
      }
   }
   if (s_ticket != - 1 )
   {
      OrderDelete(s_ticket,Black);
   }
   return ( 0 );
}
 
hoz :


Bunu zaten denedim. Bu da şu şekilde çalışır:

daha dikkatli olmalısın
 //+-------------------------------------------------------------------------------------+
//| Удаление несработанных отложеннык шортов                                            |
//+-------------------------------------------------------------------------------------+
void DeletePendingSells( int & amountOfCurrPending)
{
   int total = OrdersTotal () - 1 ,
       ordersToDelete = level - amountOfCurrPending,   // Количество отложек, которые требуется удалить
       s_ticket = 1 ,                                    // Тикет искомого ордера
   amountOfCurrPendingBuys = 0 ;                       // Количество текущих отложек на покупку
   amountOfCurrPendingSells = 0 ;                       // Количество текущих отложек на продажу

   double OOP = 20.0 ;                                   // Зададим значение цены открытия отложки, которой не может быть..
   
   if (ordersToDelete == 0 ) return ( 0 );

   for ( int i=total; i>= 0 ; i--)
   {
       if (! OrderSelect (i,SELECT_BY_POS)) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderType() != OP_SELLSTOP) continue ;         // Работает только с шортовыми ордерами
      
       if (OOP > OrderOpenPrice())
      {
          OOP = OrderOpenPrice();                   // Ищется ордер, с минимальной ценой открытия
          s_ticket = OrderTicket();                 // Получаем тикет ордера с минимальной ценой открытия
      }
   }
   if ( s_ticket != - 1 )
   {
      OrderDelete(s_ticket,Black);
   }
   return ( 0 );
}
 

Sonunda işe yaradı! Prensip olarak ve son sürüm çalıştı. Ana cant, işlevin kendisinde değil , işlev çağrısındaydı .

Bir profesyonelin bakış açısından, bir fonksiyona girerken, statik değillerse tüm değişkenler sıfıra ayarlanmalıdır, yani. anlamlarını belirli tutmaya gerek yok, değil mi?

 
hoz :

Sonunda işe yaradı! Prensip olarak ve son sürüm çalıştı. Ana cant, işlevin kendisinde değil, işlev çağrısındaydı.

Bir profesyonelin bakış açısından, bir fonksiyona girerken, statik değillerse tüm değişkenler sıfıra ayarlanmalıdır, yani. anlamlarını belirli tutmaya gerek yok, değil mi?

Fonksiyondaki değişkenleri, fonksiyonun hatalı çalışmasına ya da bulunması en zor buglara neden olmayacak değerlerle sıfırlayın.

Değişkenin amacına bağlı olarak genellikle 0 veya -1 kullanırım. Fonksiyondaki değişken, pozisyonun bulunan indeksini saklayacaksa, -1 olarak başlatılmalıdır. Sıfır ile başlatırsanız, istenen konumu ve yokluğunu aradıktan sonra, istenen konum olmasa da 0 dizinli konumu seçebilirsiniz, -1'de konum seçilmeyecektir. Bu, hatanın bulunmasının zor olduğu tüm olası örneklerden biridir - işlevde her şey doğru gibi görünüyor, ancak çıktı hiç değil... ve danışman beklenen sıra/konumla çalışmıyor.. .

 

İşlev kısa (isteğe bağlı, ancak arzu edilir) ve çok açık (amacı) olmalıdır. 2*2=4 gibi. yani programcı, ne için tasarlandığını ve hangi işlemi gerçekleştirdiğini açıkça anlamalıdır. sonra onu kafasından çıkarmalı ve içinde ne olduğunu unutmalı ve onu bir "kara kutu" olarak kullanmalıdır.

Fonksiyonun kullandığı tüm değişkenler ona argüman olarak iletilmelidir. Global değişkenlerin bağımsız değişken listesinden geçmeden kullanımı, yalnızca örneğin Externs (MT durumunda) olması durumunda gerekçelendirilir. Bir fonksiyonda globalleri değiştirmek kabul edilemez, eğer bir dönüş değeri eksikse, değişkenleri argüman listesinde referansa göre iletin.

Yani, bu işlevi atmanız gerekiyorsa, bu işlevdeki bazı globaller değiştirildiğinden, kesilmiş sürümün neden çalışmadığını hatırlamanıza gerek yoktur. Bütün bunlar, yeniden yapmanız gerektiğinde zincirleme reaksiyona neden olmayacağı gerçeğine yöneliktir.

 

Merhaba!

Sterlin-Yen Testi

Emir, KAYBI DURDUR'dan önce KÂR AL tarafından kapatılmalıdır.

Ancak TAKE-PROFIT'e göre, sipariş nedense kapatılmadı.

SORU: SİPARİŞ NEDEN TİCARET FONKSİYONUNDA KAYITLI OLARAK KÂR ALMAYLA KAPATILMIYOR

Simülasyon yöntemi tüm kenelerdir.

Bağlantıdaki örnek

http://clip2net.com/s/55pdDU

NOT: Bu tür durumlar sıklıkla olmaz.Çoğu durumda işlemler 10 puanlık bir stop ile kapatılır. zamanında.

Onlar. Bana öyle geliyor ki, bu muhtemelen fiyat ve durak arasındaki izin verilen minimum mesafe ile ilgili değil.

Nedeni başka ne olabilir?

Teşekkür ederim.

 

Göstergeden küresel değişkenlere veri almaya yardımcı olun

hakkında:

6,5 ABD doları

6.6 Avro

GBP 3.3

vb.

Yardımın için şimdiden teşekkürler!

/*Decompiled kaldırıldı. Bir uyarı*/

 
FAQ :

İşlev kısa (isteğe bağlı, ancak arzu edilir) ve çok açık (amacı) olmalıdır. 2*2=4 gibi. yani programcı, ne için tasarlandığını ve hangi işlemi gerçekleştirdiğini açıkça anlamalıdır. sonra onu kafasından çıkarmalı ve içinde ne olduğunu unutmalı ve onu bir "kara kutu" olarak kullanmalıdır.

İşlevin kullandığı tüm değişkenler, işleve argüman olarak iletilmelidir. Global değişkenlerin bağımsız değişken listesinden geçmeden kullanımı, yalnızca örneğin Externs (MT durumunda) olması durumunda gerekçelendirilir. Bir fonksiyonda globalleri değiştirmek kabul edilemez, eğer bir dönüş değeri eksikse, değişkenleri argüman listesinde referansa göre iletin.

Yani, bu işlevi atmanız gerekiyorsa, bu işlevdeki bazı globaller değiştirildiğinden, kesilmiş sürümün neden çalışmadığını hatırlamanıza gerek yoktur. Bütün bunlar, yeniden yapmanız gerektiğinde zincirleme reaksiyona neden olmayacağı gerçeğine yöneliktir.


Teşekkürler ve elbette Artem! Prensip olarak mantıklı olan, ancak bazen deneyim eksikliği nedeniyle farkedilmeden kalan anlara gözlerimi açtınız.

Sadece birkaç yanlış anlama daha var. Bir Expert Advisor'da global değişkenler varsa, bunları yalnızca argüman olarak ileterek işlevlerde kullanmanın tavsiye edildiğini yazdınız, değil mi?

Ben sadece global değişkenleri (harici değişkenler değil) başlatmak için herhangi bir neden olup olmadığını anlamaya çalışıyorum ... Sonuçta, onları yalnızca argümanlar aracılığıyla iletmeniz gerekiyorsa, o zaman uzun bir bağımlı işlevler zinciri ile, epeyce argümanlar birikebilir ve bağımsız değişkenli işlevlerin adları oldukça uzun olacaktır.

Ve yine global bir değişken oluşturup onu fonksiyona referans vererek ileterek gerekli işlemleri onunla gerçekleştirebilir ve referans ile global değişkenlere geri döndürebilirsiniz, değil mi?

Bugün mesajınızı okuduktan sonra düşündüm ve bazı değişkenleri globalden bir fonksiyona taşıdım. Sonra fark ettim ki bu değişkenler, onları bildirdiğim ile ilgisi olmayan başka bir fonksiyonda gerekliydi. Sizi burada dinlerseniz: "Küreselleri ve işlevleri değiştirmek kabul edilemez", o zaman farklı yerlerde gerekli değişkenleri doğrudan alan bir işlevi çağırmanız gerektiği ortaya çıkıyor? Ama bu zaten kodu güzel değil, tabiri caizse yapar. Sonuçta, işlevin gerektiğinde ve gerektiğinden daha sık değil çağrılmasını istiyorum. Örneğin, tüm siparişler için arama işlevi, mevduat satın almak ve mevduat satmak. Her tik için yalnızca bir kez çağırmanın uygun olacağını varsaymak mantıklıdır ve daha fazla değil. Ancak, başlangıçta çağrılırsa, sıra arama işlevi tarafından döndürülen bu değişkenleri kullanan her işlev, bu değişkenleri parametrelerden geçiremez. O zaman yine de küresel değişkenlere geri dönüyoruz ya da nasıl?

 

Lütfen sorunu 1000 ile sınırlı olan iHigh( Symbol() , timeframe ,shift) içindeki shift değerinin sınırıyla çözmeme yardım edin.

iTime(Symbol(), timeframe , 1001 ) 1970.01.01 00:00 değerini verir
 
Alarmı nasıl kapatabilirim?????????? neden boşluk tuşuna bastıktan sonra ?(!%"?:? bip sesi çıkarıyor ??????????
Neden: