[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 627

 
chief2000 :

"return(0)" öğesini "return" ile değiştirdim, ancak bu "sorunu" çözmedi - optimizasyondan sonra, aynı 0-sıfır sonuçlarının tümü hala görünür durumda. Optimizasyon sırasında sıfır çıkmaması için herhangi bir çözüm var mı?

Teşekkür ederim!


Bilip bilmediğinizi bilmiyorum, her ihtimale karşı size söyleyeceğim, "İşe yaramaz sonuçları atla" kutusunu işaretleyin

negatif sonuçlar (dengeye göre) elenecek, sıfır sonuçtan emin değilim ama yine de deneyin.

 
Her yeni tikte 15 +/- 7 içinde "rastgele" bir sayının nasıl elde edileceğini merak ediyorum, böylece verilen sınırlar içinde rastgele üretiliyor ...
 

Peki, örneğin şöyle:

 int random(){
   MathSrand ( TimeLocal ());
   while (true){
      int x = MathRand ();
      if (x >= 8 && x <= 22 ) return (x);
   }
}

:)

 
ToLik_SRGV :

Peki, örneğin şöyle:

:)

Teşekkür ederim!!! ;)
 
ToLik_SRGV :

Bilip bilmediğinizi bilmiyorum, her ihtimale karşı size söyleyeceğim, "İşe yaramaz sonuçları atla" kutusunu işaretleyin

negatif sonuçlar (dengeye göre) elenecek, sıfır sonuçtan emin değilim ama yine de deneyin.

Gerçek şu ki, olumsuz olanları görmek istiyorum - optimizasyonun ilk aşamalarında, genellikle olumsuz olanlar arasından en iyi sonuçları seçmek gerekir (ve daha sonraki aşamalarda bakmak ve karşılaştırmak faydalı olabilir). Sıfırlar araya giriyor. hiçbir anlam taşımayan bu sonuçlardır ve aynı zamanda birçoğu vardır - ve kaydedilen dosyaların boyutları artar ve sonuçların görüntülenmesine görsel olarak müdahale eder. Yine de teşekkürler!

 
granit77 :

MA_Fast_Period ve MA_Slow_Period harici değişkenlerinden bahsediyorsanız, o zaman bir çözüm var. Değişkenler Expert Advisor'da hesaplanırsa hiçbir şey yapılamaz.

Vakit geç oldu, kafa artık çalışmıyor.. ama bu fikir çok iyi gibi! Teşekkür ederim!

 
artmedia70 :
Her yeni tikte 15 +/- 7 içinde "rastgele" bir sayının nasıl elde edileceğini merak ediyorum, böylece verilen sınırlar içinde rastgele üretiliyor ...
http://prolang.ru/index.php/cpp/cpptheory/3-clang-random.html

[a,b] aralığında düzgün dağılımlı rastgele gerçek sayılar elde etmek için formülü kullanmanız gerekir.

x = Rand()*(ba)/RAND_MAX + a;

yardımdaki MathRand() işlevinin açıklamasında mql için şöyle diyor: İşlev, 0 ile 32767 arasında bir sözde rasgele tamsayı döndürür

onlar. mql RAND_MAX için = 32767

 

mq4 öğrenmeye başladım ve hemen anlaşılmaz anlarla karşılaştım.

Kalem testi, tabiri caizse. Ma hakkında basit bir danışman yazdı . Ve şimdi tarihte bile ticaret yapmak istemiyor. Yine de herhangi bir hata vermiyor.

Söyle bana nerede karıştırdım?

 int start()
  {
   //---проверим возможность входа в позицию
   bool flagchange = false ;
   int Slippage = 3 ;
   int i = 0 ;
   double lt = getLots() ; // минимальный лот
   RefreshRates();
   int total = OrdersTotal();   
   int ticket = - 1 ;
   for (;;)
      {
       int flag= GetEma();
       if (flagchange != flag) // проверим, сигнал ема изменился? если да, то можно открыть или закрыть поз.
       flagchange = true ;       // изменился!
       else flagchange = false ;
         if (flagchange == True)
        {       
           int Total=OrdersTotal(); //проверим есть открытые позиции?
           if (Total> 0 )
  {
     for (i=Total- 1 ; i>= 0 ; i--) 
     {
         if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)== true ) // если а то закрываем
        {
           if (OrderType()==OP_BUY || OrderType()==OP_SELL) // Только Buy и Sell
           {
               if (OrderType()==OP_BUY) 
               bool Result=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,CLR_NONE);
               else
              Result=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,CLR_NONE);
               if (Result!= true ) 
              { 
              Print( "LastError = " ,GetLastError()); 
              }
           }
        }
         else // если открытых нет, то окрываем.
         if (flag == 1 ) OrderSend(Symbol(),OP_BUY,lt,Ask,Slippage,Bid - sl * Point, 0 , "Buy" , 888 , 0 ,Blue);
         else OrderSend(Symbol(),OP_SELL,lt,Bid,Slippage,Ask + sl * Point, 0 , "Seel" , 888 , 0 ,Red);
        {
        }
     }
  }                                             
      }
 }      
//----
   return ( 0 );
  }
       /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// ///
   int GetEma() {
   //----Получим значение EMA1
       int ma1= iMA(Symbol(),PERIOD_H1,ema1, 0 , 1 , 6 , 0 );
   //----Получим значение EMA2   
       int ma2= iMA( "" ,PERIOD_H1,ema2, 0 , 1 , 6 , 0 ); 
       if (ma1>ma2) return ( 1 );
       else return ( 0 );}
   /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// //  
         // посчитаем разтер лота
   double getLots() 
        {
                 double minlot = MarketInfo(Symbol(), MODE_MINLOT);
                 int round = MathAbs(MathLog(minlot) / MathLog( 10.0 )) + 0.5 ;
                 double lot = minlot;
//---- select lot size
                 lot = NormalizeDouble(AccountFreeMargin() * Risk / 1000.0 , round);
                 if (AccountFreeMargin() < lot * MarketInfo(Symbol(), MODE_MARGINREQUIRED)) 
                        {
                                lot = NormalizeDouble(AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED), round);
                        }
                 if (lot < minlot) lot = minlot;
                 double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
                 if (lot > maxlot) lot = maxlot;
//---- return lot size
   return (lot);
        } 
 


bool flagchange = yanlış;
int kayma = 3;
int ben = 0;
çift lt = getLots() ; // minimum lot
Yeniler();
int toplam = SiparişlerToplam();
int bilet = -1;
için(;;)
{
int bayrak= GetEma();
if (flagchange != flag )

parametresiz ifade için? - anlam? sonsuz döngüler farklı yazılır ve ikincisi danışman için global değişkenlerdir - terminal için değil, kodun en başında tüm işlevlerden ve start() işlevinden önce açıklanırlar, yazdığınız gibi - start( ) işlevi her işarette çağrılır flagchange=false; ve sonra bu bayrağı önceki durumla karşılaştırmaya çalışırsınız, ancak durumu her zaman yanlış olacaktır.

elinizi yeni denemeye başlıyorsanız - kod tabanından herhangi bir hazır danışmanı alın ve pazara girme koşullarını kendinize göre değiştirin - daha hızlı olacaktır


 
MarkTrade :

mq4 öğrenmeye başladım ve hemen anlaşılmaz anlarla karşılaştım.

Kalem testi, tabiri caizse. Ma hakkında basit bir danışman yazdı. Ve şimdi tarihte bile ticaret yapmak istemiyor. Yine de herhangi bir hata vermiyor.

Söyle bana nerede karıştırdım?


Ve danışman hangi amaçla takıntılı?

 for (;;) {


}