[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 470

 
tol64 :

Çoklu para birimi parametrelerini nasıl optimize edersiniz? MT4 test cihazında aynı anda birkaç enstrümanı test etmek mümkün değil... Çoklu para birimi düşünüyorum ve şimdiye kadar parametrelerin her enstrümanda ayrı ayrı optimize edildiği ve ardından tüm bu parametrelerin ticareti için olduğu sonucuna vardım. çoklu para birimi modu için tasarlanmış bir Uzman Danışmana aktarılır.

Doğru yönde mi ilerliyorum yoksa gerçekten daha mı kolay?)))

mql5'te, tüm bunlar hem test hem de ticaret için tek bir Uzman Danışmanda uygulanabilir, ancak şimdilik mql4'ü incelemeye karar verdim.

Sadece bu konuyu düşünerek, birden fazla aleti aynı anda test etmek imkansızsa, o zaman neden her şeyi tek bir Uzman Danışmana koydunuz, eğer enstrümanın her tablosuna kendi kopyanızı kolayca yükleyebilirseniz ve aynı olacak diye düşündüm. Topluluk üyelerinin görüşlerini duymak isterim.

Çoklu para birimim yok, sadece her enstrüman için aynı danışmanı asıyorum.
 
Roman. :

cevap vermek
pardon cevabı anlamadım
 
demlin :
pardon cevabı anlamadım

Google üzerinden istek üzerine arama yaparak bakın: "site nasıl optimize edilir:mql4.com Expert Advisor", ayrıca - burada.

Aynı konuda yetkin bir kitap öneriyorum: Ralph Vince "Bir hisse senedi tüccarı için ticaret sistemlerinin geliştirilmesi, test edilmesi ve optimizasyonu" - her şey ayrıntılı, açık ve anlaşılır.

 

Görev: şekil belirli bir eğriyi gösterir (örneğin, MA). A,C,E noktaları yerel maksimumlar ve B,D noktaları yerel minimumlardır. Soru: Komşu maksimum ve minimum arasındaki mesafe N noktadan büyükse, bunları nasıl hesaplayabilirim? Yapmaya çalıştım, ama bir şekilde her şey çok hantal çıkıyor. Belki böyle bir sorunu çözmek için hazır bir algoritma vardır? başına gelen varsa haber versin

 
Elenn :

Görev: şekil belirli bir eğriyi gösterir (örneğin, MA). A,C,E noktaları yerel maksimumlar ve B,D noktaları yerel minimumlardır. Soru: Komşu maksimum ve minimum arasındaki mesafe N noktadan büyükse, bunları nasıl hesaplayabilirim? Yapmaya çalıştım, ama bir şekilde her şey çok hantal çıkıyor. Belki böyle bir sorunu çözmek için hazır bir algoritma vardır? başına gelen varsa haber versin


Hareketli ortalamanın yönünü belirleyin.

Yukarıysa ve aynı zamanda B, C, D ve E değişkenleri boşsa, hareketli ortalamanın mevcut değerini A değişkenine giriyoruz.

A Değişkeni boş değilse ve aynı zamanda hareketli ortalama aşağı doğru yönlendiriliyorsa ve aynı zamanda C, D, E değişkenleri boşsa, hareketli ortalamanın mevcut değerini B değişkenine giriyoruz. A değişkeni ve B değişkeni boş değilse ve hareketli ortalama yukarı doğru yönlendirilmişse, D ve E değişkenleri boşsa, hareketli ortalamanın mevcut değerini C değişkenine giriyoruz.

Peki ve benzeri değişkenlerin değerlerini değerlerle dolduruyoruz.

Şimdi, A ve C değişkeni boş değilse ve A ile C arasındaki farkın modülü önceden belirlenmiş bir puan sayısından büyük veya ona eşitse, o zaman amaçladığınız eylem gerçekleştirilir.

Genel olarak, kod oldukça mümkündür. Danışmanın yeni bir başlangıç noktasına geldiğini anlaması için değişkenleri yalnızca algoritmanın hangi noktasında sıfırlayacağımızı belirlemek gerekir. Bunu bir döngü ve diziler aracılığıyla yapmak mümkündür ve kodun daha kısa ve daha basit olması oldukça olasıdır, ancak anlamak için algoritmayı değişkenler aracılığıyla düşünmek daha iyidir - peki, sadece elde etmemek için dizi indekslerinde ve döngüdeki mum sayılarında karıştı.

 

Arkadaşlar geçenlerde bu sorunla karşılaştım. Konuda kim var - yorum yapın. Kendisi - neyse ki çabucak bir hata buldu ... Kodu yazarken - trol çalışmazken her şey hatasız derleniyor ... yani. sipariş döngüsünden daha fazla geçmeyelim... Kod bölümleri - Alıntı yapacağım... Hata şu şekildeydi - dış değişkenlerde, sipariş büyüsü büyük harfle ve siparişler arası sıralama koşullarında bir döngü - küçük bir harfle, CTRL + F ile arama yaparken - " M agic" isteği " m agic" e gitti... derleyici hata vermedi, ancak döngüde program geçişe ulaşmadı trol görüntüsü... döngü " sihir " tarafından kesildi... Genel olarak böyle mi olmalı??? Ben her zaman " büyü " ve " Sihir "in farklı değişkenler olduğunu düşündüm... ve bu nedenle derleyicinin bu hatayı "sihir" değişkeninin tanımlı olmadığına dikkat çekmesi gerekirdi... Kodda, bu formda, şimdi olduğu gibi yürütme iz seçimine ulaşmaz ve Printa () artık ulaşmaz - bu koşuldaki döngüden çıkış sihirden kaynaklanır - yani. " büyü " ve " büyü " gibi farklı isimler nedeniyle bu koşul asla karşılanmayacaktır.

 if ((OrderSymbol() != Symbol ()) || (OrderMagicNumber() != magic))
      {
         continue ;
      }

 // глоб переменные
...
...
extern int   Magic = 10 ;     // MagicNumber

//----------------------------------------------------------------------------
int start()                             // Спец. функция start
  {
  
   
   int orderCount = 0 ; 
  
   //---------------------------ТРАЛ ОРДЕРОВ---------------------------------------------------------------------------------------
   int orderType;
     for (orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--)
    {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))
      {
         continue ;
      }

       if ((OrderSymbol() != Symbol ()) || (OrderMagicNumber() != magic))
      {
         continue ;
      }

      orderType = OrderType();
       if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue ;
      }
                ticket = OrderTicket( );                         // Номер ордера
       double    orderLots = OrderLots();                         // Lots   
       double    orderProfit = OrderProfit() + OrderSwap();       // Profit
       double    Price = OrderOpenPrice();                         // Цена открытия рыночного ордера
       double    SL =  OrderStopLoss();                           // Значение StopLoss ордера
       double    TP = OrderTakeProfit();                           // Значение TakeProfit ордера
          
             if (ticket> 0 )                                               // Если позиция открылась
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                   double OpenPrice=OrderOpenPrice();
                    }
                 
         
      orderCount++;                     // считаем ордера (не больше 10)
     
            
       while (!IsTradeAllowed() || !IsConnected()) Sleep ( 5000 ); RefreshRates();
       
       //----------------------------Тралим последовательно все наши ордера по виду трала------------------
       if (UseTrailing && orderCount > 0 && type == 0 )   // простой трал по аналогии учебнику - в зависимости от параметра trlinloss (тралить ли в зоне лоссов)
          {     
           if (orderType == OP_BUY)  SampleTrailing_texbook ( 0 );           // если бай
           if (orderType == OP_SELL) SampleTrailing_texbook ( 1 );           // если селл
          }      
      ...
      ...
      ...   
     Print ( "Эксперт база: Всего наших ордеров = " ,orderCount);
     }   
//--------------------------------------------------------------------------------------------------------------------------------------     
   
   
  
//----------------------------------------------------------------  
   return ;                             // Выход из start()
  }

not Bilgisi olmayanlar için bunun farkında olun, aksi takdirde kodla ne kadar uğraşılacağı belli olmayabilir...

 
Roman. :

Arkadaşlar geçenlerde bu sorunla karşılaştım. Konuda kim var - yorum yapın. Kendisi - neyse ki çabucak bir hata buldu ... Kodu yazarken - trol çalışmazken her şey hatasız derleniyor ... yani. sipariş döngüsünden daha fazla geçmeyelim... Kod bölümleri - Alıntı yapacağım... Hata şu şekildeydi - dış değişkenlerde, sipariş büyüsü büyük harfle ve siparişler arası sıralama koşullarında bir döngü - küçük bir harfle, CTRL + F ile arama yaparken - " M agic" isteği " m agic" e gitti... derleyici hata vermedi, ancak döngüde program geçişe ulaşmadı trol görüntüsü... döngü " sihir " tarafından kesildi... Genel olarak böyle mi olmalı??? Ben her zaman " büyü " ve " Sihir "in farklı değişkenler olduğunu düşündüm... ve bu nedenle derleyicinin bu hatayı "sihir" değişkeninin tanımlı olmadığına dikkat çekmesi gerekirdi... Kodda, bu formda, şimdi olduğu gibi yürütme iz seçimine ulaşmaz ve Printa () artık ulaşmaz - bu koşuldaki döngüden çıkış sihirden kaynaklanır - yani. " büyü " ve " büyü " gibi farklı isimler nedeniyle bu koşul asla karşılanmayacaktır.

not Bilgisi olmayanlar için bunun farkında olun, aksi takdirde kodla ne kadar uğraşılacağı belli olmayabilir...


Magic benim için bildirilirse ve döndürme sihire giderse, derleyici sihirli değişkenin bildirilmediğini yazar.

Meta Düzenleyici 4 401.

 
Roman. :

Arkadaşlar geçenlerde bu sorunla karşılaştım. Konuda kim var - yorum yapın. Ben kendim - neyse ki çabucak bir hata buldum ... Kodu yazarken - trol çalışmazken her şey hatasız derleniyor ... yani. sipariş döngüsünden daha fazla geçmeyelim... Kod bölümleri - Alıntı yapacağım... Hata şu şekildeydi - dış değişkenlerde, sipariş büyüsü büyük harfle ve siparişler arası sıralama koşullarında bir döngü - küçük bir harfle, CTRL+ F ile arama yaparken - " M agic" isteği " m agic" olarak değiştirildi ... derleyici hata vermedi, ancak döngüde program geçişe ulaşmadı trol görünümü ... döngü " sihirli " ile kesintiye uğradı ... Genel olarak, böyle mi olmalı ??? Her zaman " büyü " ve " Büyü " nün farklı değişkenler olduğunu düşündüm... ve bu nedenle derleyicinin bu hatayı "büyü" değişkeninin tanımlı olmadığını belirtmesi gerekirdi... Kodda, bu biçimde, şimdi olduğu gibi yürütme iz seçimine ulaşmaz ve Printa () artık ulaşmaz - bu koşuldaki döngüden çıkış sihirden kaynaklanır - yani. " büyü " ve " büyü " gibi farklı isimler nedeniyle bu koşul asla karşılanmayacaktır.

not Bilgisi olmayanlar için bunun farkında olun, aksi takdirde kodla ne kadar uğraşılacağı belli olmayabilir...

En basit trolümle karşılaştırın. Özellikle, yinelenen siparişlerin döngüsü:

   // В глоб. переменных
   string sy= Symbol ();
   // ...................................................................
   color   cl;
   double sl, StopLevel;
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       if ( OrderSelect (i, SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)           continue ;
         if (OrderMagicNumber()!=Magic)   continue ;
         if (OrderType()> 1 )               continue ;
         sl=OrderStopLoss();
         if (OrderType()==OP_BUY) {
            cl=clModifyBuy;
            StopLevel= NormalizeDouble (strG-DeltaStop*PointX, dg);
             if (sl<StopLevel) ModifyOrder(- 1 , StopLevel, - 1 , - 1 , cl);
            }
         if (OrderType()==OP_SELL) {
            cl=clModifySell;
            StopLevel= NormalizeDouble (strR+DeltaStop*PointX, dg);
             if (sl>StopLevel) ModifyOrder(- 1 , StopLevel, - 1 , - 1 , cl);
            }
         }
      }

Bence ilke açık.

Ve büyü ve Büyü değişkenleri gerçekten farklıdır. Bunları Ctrl + F ile ararken "büyük/küçük harf duyarlı" kutusunu işaretleyin

Kodun bir yerinde hala ikisini de ilan ettin

 
artmedia70 :

Ve büyü ve Büyü değişkenleri gerçekten farklıdır. Bunları Ctrl + F ile ararken "büyük/küçük harf duyarlı" kutusunu işaretleyin

Kodun bir yerinde hala ikisini de ilan ettin

Aynen öyle. Sayenizde buldum... :-))) Değişkenlerin alt kısmında, extern değişkenine ek olarak int Magic = 10; Bir değişken bildirdim -
 int magic = 12345 ;

:-)))

Açılış emirleri işlevinde - Sihir ve döngüde - büyü - dikkate aldığım ortaya çıktı, bu yüzden trolleri için yinelenen siparişler döngüsü işe yaramadı... :-)))

Kalbimin derinliklerinden teşekkür ederim - anladım. "Büyük/küçük harf duyarlı" onay kutusunu işaretleyin ve her şey yolunda gider.

not Nasıl olduğuna göre !!!... (Kod koddan geçtiğinde - Ben sadece birkaç sihirbazı duyurmaya hazırım değil ... :-)))) )

 
artmedia70 :

En basit trolümle karşılaştırın. Özellikle, yinelenen siparişlerin döngüsü:

Bence ilke açık.

Trol seçeneği için teşekkürler. İlke açık.
Neden: