MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 723

 
Igor Makanu :

yapamamak

mevcut geçmişi görmek için iBars() kullanın

Not: yanılmıyorsam, o zaman danışman başlatılırken test cihazında 1000 bar mevcut, o zaman yeni veriler üretildiğinden, bar sayısı artacaktır. Test cihazı, erişilen tüm TF'lerin geçmişini modeller, yani. H1'de bir test başlattıysanız ve test sürecinde M1 TF verilerine erişin, o zaman başlangıçta H1'de 1000 çubuk geçmişine erişebileceksiniz ve buna göre 60 * 1000 = 60.000 M1 çubuk mevcut olacaktır.

daha fazla ayrıntı için bunun gibi makaleleri okumanız gerekir https://www.mql5.com/en/articles/1511

Nasıl yapacağımı buldum.

Danışmanı başlatabilir ve bir ay boyunca işlem yapmayabilirsiniz.

ve önümüzdeki aydan itibaren ticarete yeni başladı.

ve tarih birikmeye devam edecek. ve ticaretten önce dağılım katsayısını hesaplayın.


yöntemi nasıl buldunuz?



ama nasıl yazılır, "böylece ilk ay ticaret yapmaz" ...

Farklı zamanlarda test edeceğim.

tarihi sürekli olarak elle düzeltme isteksizliği.

tezgahı aç ya da başka bir şey, günler ...

 
multiplicator :

Nasıl yapacağımı buldum.

Danışmanı başlatabilir ve bir ay boyunca ticaret yapmayabilirsiniz.

Göreviniz için bunun gibi bir şey gerekli, ancak yine iBars() kullanın ve test cihazındaki danışman için ne kadar geçmişin mevcut olduğunu bileceksiniz.

 

multiplicator :
счётчик, что ли включить, дней...

Igor Makanu :

ama yine, iBars() kullanın ve test cihazında EA için ne kadar geçmişin mevcut olduğunu bileceksiniz.

kesinlikle!

iBars() > 30.000 olduğunda - varyansı hesaplayın ve ardından EA'nın ticaret yapmasına izin verin .

Cevap veren herkese teşekkürler.

 

Merhaba! Deneyimsiz bir acemi tüccara yardım edin! Danışman var ama onda stoploss yok! Expert Advisor'a kim stop loss ekleyebilir (ve mümkünse ücretsiz!)

 
Tem4ik :

Merhaba! Deneyimsiz bir acemi tüccara yardım edin! Danışman var ama onda stoploss yok! Expert Advisor'a kim stop loss ekleyebilir (ve mümkünse ücretsiz!)


Kodu buraya gönderin (çözülmediyse) ve belki birileri yardımcı olabilir.

 
#define list "Cryptocurrency Market\\List.csv"

enum FILE_LOCATION
{
   LOCATE_TERMINAL = 0 ,
   LOCATE_COMMON = FILE_COMMON ,
};

void GetLocalSource(FILE_LOCATION &dir)
{
   GetLocalList(FileOpenEx(list, FILE_WRITE | FILE_READ | FILE_CSV |dir));
}

int FileOpenEx( const string fname, int flags, int delimeter = ';' , uint codepage = CP_ACP )
{
   bool ex;
   if (flags > 4095 )
      ex = FileIsExist (fname, FILE_COMMON );
   else
      ex = FileIsExist (fname);
   if (!ex) return - 1 ;
   return FileOpen (fname, flags, delimeter, codepage);
}

bool GetLocalList(const int handle)
{
   if(handle == INVALID_HANDLE) {Print("Handle err: ", handle, " | ", GetLastError()); return false;}
...
}

Dosyayı FileIsExist aracılığıyla bulamıyor, işlev onu görmek istemiyor. Bu dosyayı zaten hem genel dizine hem de terminal dizinine ittim - sonuç değişmedi

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Günlük: İşlem hatası: -1 | 5020

List.csv yazan işlev, onu aynı liste makro ikamesiyle açar

Hata nerede?

 
Ilya Prozumentov :

Dosyayı FileIsExist aracılığıyla bulamıyorum, işlev onu görmek istemiyor. Bu dosyayı zaten hem genel dizine hem de terminal dizinine ittim - sonuç değişmedi

2019.01.06 16:11:14.957 CoinMarketCap EURUSD,Günlük: İşlem hatası: -1 | 5020

List.csv yazan işlev, onu aynı liste makro ikamesiyle açar

Hata nerede?

Bu #define listesini deneyin "Files\\Cryptocurrency Market\\List.csv"

Dosya, Dosyalar klasöründe olmalıdır.

 
Vladimir Pastushak :

Bu #define listesini deneyin "Files\\Cryptocurrency Market\\List.csv"

Dosya, Dosyalar klasöründe olmalıdır.

Yardım etmedi


PS Problem bulundu, mevcut bir dosyanın adının sonunda bir boşluk var

 

Merhaba.

Hafta başı ve hafta sonu tarihini (tarih formatında) nasıl belirleyeceğimi söyler misiniz? Osilatörün hafta sonunda sıfırlanması ve yeni bir haftanın başlangıcında sıfırdan saymaya başlaması gerekir. Şu anda her gün için nasıl sıfırlayacağımı biliyorum ama her hafta için nasıl sıfırlayacağım hakkında hiçbir fikrim yok. O yüzden her gün sıfırlıyorum.

 void Calculate( int i)
  {
   double summ;
   datetime startTime  = StringToTime ( TimeToString ( Time [i], TIME_DATE )+ " " +StartTime); // StartTime=00:10
   datetime endTime    = StringToTime ( TimeToString ( Time [i], TIME_DATE )+ " " +EndTime);   // EndTime=23.50
   datetime currentTime= StringToTime ( TimeToString ( Time [i], TIME_DATE )+ " " + TimeToString ( Time [i], TIME_MINUTES ));
//Print("Start = ",TimeToString(startTime,3));
//Print("End = ",TimeToString(endTime,3));
   if (CheckTimer(i,startTime,endTime,currentTime, 0 ))
     {
      summ = MainBuffer[i+ 1 ];
      summ+= InfluenceBuffer[i];
      MainBuffer[i]=summ; 
     }
   else
     {
      summ= 0.0 ;
      MainBuffer[i]=summ;
      }
  }

teşekkürler

 
Gerkl :

Hafta başı ve hafta sonu tarihini (tarih formatında) nasıl belirleyeceğimi söyler misiniz?

 //1. для времени datetime t
if ( TimeDayOfWeek (t))== 1 ) // Понедельник
if ( TimeDayOfWeek (t))== 5 ) // Пятница

//2. для текущего времени
if ( DayOfWeek () = 1 ) // Понедельник
if ( DayOfWeek () = 5 ) // Пятница

büyük olasılıkla 1 numaralı seçeneğe ihtiyacınız var, ardından çubukları sıraladığınız hesaplama döngüsündeki göstergede şu yapı gibi bir şey kullanın:

 if ( TimeDayOfWeek ( Time [i]))== 1 ) // Понедельник
if ( TimeDayOfWeek ( Time [i]))== 5 ) // Пятница
durumu kontrol ettikten sonra Zaman[i]'de istediğiniz süreye sahipsiniz