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

 
Maksim Burov #:

İyi günler.

Elde edilen optimizasyon parametrelerinin farklı bir süre için yeniden çalıştırılmasını nasıl ayarlayacağımı söyleyebilir misiniz?

Excel'de kaydedilen bir döviz çifti parametreleri üzerinde son yarım yıl için optimize edildi. Geçen yıl için dönemi aldım ve parametreleri çalıştırmak istiyorum. Bunları test ediciye veya optimize ediciye nasıl geri koyabilirim.
Neyin geçeceğini, neyin geçmeyeceğini kontrol edin, Excel'e yazın. Belki daha sonra örneğin son 2 yıl için çalıştırın.

Verilerinizi çalıştırmak istediğiniz dönemi seçin. Ve sonra elde edilen parametreler sekmesinde, gerekli parametrelere sağ tıklayın ve tek test seçin.
 
Roman Kutemov #:
Verilerinizi çalıştırmak istediğiniz dönemi seçin. Ve sonra elde edilen parametreler sekmesinde, istediğiniz parametreye sağ tıklayın ve tek test seçin.

Teşekkürler.
Ve her parametreyi dürtmek yerine her şeyi kapsam içinde nasıl yapabilirim?

 

Lütfen hesaplamalarda bana yardımcı olur musunuz?


Durdurmanın 3 katı kar almam gerekiyor. İşe yarıyor gibi görünüyor, ancak bir şeyler yanlış)). Robot altın ve endekslerle işlem yapıyor, ancak para birimleriyle işlem yapmayı reddediyor (her şeyi doğru hesaplamasına rağmen).

İlk önce durağı mum 1'in en düşük seviyesine ayarladım:

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
      Print("Цена стопа ", stoploss);

Sonra ASK 'den durağa olan mesafeyi puan olarak hesaplıyorum ve bu değeri pert noktalarına atıyorum:

//---Опредеяем размер стопа в пунктах
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   double points = NormalizeDouble((ask - low) / _Point, _Digits);
      Print("Размер стопа ", points);

Bundan sonra durağı pip cinsinden de hesaplıyorum:

//---Считаем тейкпрофит
   double TP = NormalizeDouble(points * 3, _Digits);
   Print("Размер тейка ", TP);


Sonra bir anlaşma açıyorum ve ASK 'ye TR ekliyorum:

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, ask + TP,"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }


Ve test cihazında tüm hesaplamalar doğrudur, 5 basamaklı noktalarda, durdurma da Low1'dedir, durdurmanın boyutu da 5 basamaklı noktalarda doğrudur. Ancak kar alma ile ilgili bir sorun var, 507 pip değil, 5070 pip.



 

Merhaba Sergey.

Durdurmayı hesaplarken, fiyattaki mesafeden pip cinsinden mesafeye gidersiniz. Ardından, 3 ile çarparak, pip cinsinden de çıkarma mesafesini elde edersiniz. Ve sonra pip sayısını satış fiyatına eklersiniz.

Bir pip boyutuna bölmemeye çalışın veya sonra tekrar çarpmayı unutmayın.

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
      Print("Цена стопа ", stoploss);

//---Опредеяем размер стопа
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   double points = NormalizeDouble((ask - low) / _Point, _Digits);
   double points = NormalizeDouble((ask - low), _Digits);
      
//--- ...

Ya da bunun gibi

//---Устанавливаем стоп
   double stoploss = iLow(_Symbol,PERIOD_CURRENT,1);
   Print("Цена стопа ", stoploss);

//---Опредеяем размер стопа в пунктах (это целое число)
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   double low = iLow(_Symbol, 0, 1);
   int points = (ask - low) / _Point;
   Print("Размер стопа ", points);

//---Считаем тейкпрофит
   int TP = points * 3;
   Print("Размер тейка ", TP);

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, NormalizeDouble(ask + TP * _Point, _Digits),"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }
 
Yuriy Bykov #:

Merhaba, Sergei.


Çok teşekkür ederim! Gerçekten fiyatlar/öğeler arasında kayboldum. Şimdi deneyeceğim)))

 
Şimdi her şey doğru sayılıyor ve ayarlanıyor, ancak yalnızca USDJPY, XAUUSD ve herhangi bir endekste. Ancak USDCAD, EURUSD gibi para birimlerinde baykuş işlem yapmıyor ve 4756 hatası gönderiyor. Yardımdaki değere baktım, ancak yardımcı olmadı)
 
Sergey Izhutov #:
Şimdi her şey doğru sayılıyor ve ayarlanıyor, ancak yalnızca USDJPY, XAUUSD ve herhangi bir endekste. Ancak USDCAD, EURUSD gibi para birimlerinde baykuş işlem yapmıyor ve 4756 hatası gönderiyor. Yardımdaki değere baktım ama hiçbir şey yapmadı)

Önceki gönderide olduğu gibi yapın: sizin için pozisyonları açan kodu sağlayın. O zaman, belki, bazı tavsiyeler verebilirsiniz. USDJPY ve USDCAD arasında temel bir fark olmamalıdır, büyük olasılıkla önemsiz bir hata vardır.

 
Yuriy Bykov #:

Son gönderideki gibi yapın:

İşte kod

//---Открываем сделку на покупку
         if(Close > maHandle && Close > Open)
            {
               if(trade.Buy(Lot,_Symbol,SYMBOL_ASK,stoploss, ask + BuyTP,"Это я, твой робот") == true)
                  {
                     Print("Открыта покупка");
                  }
                 else
                     {
                         // Получение кода ошибки
                         int error_code = GetLastError();
                         Print("Ошибка отправки заявки: ", GetLastError());
                     }
                  
                     return;
            }
            
    //---Открываем сделку на продажу
         if(Close < maHandle && Close < Open)
            {
               if(trade.Sell(Lot,_Symbol,SYMBOL_ASK,stoploss,ask - SellTP,"Это я, твой робот") == true)
                  {
                     Print("Открыта продажа");
                  }
                 else
                     {
                         // Получение кода ошибки
                         int error_code = GetLastError();
                         Print("Ошибка отправки заявки: ", GetLastError());
                     }
                  
                     return;
            }
 

Büyük olasılıkla hata burada:

if(Close > maHandle && Close > Open)

Mantığınıza göre maHandle fiyat olmalıdır ve bu büyük olasılıkla bir tutamaçtır, yani bir tamsayıdır - tüm yüklü göstergeler arasında göstergenin seri numarası. Gösterge değerlerini almanın doğru yolu için MQL5 Yardım'a bakın.

 
Yuriy Bykov #:

Muhtemelen burada bir hata var:

Mantığınıza göre maHandle fiyat olmalıdır ve bu büyük olasılıkla bir tutamaçtır, yani bir tamsayıdır - tüm yüklü göstergeler arasında göstergenin seri numarası. Gösterge değerlerini almanın doğru yolu için MQL5 Yardım'a bakın.

Akşam ben de aynı şeyi düşündüm, kaldırmam gerektiğini. Henüz endekslerle arkadaş olmadım. Sadece 4'te Close > MA yazdığımı ve orada her şeyin çalıştığını hayal meyal hatırlıyorum. Tutamacı yorumlamayı deneyeceğim ve sonuçların ne olduğunu göreceğim