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

 
snail09 :
Ya tüm sol parantezleri, sonra tüm sağ parantezleri sayın, ardından miktarları karşılaştırın ya da hatayı bulana kadar fonksiyonları tek tek yorumlayın. Zevk ve renk (kaynak metinlerin tasarımı) herkes için farklıdır.
4 adet açma dirseği ve 4 adet kapatma dirseği vardır, hepsi bu. Ama yorumlar bana nasıl yardımcı olabilir, tam olarak anlamıyorum
 
Pinki :
4 adet açma dirseği ve 4 adet kapatma dirseği vardır, hepsi bu. Ama yorumlar bana nasıl yardımcı olabilir, tam olarak anlamıyorum

Önce kullanıcı işlevlerini yorumlayabilir, ardından döngüleri, başlangıç içindeki mantıksal yapıları vb. yorumlayabilirsiniz. Sizi temin ederim, art arda kırparak braketiniz için bir eşleşme bulacaksınız. Ya da belki başka bir yerde ve ";" koymayı unutmuşum...

Ve IF'yi FOR ile karıştırmadınız mı?

Üzgünüm, hemen fark etmedim.

   // Перебор в цикле всех рыночных и отложенных ордеров
   for ( int i= 0 ;i<= OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
         {
         // Если инструмент и магик соответствуют - значит ордер наш
         if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber)
            {
             // Подсчитываем только рыночные ордера
             if (_Type==OP_BUY || _Type==OP_SELL) 
               {
               op++;
               }
            }
         }
     }

Bu snippet ile karşılaştırın. Bu sadece bir seçenek.

 
001 :

Mumdaki 6. sıranın neden açılmadığını kim açıklayabilir? Ve açmak için ne yapabilirim?

Kayıt.

2011.11.04 19:42:21 1999.11.04 20:00 RLB_FLAT GBPUSD,H4: açık #7 satış durağı 1.62233 sl'de 0.10 GBPUSD: 1.64443 tp: 1.57089 tamam
2011.11.04 19:42:21 1999.11.04 20:00 Test eden: #6 silinmiş son kullanma tarihi
2011.11.04 19:42:10 1999.11.04 12:00 RLB_FLAT GBPUSD,H4: açık #6 satış durağı 1.63373 sl'de 0.10 GBPUSD: 1.64570 tp: 1.62652 tamam
2011.11.04 19:42:09 1999.11.04 08:00 Testçi: #5 silinen süre sonu
2011.11.04 19:42:06 1999.11.04 00:00 RLB_FLAT GBPUSD,H4: açık #5 satış durağı 1.63622 sl'de 0.10 GBPUSD: 1.64702 tp: 1.63411 tamam
2011.11.04 19:42:00 1999.11.02 04:00 Test eden: #4 silinen süre sonu
2011.11.04 19:41:53 1999.11.01 20:00 RLB_FLAT GBPUSD,H4: açık #4 satış stop 0.10 GBPUSD 1.63365 sl'de: 1.64917 tp: 1.61097 tamam

Dördüncü, beşinci ve altıncı ertelemeler, sona erme tarihleri nedeniyle kaldırıldı.

Ömürlerini artırın veya 0'a (sıfır) ayarlayın, bkz. OrderModify()

 
мmersi :

Dördüncü, beşinci ve altıncı ertelemeler, sona erme tarihleri nedeniyle kaldırıldı.

Ömürlerini artırın veya 0'a (sıfır) ayarlayın, bkz. OrderModify()


Kafamı karıştıran, 6. sıranın sona ermesinden önce (20:00'de sona erdi), mumun 16:00'da sönmesi. Bu şekilde görülebilir.
 
mersi :

1. İşlev, tarihteki en büyük bilete sahip siparişi bulur, bu da en son kapatılan sipariş anlamına gelir (tabii ki, maksimum kapanış süresine sahip seçeneğinizin tercih edildiği istisnai bir durum almadıkça).

2. Müşterinin koşullarına göre, ilk sipariş belirtilen TP/SL ile açılır ve sadece ikincisi yeni TP/SL ile açılabilir ve bundan sonra fonksiyonun sadece ilk işlem gerçekleştiyse sıfır döndürebileceği sonucu çıkar. sıfır, ancak tarihte kapalı siparişlerin olmaması nedeniyle değil.

Ve sonuncusu. Sürümünüzde, işlevde j ve başka bir SELECT kullanmak aşırıya kaçıyor.

yeterli :

 if (t< OrderCloseTime ()) {
         t= OrderCloseTime ();
      Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();
  }
   return (Profit);

1. Bilet numaralandırması için komisyoncunuza (veya Müşterinin komisyoncusuna) %100 güvenebilir misiniz? Zaman hala daha kararlı bir değerdir - burada zamanı yalnızca geçmişi manuel olarak düzelterek değiştirebilir. IMHO - zamanın daha iyi kullanılması.

2. Müşterinin mantığı değiştirmesi gerekiyorsa, işlevinizin de yeniden yazılması gerekebilir.

3. Sen teklif et

Profit= OrderProfit ()+ OrderSwap ()+ OrderCommission ();

bir döngü içinde kullanmak? Ne için? Halihazırda bulunan son sipariş için yalnızca bir kez kullanılabilir.

A... Müşteriniz test etmeyecek ve optimize etmeyecek. Anlaşılır şekilde...

 

GlobalVariableSetOnCondition() - lütfen bu işlevin ne yaptığını basit terimlerle açıklayın? Yardımdaki açıklama çok kasvetli, bazı noktaları anlayamıyorum?

Değişkenin geçerli değeri üçüncü parametre check_value değerine eşitse, mevcut bir global değişkenin yeni değerini ayarlar. Değişken yoksa, işlev bir ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) hatası üretecek ve FALSE döndürecektir. İşlev, başarılı olduğunda TRUE, aksi takdirde FALSE döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir. Global değişkenin geçerli değeri check_value değerinden farklıysa , işlev FALSE değerini döndürür.
İşlev , global değişkene atomik erişim sağlar , böylece aynı istemci terminali içinde aynı anda çalışan birkaç uzman etkileşime girdiğinde bir semafor düzenlemek için kullanılabilir.

 
fore-x :

GlobalVariableSetOnCondition() - lütfen bu işlevin ne yaptığını basit terimlerle açıklayın? Yardımdaki açıklama çok kasvetli, bazı noktaları anlayamıyorum?

Değişkenin geçerli değeri üçüncü parametre check_value değerine eşitse, mevcut bir global değişkenin yeni değerini ayarlar. Değişken yoksa, işlev bir ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) hatası üretecek ve FALSE döndürecektir. İşlev, başarılı olduğunda TRUE, aksi takdirde FALSE döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir. Global değişkenin geçerli değeri check_value değerinden farklıysa , işlev FALSE değerini döndürür.
İşlev , global değişkene atomik erişim sağlar , böylece aynı istemci terminali içinde aynı anda çalışan birkaç uzman etkileşime girdiğinde bir semafor düzenlemek için kullanılabilir.

 GlobalVariableSetOnCondition ( "Имя переменной" , устанавливаемое значение, проверяемое значение);

Diyelim ki GL_Var adında global bir değişkeniniz var.

Şu anda 1.0 değerine sahiptir.

Bu değişkenin 1.0 değerine sahip olup olmadığını kontrol etmeniz ve varsa bu değişkeni 2.0 olarak ayarlamanız gerekir.

Şu şekilde olacak:

 GlobalVariableSetOnCondition (GL_Var, 2.0 , 1.0 );

Bu fonksiyonun dönüş değerlerini işlemek için if üzerinden çağırabilirsiniz.

 if (! GlobalVariableSetOnCondition (GL_Var, 2.0 , 1.0 )) {
   // здесь код обработки, если функция вернула false
   // false она вернёт в случае, если переменная GL_Var не была равна 1.0 во время вызова этой функции
   // или если вообще ещё нет глобальной переменной GL_Var
   }

Fonksiyonu çağırmadan önce, ERR_GLOBAL_VARIABLE_NOT_FOUND hatasını önlemek için global GL_Var değişkeninin varlığını kontrol edebilirsiniz.

 

Lütfen bana küçük bir geometri probleminde yardım edin. p1 ve p2 koordinatlarına sahip bir çizgi var (şekilde kırmızı ile gösterilmiştir). p2 koordinatından %38,2 fibo olan p3 koordinatının bulunması gerekmektedir. Böyle mi yaptı:

if(p2>p1) p3=p2-(p2-p1)*0.382; şeklin üst kısmı için geçerlidir

if(p1>p2) p3= p2+(p1-p2)*0.382; şeklin alt kısmı için geçerlidir

Bunu bir şekilde "if" olmadan tek bir denklemde yazmak mümkün mü?

 

Peki, sadece yaz

p3=p2-(p2-p1)*0.382

 
Roger :

Peki, sadece yaz

p3=p2-(p2-p1)*0.382


Ve gerçekten! Yardımın için teşekkürler.