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

 

Test cihazının çalışması hakkında bir sorum var: Test geçtikten sonra parametreleri değiştirirsiniz (tarihler, döviz çifti, zaman çerçevesi), testi yeniden başlatın - devam eder ve tamamlandıktan sonra "grafikteki bilgiler" " ve "rapor" sekmeleri hiç değişmez - her şey önceki testten kalır. Kaydedilen rapor da eski. Nedeni nedir ve nasıl çözülür? Belki sonuçları sıfırlamak için bazı işlevler vardır?

Bir el kitabı, makaleler içtim, forumda arama yaptım - böyle bir sorundan söz edildiğini görmedim ..

 

İyi günler.Hala crunch göstergesini elden geçiriyorum (bu konuda bir danışman yapmaya çalışıyorum) Sonuç olarak, harici bir dosyaya koyabildiğim her şeyi, türkiye'de ekranda sadece çıktıyı bırakarak. ) danışman olarak işe yaramıyor sorun ne anlamadım lütfen yardım edin az kaldı ne yazık ki para yok sonuncusu şimdi alım satım hesabında ama sistem pulluk yapıyor Kontrol ettim, ihtiyacı olan olursa, manuel ticaret hakkında küçük bir rapor atabilirim.Bir eksi var, ama sadece bir tane (çok büyük olmasına rağmen, neredeyse depozitoyu yedi) İki dosya ekliyorum.

1) raporlu

2) Gelişmelerimin fragmanları ile Başladığım şeyi tamamlamama kim yardım edecek, stratejiyi onlarla paylaşacağım (çatırdayan gösterge sadece stratejinin bir parçası ama önemli) bu noktaya kadar her şey yükselişte ve ne ilerleme ile göreceksiniz.)

Dosyalar:
 
ve işte kod parçaları
Dosyalar:
 

Bana neyin yanlış olduğunu söyle? Normalde arka arkaya dört siparişi değiştirir, ancak dördüncü sırada her onay , OrderModify hatası 1 yazmaya başlar.

Trend dönüşünden sonra birinci sıra iyi, ikincisi çeviriyor ama yine aynı saçmalığı yazıyor...

Normalleşme önemli değil.

Birkaç gündür savaşıyorum!

   for (x=0;x<OrT;x++)
   {
   if (OrderSelect(x,SELECT_BY_POS)==true)
    {
     if (OrderMagicNumber() == magic)
      {
       if (OrderType = OP_BUY)
       {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (High[m]-OrderOpenPrice() >= TS*Point)
        {
         if (OrderOpenPrice()+spread*Point != OrderStopLoss())
         {
          OrderModify(OrderTicket(),OrderOpenPrice(),                           //переводит SL в безубыток
          OrderOpenPrice()+spread*Point,OrderTakeProfit(),0,CLR_NONE);
          return;
         }
        }
       }
      }
     if (OrderMagicNumber() == magic)
     {
      if (OrderType = OP_SELL)
      {
       shift = iBarShift(Symbol(),30,OrderOpenTime());                           //запомнил свечу открытия
        for (m=shift;m>=1;m--)
        if (OrderOpenPrice()-Low[m] >= TS*Point)
        {
         if (OrderOpenPrice()-spread*Point != OrderStopLoss())
         {
           OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),dig),     //переводит SL в безубыток
           NormalizeDouble(OrderOpenPrice()-spread*Point,dig),
           NormalizeDouble(OrderTakeProfit(),dig),0,CLR_NONE);
           return;
         }
        }
       } 
      }
    }
   }

Şimdiden teşekkürler.

 
CYBOPOB :

Bana neyin yanlış olduğunu söyle? Normalde arka arkaya dört siparişi değiştirir, ancak dördüncü sırada her onay, OrderModify hatası 1 yazmaya başlar.

Trend dönüşünden sonra birinci sıra iyi, ikincisi çeviriyor ama yine aynı saçmalığı yazıyor...

Normalleşme önemli değil.

Birkaç gündür savaşıyorum!

Şimdiden teşekkürler.

Ya kuralları kendiniz dikkate alın (kod yazarken) ya da bu kuralların zaten dikkate alındığı hazır çözümler kullanın.
 
CYBOPOB :

Bana neyin yanlış olduğunu söyle? Normalde arka arkaya dört siparişi değiştirir, ancak dördüncü sırada her onay, OrderModify hatası 1 yazmaya başlar.

Trend dönüşünden sonra birinci sıra iyi, ikincisi çeviriyor ama yine aynı saçmalığı yazıyor...

Normalleşme önemli değil.

Birkaç gündür savaşıyorum!

Şimdiden teşekkürler.

Değiştirmeden önce, sipariş durdurma parametresinin yeni durdurma parametresine eşit olmadığını kontrol etmeniz gerekir. Eşitlerse, değiştirilecek bir şey yoktur. Bu nedenle hata 1.
 

Dizileri sıralama hakkında.
İki diziyi sıralamaya çalışıyorum: birincisi - artan düzende ( ArraySort (num_array); işlevi ) ve ikincisi birinciye göre, böylece ilk dizideki beşinci öğe ilk sıraya taşınırsa, o zaman ikincisi de (ilk etapta beşinci öğe).
MQL'nin ortak bir dizi sıralama işlevi varsa, lütfen bir bağlantı sağlayın.
Samimi olarak. shurkin.

 
artmedia70 :
Değiştirmeden önce, sipariş durdurma parametresinin yeni durdurma parametresine eşit olmadığını kontrol etmeniz gerekir. Eşitlerse, değiştirilecek bir şey yoktur. Bu nedenle hata 1.


Öyle değil mi?

 if (OrderStopLoss() != OrderOpenPrice()-spread* Point )

Artyom, işe alma, kod yaz , ha? Ya da elindeki o şeyi bana ver, bu işkenceye bir son vereyim...

 
CYBOPOB :

Öyle değil mi?

Artyom, işe alma, kod yaz , ha? Ya da elindeki o şeyi bana ver, bu işkenceye bir son vereyim...


Bu değil. Size ayrıca söylendi:

Değiştirmeden önce , sipariş durdurma parametresinin yeni durdurma parametresine eşit olmadığını kontrol etmeniz gerekir. Eşitlerse, değiştirilecek bir şey yoktur. Bu nedenle hata 1.

 

Profesyonellere bir soru vardı. Fonksiyonu evrensel hale getirmek istiyorum. İşlev, aynı işaretin kaç çubuğunun (boyuta karşılık gelen yükseliş veya düşüş, belki başka bir şey eklerim) birbirini takip ettiğini ve bir çubuk bu işarete karşılık gelmiyorsa, yani. Örneğin diğer yöne yönlendirilirse sayaç sıfırlanır.

Seçeneklerden birinde hesapladığım kod burada. Onlar. bir işaretin çubukları yükselirse, yani. boğa.

 int LastCandlesType( int trend)
{
   int cnt,                             // Счётчик идущих друг за другом свечей с требуемыми признаками

   for ( int i=i_AnyBarsToHistory; i>= 1 ; i--)
   {
       if ((Close[i] - Open[i]) >= i_sizeOfSequentialCorrectionBar * pt)     // Если бар соответствует требуемым признакам..
          cnt++;                                                                     // .. прибавим 1 к счётчику

       if (Close[i] < Open[i])                                                         // Если бар, не соответствует основному признаку..
          cnt = 0 ;                                                                   // .. счётчик обнуляем
      
/*      if (i == 1)
      Print("i = ", i,"; cnt = ", cnt);*/
   }

   if (cnt == 3 )                                                                     // Если 5 баров вподряд бычьи..
     return (REQUIRED_SEQUENTIAL_CANDLE_GOT);                                         //..Выходим из функции
}

Şu anda varsayılan ana eğilimi iletmekten sorumlu olacak olan trend parametresini bu fonksiyona geçirirken, bu parametreye dayalı olarak daha fazla hesaplama yapılması için nasıl yapılır.

Onlar. trend == down ise, o zaman döngüdeki fonksiyon şimdiki gibiydi ve eğer trend == up ise, o zaman döngüde, Open[i] ve Close[i] , koşulların karşılanması için değiştirildi. Çünkü bu durumda barın kapanış fiyatı zaten açılış fiyatından daha düşük olacaktır ve sonuç olarak aradaki fark eksi işareti ile olacaktır.

Neden: