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

 
VIREDS # :
mql4 bilenlere iyi seyirler. Herhangi bir yöndeki karlı pozisyonlar nedeniyle seride en fazla kaybeden emrin yüzdesini kapatan bir fonksiyon vardır. Bu özelliği geliştirmek için gerçekten yardıma ihtiyacım var! Yani, serideki kalan tüm emirleri (herhangi bir yöndeki karlı pozisyonlar nedeniyle) bir uzak yerine kısmen kapatmak. Şimdiden teşekkürler!
2 aydır bu özellik için uğraşıyorum . Çok fazla nüans var. Özellikle bu çizgi
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap(); //ПРОФИТ ОДНОГО ОРДЕРА

Şebekede çok sipariş olduğunda, kapatırken her şeyi sıfıra kapatması gerektiği halde toplam zarar verir. Sonuç olarak, komisyonları ve takasları tamamen kaldırdım

 double spreadLoss =(MarketInfo( _Symbol ,MODE_TICKVALUE)* MarketInfo( _Symbol , MODE_SPREAD ));
 
Ve sonra fonksiyonda her sipariş için lot/lotstep ile çarpabilirsiniz, ancak ben sadece bir çarpan yaptım
 
Ve OrderClose()'dan önce unuttular (!)
 
Tünaydın. Lütfen mevcut durum nedeniyle MQL4 hizmetleri için nasıl ödeme yapacağımı söyleyin
 

Herkese iyi günler. Bir sinyal göründüğünde grafikte ok çizen bir göstergem var. Tüm bu okların grafikteki tarihe göre düzenlendiği ve sinyallerin potansiyelinin değerlendirilmesinin mümkün olduğu ortaya çıktı.

gösterge okları ile grafik.

Alarmı, bir sinyalin göründüğünü bildirecek şekilde sabitlemeye çalıştım. Göstergede bir sinyal göründüğünde ok çizen bir fonksiyon buldum.

 void SetDivergenceUP( string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr= iATR (sy, PERIOD_CURRENT , 14 ,index);
   color line_color= clrNONE ;
   string nm= "" , gv_name= "" ;
   if (name_ind== "AO" ) {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if (name_ind== "MACD" ) {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if (name_ind== "RSI" ) {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy, PERIOD_CURRENT ,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy, Period (),index)+atr*shiftArrow;
   if (ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
       GlobalVariableSet (gv_name,- 1.0 );
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr= Bars (sy, PERIOD_CURRENT , TimeCurrent (),last_prc_tm);
   nm=Prefix+ "P" +name_ind+ "divUpper" + TimeToString (time_b);
   SetTLine( 0 ,nm,line_color, 0 ,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+ " " +name_ind+(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if (wnd> 0 ) {
      nm=Prefix+name_ind+ "divUpper" + TimeToString (time_b);
      SetTLine( 0 ,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+ " " +(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
      }

}


  Bu fonksiyonun sonunda Uyarı vermek için bir satır ekledim. Eklenen satırı renkle vurgulayın ;-)

 void SetDivergenceUP( string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr= iATR (sy, PERIOD_CURRENT , 14 ,index);
   color line_color= clrNONE ;
   string nm= "" , gv_name= "" ;
   if (name_ind== "AO" ) {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if (name_ind== "MACD" ) {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if (name_ind== "RSI" ) {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy, PERIOD_CURRENT ,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy, Period (),index)+atr*shiftArrow;
   if (ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
       GlobalVariableSet (gv_name,- 1.0 );
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr= Bars (sy, PERIOD_CURRENT , TimeCurrent (),last_prc_tm);
   nm=Prefix+ "P" +name_ind+ "divUpper" + TimeToString (time_b);
   SetTLine( 0 ,nm,line_color, 0 ,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+ " " +name_ind+(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if (wnd> 0 ) {
      nm=Prefix+name_ind+ "divUpper" + TimeToString (time_b);
      SetTLine( 0 ,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+ " " +(work_period== Period ()? "" : "\nна периоде " +GetNameTF(work_period)));
      }
        Alert ( "ДИВЕРГЕНЦИЯ НА " + Symbol ());
}

Bilgi işe yaradı ve test cihazında her şey yolunda. Ancak terminali başlatırken ve tabloya bir gösterge atılırsa, o zaman J geçmişinde oklar olduğu kadar çok ses sinyali ve mesaj verir, ne yapılması gerektiğini ve Uyarının yalnızca son kez verildiğinde nasıl yayınlanacağını verir. terminal açıldığında sinyal gelir ve   tarih üzerine oklar sustu?
 
DanilaMactep # :

Herkese iyi günler. Bir sinyal göründüğünde grafikte ok çizen bir göstergem var. Tüm bu okların grafikteki tarihe göre düzenlendiği ve sinyallerin potansiyelinin değerlendirilmesinin mümkün olduğu ortaya çıktı.

Alarmı, bir sinyalin göründüğünü bildirecek şekilde sabitlemeye çalıştım. Göstergede bir sinyal göründüğünde ok çizen bir fonksiyon buldum.


  Bu fonksiyonun sonunda Uyarı vermek için bir satır ekledim. Eklenen satırı renkle vurgulayın ;-)

Bilgi çalıştı ve test cihazında her şey yolunda. Ancak terminali başlatırken ve tabloya bir gösterge atılırsa, o zaman J geçmişinde oklar olduğu kadar çok ses sinyali ve mesaj verir, ne yapılması gerektiğini ve Uyarının yalnızca son kez verildiğinde nasıl yayınlanacağını verir. terminal açıldığında sinyal gelir ve   tarih üzerine oklar sustu?
Yalnızca ilk veya sıfır çubuğunda uyarı.
 

Meslektaşlar - organizasyon sorunu:

Mt4 ve MT 5'te exp'leri test ettiğim ve optimize ettiğim bilgisayarımdaki C sürücüsündeki boş alan küçüldü ... 220'den 30 GB kaldı bence ...

Yerin daha önce çalışan robotların veya test edilenlerin günlüklerinin yanı sıra hem MT 4 hem de MT 5'teki farklı terminallerin farklı sembollerinin geçmişi tarafından işgal edildiğinden şüpheleniyorum - İlgileniyorum:

Terminallerin farklı klasörlerindeki sembollerin (sembollere göre keneler) ve günlüklerin geçmişini nasıl temizleyebilirim (bunların çoğu yok, yaklaşık 5).

Daha önce olduğu gibi MT 4'te de sihirli bir clear.bat dosyası vardı.

Genel olarak, farklı klasörlerdeki sembollerin (kenelerinin) ve günlüklerin geçmişinin altındaki yeri temizleme seçeneğine (seçeneklerine) ihtiyacımız var. Masaüstündeki tüm kısayollar MT 4 ve MT5 içindir. Bir çeşit...

genel olarak, geçmiş testlerden (sembol işaretlerinin geçmişi) ve işlemlerden (günlüklerinden) disk alanını temizleyin.

En azından hem MT 4 hem de MT5'te nerede okunur, nasıl temizlenir ve hangi klasörler silinir - nerede bulunurlar ...

TEŞEKKÜR.

 

Lütfen bana söyle.

Uzman Danışman, iCustom aracılığıyla bir gösterge kullanır ve günlükteki her onay işaretinde bu tür hatalar vardır.

Bu, göstergeyi düzenlemeden düzeltilebilir mi? Ve eğer öyleyse, nasıl?

 
ALEKSANDR SOKOLOV her onay işaretinde bu tür hatalar vardır.

Bu, göstergeyi düzenlemeden düzeltilebilir mi? Ve eğer öyleyse, nasıl?

EA'dan ayrı olarak başlatılan gösterge bu tür kayıtları üretmiyorsa, iCustom() aracılığıyla çağrılırken EA'da gösterge parametrelerinin belirtilmesinin doğruluğunu kontrol edin.

 
Roman Shiredchenko Terminallerin farklı klasörlerindeki sembollerin (sembollere göre keneler) ve günlüklerin geçmişini nasıl temizleyebilirim (bunların çoğu yok, yaklaşık 5).

Daha önce olduğu gibi MT 4'te de sihirli bir clear.bat dosyası vardı.

Genel olarak, farklı klasörlerdeki sembollerin (kenelerinin) ve günlüklerin geçmişinin altındaki yeri temizleme seçeneğine (seçeneklerine) ihtiyacımız var. Masaüstündeki tüm kısayollar MT 4 ve MT5 içindir. Bir çeşit...

genel olarak, geçmiş testlerden (sembol işaretlerinin geçmişi) ve işlemlerden (günlüklerinden) disk alanını temizleyin.

En azından hem MT 4 hem de MT5'te nerede okunur, nasıl temizlenir ve hangi klasörler silinir - nerede bulunurlar ...

TEŞEKKÜR.

Bilgisayar kaç yaşında ve Intel veya diğer üreticilerin yerel klasörlerinde, tempo klasörlerinde ve hizmet klasörlerinde sistem günlüklerinin ne zaman temizlendiği. Mevcut tarayıcının ve ofisin yöneticinin altından bir döngü temizleyici ile neredeyse 100 konser aldığı 10 yıllık bir bilgisayarda. Intel klasörümde 25 GB buldum.

Geçmiş klasöründeki Tiki. Orada da, örneğin, tüm semboller için binance'den 25 GB vardı. Ve genel ve mikro klasör klasöründeki günlükleri kontrol edin. Günlükleri kaldırırsanız, hiçbir şeyi etkilemez. Ancak keneler yıkılmışsa, gerekli olanlar yüklenene kadar beklemeniz gerekebilir.