Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 110

 
artmedia70 :
Ve son kapatılanın Stoploss değerini bu fonksiyonun neresinde okuyorsunuz? Orada hiçbir şey yok.

Burada. Doğrudan işaret etti.
 OrderSelect ( 1 ,SELECT_BY_POS,MODE_HISTORY);
      take=OrderTakeProfit();
       ts=take;
 
borilunad :
Herkes uyusun! Sabah sonsuz akıllıdır! Benim için saat sabahın biri! İyi geceler! Ve Artyom çoktan uyuyakalmış!

Evet zaten gece düşünmeye başladığın için 5 gündür akım yapıyorum. İyi geceler.
 
Ltd! Kayıtta 130 hatası görünüyor.Bunlar yanlış duraklar mı? AMA yeni durdurma kaybı 1.3282'dir. Şu anda 1.3275 olan zararı durdur (bu emir açılış fiyatıdır ) ve şu anda kotasyon 1.3297'dir. Hata nerede?
 

Merhaba. Neden önceden tanımlanmış "Nokta" değişkeninde , strateji test günlüğünde sıfırlar tanımlanmadı, sonunda yuvarlak sayılar?

Пример:

static double lBUY;

lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.

if(lBUY==0.01)

{

Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);

}

 
artmedia70 :
Ben Sibiryalıyım, evet. Krasnoyarsk yakınlarında.


SibirYAK, neredeyse zamlYAK demek))
 
webip :

Evet, zaten gece düşünmeye başladığın için 5 gündür akım yapıyorum.

Geceleri kimin düşünmediğini söylemek daha kolay, eğer tam tersi. bende de aynı durum var Üstelik geceleri hiç kimse müdahale etmiyor. Bu arada, bir keresinde beynin geceleri daha iyi düşündüğünü okumuştum. Bilim adamlarının öğrendiği bu...
 
semiromid :

Merhaba. Neden önceden tanımlanmış "Nokta" değişkeninde, strateji test günlüğünde sıfırlar tanımlanmadı, sonunda yuvarlak sayılar?

Пример:

static double lBUY;

lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.

if(lBUY==0.01)

{

Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);

}



Ve Alert aslında ne veriyor?
 
artmedia70 :
Size yardımcı olmak için DoubleToStr(sayı, bit derinliği)


Çok teşekkürler! Mumların özelliklerini (fazla, az vs.) karşılaştırmak için buna ihtiyacım vardı, vidaladım ve işe yarıyor. Dize veri türünü böyle nasıl karşılaştırdığını anlayamıyorum? veya double to string , sayıyı bir dizgeye çevirmiyor mu? :-D


not. Göstergede çalışmıyor - sadece komut dosyasında... Sorun şu ki, çizelgedeki programda çubuk özellikleri 5 ondalık basamakla iletilmesine rağmen, Yüksek[i] çağrıldığında sadece 4 ondalık basamak geliyor dışarı.

Yazı:

Alert("doubletostr Yüksek = ", DoubleToStr(Yüksek[1],5));
if (DoubleToStr(Yüksek[2],5)>(DoubleToStr(Yüksek[3],5)))
{
Uyarı("Diğer");
}
if (DoubleToStr(Yüksek[2],5)<(DoubleToStr(Yüksek[3],5)))
{
Uyarı("Daha Az");

}

Pulluklar, sonucu beş haneli yazar, fazla/az sayar. Sorun, göstergedeki dizi dizisinin grafikte görüntülenmemesidir. Böyle...

...yazı:

Alert("NormalizeÇift Yüksek = ", NormalizeDouble(Yüksek[1],5));

Pulluk yapmaz - sonuç - > 1.1234

Geliştiricileri anlamıyorum - neden bu kadar karmaşık hale getiriyorsunuz? Neden grafikte bu kadar çok işaret gösteriyorsa, çağrılan fonksiyonun beş işaretini çizmiyor? Basit bir çıkış yolu var mı?

 

Son piyasa pozisyonu kârla kapatılmışsa True ve zararla kapatılmamışsa False döndürmesi gereken bir işlev üzerinde çalışıyorum. Bu işlev True değerini döndürürse, tüm pozisyonlar kapatılır (hem ertelenmiş hem de piyasa pozisyonları).

İşte olanlar:

 //+-------------------------------------------------------------------------------------+
//| Получаем состояние последней позиции (Открыта или закрыта)                          |
//+-------------------------------------------------------------------------------------+
bool isCloseByTakeLastOpenPos( int delta)
{
   datetime lastOrderCloseTime = 0 ,               // Время закрытия последнего открытого ордера
            lastOOTHist = - 1 ;                     // Время открытия последнего открытого ордера из истории
   
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
       if (OrderMagicNumber() != i_magic) continue ;
       if (OrderSymbol() != Symbol ()) continue ;
       if (OrderType() > 1 ) continue ;               // Все удалённые отложки нас не интересуют..
  
       if (lastOrderCloseTime < OrderCloseTime())   // Находим время закрытия..
      {
         lastOrderCloseTime = OrderCloseTime();   // ..последней закрытой позиции в истории
         int j = i;
      }
   }
   if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
     // Comment("FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории");
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }
  
   for ( int h= OrdersTotal ()- 1 ; h>= 0 ; h--)
   {
       if ( OrderSelect (h, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderMagicNumber() != i_magic)   continue ;
         if (OrderSymbol() != Symbol ())       continue ;
         if (OrderType() > 1 )                 continue ;
         if (lastOOTHist < OrderOpenTime()) return ( false );   // Выбранная рыночная позиция открыта позже закрытой по тейку
      }
       else { Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать рыночный ордер" ); return ( false );}
   }
   
   return ( true );
}

Artyom , yukarıda sövelerimin olduğu yeri önerdi. Kendim için yeniden yazdım. Şimdiye kadar, son sürüm değil, ama .. zaten oldukça açık. Danışmanı çalıştırdıktan sonra, kalan pozisyonların kapanmadığı için kapanmadıklarını hemen keşfettim. Bunun sebebini merak etmeye başladım. İşlevdeki birkaç yeri yorumladım ve bu blokta şunu fark ettim:

 if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
       Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }

Yorum her zaman işe yarar:

 Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );

Yorumladım ve devam ettim. Bu yoruma dikkat edin:

 Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);

Genel olarak, kapalı bir son pozisyon olsa bile asla çalışmaz. Ne yanlış olabilir?

Düşüncelerim, belki yanılıyor olsam da ... Belki bu bloğa ihtiyacın var

 if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
   {
       if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
       if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
       else
      {
         lastOOTHist = OrderOpenTime();
         Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
      }
   }
   else
   {
     // Comment("FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории");
       Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
       return ( false );
   }

for döngüsüne de girdin mi? Sonuçta, aksi takdirde, kim bilir hangi yöne baskın olacak. Sonuçta, j değişkeni pozisyonun seri numarasını içerecektir ve hangi yönde sıralama yapıldığında açık bir gösterge yoktur.

 
hoz :

Son piyasa pozisyonu kârla kapatılmışsa True ve zararla kapatılmamışsa False döndürmesi gereken bir işlev üzerinde çalışıyorum. Bu işlev True değerini döndürürse, tüm pozisyonlar kapatılır (hem ertelenmiş hem de piyasa pozisyonları).

İşte olanlar:

Artyom , yukarıda sövelerimin olduğu yeri önerdi. Kendim için yeniden yazdım. Şimdiye kadar, son sürüm değil, ama .. zaten oldukça açık. Danışmanı çalıştırdıktan sonra, kalan pozisyonların kapanmadığı için kapanmadıklarını hemen keşfettim. Bunun sebebini merak etmeye başladım. İşlevdeki birkaç yeri yorumladım ve bu blokta şunu fark ettim:

Yorum her zaman işe yarar:

Yorumladım ve devam ettim. Bu yoruma dikkat edin:

Genel olarak, kapalı bir son pozisyon olsa bile asla çalışmaz. Ne yanlış olabilir?

Düşüncelerim, belki yanılıyor olsam da ... Belki bu bloğa ihtiyacın var

for döngüsüne de girdin mi? Sonuçta, aksi takdirde, kim bilir hangi yöne baskın olacak. Sonuçta, j değişkeni pozisyonun seri numarasını içerecektir ve hangi yönde sıralama yapıldığında açık bir gösterge yoktur.

j değişkeni, fonksiyonun en başında negatif bir değerle açıkça başlatılmalıdır. Dene. Daha fazla bir şeye bakmadım.