Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 71

 
xyz999 : 2) Optimizasyon (geriye doğru test) 10 aylık bir süre boyunca yapıldıysa ve örneğin 1/4 ileri test seçeneği seçildiyse, nasıl anlamalıyım:
İstemci terminali / Strateji test cihazı / Test cihazıyla çalışma / İleriye dönük test
 
Yedelkin :
İstemci terminali / Strateji test cihazı / Test cihazıyla çalışma / İleriye dönük test

Teşekkür ederim.

evet bu linkte

http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing

İkinci sorumun cevabını buldum. Ancak, BİRİNCİ VE ÜÇÜNCÜ SORULARA CEVAP YOKTUR.

Ben de onlara sahip olmak isterim.

Diğer tüccarların sonuçlarını ve oranlarını bilmek istiyorum. Çünkü aldığım sonuçlar çok rahatsız edici. Piyasadaki fiyat hareket tablosunu da içeren DURAĞAN OLMAYAN SÜREÇLERİN SİMÜLASYONU ve otomatik kontrolü alanında bilim insanıyım. Uzun yıllardır durağan olmayan süreçleri simüle ediyorum ve test cihazının nasıl çalıştığı, uzun yıllara dayanan deneyimime hiçbir şekilde yatırım yapmıyor. Burada bir şeyler yanlış. Test cihazını ya yanlış kullanıyorum ya da düzgün çalışmıyor. Gelin birlikte çözelim.

Benim için kesinlikle optimizasyon dönemine göre bir geriye dönük test yapmak, aynı parametrelerle optimizasyon sırasında elde ettiğimiz kârın %200'ünü gösteriyor. Ve diğer optimizasyon parametrelerini seçerken, optimizasyon periyoduna göre tekrar test ederek birkaç kat daha az kar elde ediyoruz. Prensipte durum böyle olmamalı. Bu yüzden sorularım var.

 
xyz999 : İkinci sorumun cevabını buldum. Ancak, BİRİNCİ VE ÜÇÜNCÜ SORULARA CEVAP YOKTUR. Ben de onlara sahip olmak isterim.

Eh, artık benim için değil. "Ne yapabilirim" dedikleri gibi (c). Konunun kendisinden uzağım. Forumda arama yapmayı deneyin, belki de ileriye dönük testlerin tartışıldığı yerlerde. Veya konunun çok önemli olduğunu düşünüyorsanız, yeni bir konu başlığı oluşturun. Ve sonra genel iş parçacığında sorular hızla kaybolacak.

xyz999 : Evet, bu bağlantıda https://www.metatrader5.com/ru/terminal/help/algotrading/testing ikinci sorumun cevabını buldum.

Terminalde ayrıca referans materyalleri bulunmaktadır. F1.

 
mario065 :

Yapıldı, çok aptalca yapıldı.

Özel Hareketli Ortalama göstergesinin gövdesini aldım ve MFI arabelleğini içine yerleştirdim.

Gerektiğinde fiyatı değiştirdi, hepsi bu.

Bir uzman olarak sizin için yaptım, sadece bir hindi ve doğrulama için bir yorum.Normalde.

Mesajınızı cevapsız bırakmadığınız için teşekkür ederiz. Ne yazık ki, test cihazı hala diğer göstergelerin yumuşatılmasını reddediyor. Uzman Danışmanımın koşulu, aynı anda MFI ve DEMA olmak üzere iki göstergenin değerleridir. Algoritmanızı MFI ile Expert Advisor'a uyguladım - boşuna - global değişkenleri optimize etmek için çalıştıramadım.

Bir kez daha, mesajlar için teşekkürler.
 
Uzman Danışman ile ilgili makale https://www.mql5.com/en/articles/100 , pozisyon açma koşullarından bahseder, ancak bunları kapatmak için herhangi bir koşul yoktur.


   bool Buy_opened= false ;   // переменные, в которых будет храниться информация 
   bool Sell_opened= false ; // о наличии соответствующих открытых позиций

   if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
     {
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
        {
         Buy_opened= true ;   //это длинная позиция
        }
       else if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
        {
         Sell_opened= true ; // это короткая позиция
        }
     }    
             
   bool Buy_Condition_1=...
   bool Buy_Condition_2=...
   bool Buy_Condition_3=...

   
 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Уже есть позиция на покупку!!!" );
             return ;     // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.ask, _Digits );           // последняя цена ask
         mrequest.sl = NormalizeDouble (latest_price.ask - STP* _Point , _Digits ); // Stop Loss
         mrequest.tp = NormalizeDouble (latest_price.ask + TKP* _Point , _Digits ); // Take Profit
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.magic = EA_Magic;                                             // Magic Number
         mrequest.type = ORDER_TYPE_BUY ;                                       // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 10 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Ордер Buy успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
 
 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
             return ;     // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена bid
         mrequest.sl = 0 ;
         mrequest.tp = 0 ;
         mrequest.symbol = _Symbol ;                                             // символ
         mrequest.volume = Lot;                                                 // количество лотов для торговли
         mrequest.magic = EA_Magic;                                             // Magic Number
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу                                     // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;                             // тип исполнения ордера - все или ничего
         mrequest.deviation= 10 ;                                               // проскальзывание от текущей цены
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);

Soru işaretleri yerine PositionSelect(_Symbol) değerini gerçek değerle koydum. Yardım etmedi.


Soru. Pozisyonları kapatmak için koşulları belirleyebilmek için en az ne değiştirilebilir?
Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
Lester :
Uzman Danışman ile ilgili makale https://www.mql5.com/en/articles/100 , pozisyon açma koşullarından bahseder, ancak bunları kapatmak için herhangi bir koşul yoktur.


Soru işaretleri yerine PositionSelect(_Symbol) değerini gerçek değerle koydum. Yardım etmedi.


Soru. Pozisyonları kapatmak için koşulları belirleyebilmek için en az ne değiştirilebilir?

Uyarıdan sonra geri dönüşünüz var. Görünüşe göre bu dönüş nedeniyle pozisyon kapatılmadı. Kaldır ve tekrar dene.

 // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
            return ;      // закрыл
         }  


 
Cevabın çok basit olduğunu ve yakın olduğunu hissettiğiniz için teşekkür ederim.
Ancak soru işaretleriyle ilgili bir soru daha ortaya çıktı.

Algoritma ile.

Uygun koşullar altında + pozisyon yok - pozisyon açılır ve diğer şartlar altında ve açık pozisyonun varlığı - açık pozisyon kapatılır.

Yanılmıyorsam - Buy_opened adlı bir pozisyonun varlığı

 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Уже есть позиция на покупку!!!" );
             return ;     // не добавлять к открытой позиции на покупку
           }        

bire eşittir - bir uyarıya neden olur ve geri döner (başa döner) ve sıfıra eşittir - bir satın alma emri açar.

Soru. Soru işaretleri yerine ne yazılmalıdır - danışmanın pozisyon açmaması için mevcut açık emrin durumu (benim durumumda - satış emri açma)?

 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
             return ;     // закрыл
         }        
         mrequest.action = TRADE_ACTION_DEAL ;                                   // немедленное исполнение
         mrequest.price = NormalizeDouble (latest_price.bid, _Digits );           // последняя цена bid
         mrequest.sl = 0 ;
         mrequest.tp = 0 ;

Bu tanımın koşulları PositionSelect (_Symbol) ile ilişkili olduğundan, şu anda Buy_opened'ı da kaydettim.

Tüm olası mantıksal seçenekleri hızlı bir şekilde deneyip test edebileceğiniz için soruların hiçbir şey ifade etmediğini anlıyorum, ancak sorun şu ki test cihazı hatası bunu yapmama izin vermiyor, ancak gerçek ticarette M1'de gerçekten teşhis koymak mümkün modu.

 
Lester :
...

Tüm olası mantıksal seçenekleri hızlı bir şekilde deneyip test edebileceğiniz için soruların hiçbir şey ifade etmediğini anlıyorum, ancak sorun şu ki test cihazı hatası bunu yapmama izin vermiyor, ancak gerçek ticarette M1'de gerçekten teşhis koymak mümkün modu.

Sorunuzu pek anlamadım.

Ve test cihazında test etmenize izin vermeyen ne tür bir hata buldunuz?

 
tol64 :

Sorunuzu pek anlamadım.

Ve test cihazında test etmenize izin vermeyen ne tür bir hata buldunuz?

Daha önce veya gösterge dalında açıklanmıştır. MFI göstergesinin tutamağına atıfta bulunan Dema, MFI penceresinde görüntülenmez ve bu nedenle test cihazı çalışmaz, ancak EA'nın kendisi çalışır. MA ile aynı, AMA...!

Soru hakkında. Danışmanın açık bir pozisyon olduğunu "anlaması" ve emir açmaması için soru işaretleri yerine ne yazılmalıdır!

 bool Buy_Close_1=....
 bool Buy_Close_2=...
 bool Buy_Close_3=...
 
 if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (????)
         {
           Alert ( "Позицию на покупку закрываю!!!" );
           // Return убрал благодаря форуму ))
         }        
 
Lester :
Daha önce veya gösterge dalında açıklanmıştır. MFI göstergesinin tutamağına atıfta bulunan Dema, MFI penceresinde görüntülenmez ve bu nedenle EA çalışmaz. MA ile aynı, AMA...!

Soru hakkında. Danışmanın açık bir pozisyon olduğunu "anlaması" ve emir açmaması için soru işaretleri yerine ne yazılmalıdır!

Bir pozisyon varsa (PositionSelect(_Symbol)) ve diğer tüm koşullar karşılanıyorsa, pozisyonu kapatın. Örneğinizden return kaldırılmazsa, koşul şöyle görünmelidir:

 if (! PositionSelect ( _Symbol ))
  {
   return;
  }

yani pozisyon yoksa çıkın. Çıkılmazsa, program bu bloğu takip eden kodu yürütecektir.

Ancak kapanış koşullarını kontrol etmeden önce bir pozisyonun varlığını / yokluğunu kontrol ederdim.

Neden: