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

 
WinProject :

Teşekkür ederiz! ), değişken Cena=FileReadString(handle); Separator=StringReplace(Сena,",","."); işlevine ekliyorum. "sayıdan dizgeye örtük dönüştürme" hatası yazıyor -

sınırlayıcı "," (1.22426) ile değeri dize olarak okumak istemiyor ve StringReplace başarısız oluyor. Yoksa yanlış mı yapıyorum?


CENA değişkeninin türünü belirten, dosyayı okumanın başlangıcından itibaren kodun sahip olduğunuz kısmını yapıştırın

 
Vladislav Andruschenko :

CENA değişkeninin türünü belirten, dosyayı okumanın başlangıcından itibaren kodun sahip olduğunuz kısmını yapıştırın


geçersiz MyFunc()

{

handle=FileOpen("Data.csv", FILE_CSV|FILE_READ ,';');

while(FileIsEnding(tanıtıcı)!=true)

{ string cena=FileReadString(tutamaç);

stringSepar=StringReplace(cena,",",".");

if(FileIsEnding(handle)==true)

kırmak;

}

FileClose(tutamaç);

}

 
WinProject :

geçersiz MyFunc()

{

handle=FileOpen("Data.csv", FILE_CSV|FILE_READ ,';');

while(FileIsEnding(tanıtıcı)!=true)

{ string cena=FileReadString(tutamaç);

stringSepar=StringReplace(cena,",",".");

if(FileIsEnding(handle)==true)

kırmak;

}

FileClose(tutamaç);

}

Lütfen bu işlevin ne döndürdüğünü okuyun. Bir dizgede sonuç almaya çalışıyorsunuz. Ancak bu işlev sadece bir karakteri bir karakterle değiştirir. Cena'yı değişikliklerle kullanmaya devam edebilirsiniz.
 
Vladislav Andruschenko :
Lütfen bu işlevin ne döndürdüğünü okuyun. Bir dizgede sonuç almaya çalışıyorsunuz. Ancak bu işlev sadece bir karakteri bir karakterle değiştirir. Cena'yı değişikliklerle kullanmaya devam edebilirsiniz.
Hatamı fark ettim (string Separ=burada gereksiz) ve her şey yoluna girdi.

Teşekkürler!)

 

Yardım edin, önceki mumun tepesinden 200p yukarısına bir dikdörtgen çizmem gerekiyor ve ileride bir bar zamanı.

Kodu yazdım ama dikdörtgenin sol noktası neden hareket etmiyor anlamıyorum? Ve sağdaki yükseklerin arkasına kayar

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   //ObjectDelete(0,"Name");
   ArraySetAsSeries (high, true );
   ObjectCreate ( 0 , "Name" , OBJ_RECTANGLE , 0 , TimeCurrent (),high[ 0 ], TimeCurrent ()+ PeriodSeconds ( PERIOD_CURRENT )* 2 ,high[ 0 ]+ 200 * _Point );
   ObjectSetInteger ( 0 , "Name" , OBJPROP_FILL , true );
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
Roman Sharanov :

Yardım edin, önceki mumun tepesinden 200p yukarısına bir dikdörtgen çizmem gerekiyor ve ileride bir bar zamanı.

Kodu yazdım ama dikdörtgenin sol noktası neden hareket etmiyor anlamıyorum? Ve sağdaki yükseklerin arkasına kayar


belki de zaten grafikte olan bir nesne yaratmaya çalışıyorsunuz? grafikte zaten nesneler olup olmadığını kontrol etmek daha iyi olabilir.


ve önceki çubuk 0 değil 1'dir.

high[ 0 ] - это ХАЙ текущего бара
 
Vladislav Andruschenko :

belki de zaten grafikte olan bir nesne yaratmaya çalışıyorsunuz? grafikte zaten nesneler olup olmadığını kontrol etmek daha iyi olabilir.


ve önceki çubuk 0 değil 1'dir.


Evet, zaten düzeltilmiş dizinler.

İsim değişti, listeye baktım, hiçbir şey değişmedi, her şey aynı, bir nokta bir yerde asılı kalıyor, ikincisi yüksekleri takip ediyor

 
Roman Sharanov : Evet, indeksleri zaten düzelttim.

İsim değişti, listeye baktım, hiçbir şey değişmedi, her şey aynı, bir nokta bir yerde asılı kalıyor, ikincisi yüksekleri takip ediyor

   ObjectDelete ( 0 , "Name" );
   ObjectCreate ( 0 , "Name" , OBJ_RECTANGLE , 0 ,
                 TimeCurrent ()- _Period * 60 ,high[ 1 ],
                 TimeCurrent ()+ PeriodSeconds ( PERIOD_CURRENT )* 2 ,high[ 0 ]+ 200 * _Point );
   ObjectSetInteger ( 0 , "Name" , OBJPROP_FILL , true );
   return (rates_total);

hareketli


 
STARIJ :
Çok basit. iMA'yı hesaplamak için 7 parametre ayarlamanız gerekir. İlk parametre olan sembol adı açıktır. İkinci zaman çerçevesi olarak M1'i ayarlayın . Üçüncü parametre - dönem - günün hangi saatinde bir dakikadan fazla olduğunu, ihtiyacınız olduğu kadar ayarlayın. Dördüncü parametre - shift = 0. Sonraki iki parametre - ortalama alma yöntemi ve fiyat türü - bilirsiniz. Son parametre - çubuğun sayısı - ihtiyacınız olan zamanı bilerek hesaplayın. Bu kadar! M5 ve M15 zaman dilimleri için hesaplamalar yaparak bunu iki kez kontrol edin. Belki M30 için bile.

STARIJ, Yardımın için teşekkürler, kontrol ettim, ne yazık ki orijinalle çakışma zayıf ve zaman diliminde bir artışla (örneğin, 30 dakikadan bir haftaya), tesadüf önemli ölçüde azalır. Bu yöntem hiç yoktan iyidir, ancak doğruluk onun içinde yeterli değildir. Başka seçenekler var mı?

 
Boss11 :

STARIJ, Yardımın için teşekkürler, kontrol ettim, ne yazık ki orijinalle çakışma zayıf ve zaman diliminde bir artışla (örneğin, 30 dakikadan bir haftaya), tesadüf önemli ölçüde azalır. Bu yöntem hiç yoktan iyidir, ancak doğruluk onun içinde yeterli değildir. Başka seçenekler var mı?

Evet. M1 kullanılmalıdır ve M5, ... - doğrulama için. Belki enterpolasyon kullanın? MT5'in kene geçmişi var. Bana kârın nerede olduğunu söylersen - tekrar bakarım