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

 
Vitaly Muzichenko :

İyi "ton" programlama, hatasız ve uyarısız bir programdır, geri kalan her şey amatörcedir.


Tadı bırakalım. Bu tür uyarıların bir nedenden dolayı yapıldığını varsayıyorum. Soru - ne için?

 
Artyom Trishkin :
Danışmanın kazandığı parayı dergiden çekmeyeceksiniz. Buna göre, programın buna göre hareket etmesi için hataları ele alması gerekir.

Böylece program varsa bunları yine de işler ve bunlarla ilgili mesajları görüntüler. Burada neyi anlamadım?

 
Andrey Sokolov :

Böylece program varsa bunları yine de işler ve bunlarla ilgili mesajları görüntüler. Burada neyi anlamadım?

Bir program değil, bir terminal.
Programın bunları işleyebilmesi için önce elde edilmeleri gerekir. Bunu yapmak için, ticaret işlevleri hata durumunda false döndürür. Ayrıca, işlevin sonucu yanlışsa, GetLastError() hata kodunu almanız ve programınızda işlemeniz gerekir.
 

Selamlar! Terminal yetkilendirmeyi geçmiyor! nerede kazılır, ne yapılır?

 
kalmyk87 : merhaba! Terminal oturum açamıyor! nerede kazılır, ne yapılır?
Yetkilendirme = aracının sunucusuyla iletişim, İnternet'i açmanız gerekir. Demo - şifrenizi unuttuysanız, yeni bir hesap açın. Gerçekse - komisyoncuyu arayın.
 
STARIJ :
Yetkilendirme = aracının sunucusuyla bağlantı, İnternet'i açmanız gerekir. Demo - şifrenizi unuttuysanız, yeni bir hesap açın. Gerçekse - komisyoncuyu arayın.

hesaba göre giriş yaptım... ama mql5 profili nedense yetkilendirmeyi geçmiyor..

 

Tünaydın. Lütfen bu soruda bana yardım edin...

Gösterge, CSV'den geçerli gün için beyaz bir seviye çizer. Fiyat bu seviyeye ulaşmazsa, sonraki günlerde (seviye) noktalı çizgi olarak görüntülenmeye devam eder. Fiyat gelecekte bu beyaz noktalı çizgiye ulaştığında durur. Ancak ertesi gün işlenmemiş seviyeleri kontrol ettikten sonra (gösterge) bu seviyeyi tamamlanmış olarak kabul eder ve çizmeyi bırakır, ancak bu noktalı çizginin grafikte kalmasını istiyorum.

Teşekkür ederim.

 //------------- читаю и разбираю строку из файла --

txt_data = FileReadString (file);   дата_уровней = StrToTime (txt_data+ " 00:00" );
if ( FileIsEnding (file)== true )     break ; // если конец  Выход из цикла
ArrayInitialize (d_input, 0 );
for ( int i= 0 ; i< 12 ; i++)   //== считываю уровни в массив
 {
 txt_data = FileReadString (file); 
 d_input[i] = replace_dot(txt_data);
 if ( FileIsLineEnding (file) ) break ;
 }

if (уровни == Daily)
  {
   double white = d_input[ 4 ];
   t0 = дата_уровней + 1 * PeriodSeconds ( PERIOD_H1 );
   t1 = дата_уровней + 23 * PeriodSeconds ( PERIOD_H1 );
     Draw_Level( "white" , white, c_day_3, STYLE_SOLID , толщина); 
       if (показ_неотработок)
     if ( !check_white_level(дата_уровней, white) )
     draw_line(t0, white, c_day_3) ;
  }
//   отображение  уровней 
void Draw_Level( string name, double _level, color _colr, int _style, int _width)
{
string o_name = i_name + "_" + name + "_" + TimeToStr (t0, TIME_DATE );
if (_level> 0 )
 {
   if ( ObjectFind (o_name) != 0 )
   ObjectCreate (o_name, OBJ_TREND , 0 , t0, _level, t1, _level);
   ObjectSet (o_name, OBJPROP_TIME1 , t0);
   ObjectSet (o_name, OBJPROP_PRICE1 , _level);
   ObjectSet (o_name, OBJPROP_TIME2 , t1);
   ObjectSet (o_name, OBJPROP_PRICE2 , _level);
   ObjectSet (o_name, OBJPROP_COLOR , _colr);
   ObjectSet (o_name, OBJPROP_STYLE , _style);
   if (_style == STYLE_DOT )   ObjectSet (o_name, OBJPROP_WIDTH , 1 );
     else      ObjectSet (o_name, OBJPROP_WIDTH , _width);
   ObjectSet (o_name, OBJPROP_RAY , false );   // луч
   ObjectSetText (o_name, DoubleToStr (_level, 4 ) );
   ObjectSetInteger ( 0 , o_name, OBJPROP_SELECTABLE , False ); 
   ObjectSetInteger ( 0 , o_name, OBJPROP_HIDDEN , True );  
   ObjectSetString ( 0 , o_name, OBJPROP_TOOLTIP , "\n" ); // убираю всплывающую надпись
 }
}
// проверка_отработки уровня
bool check_white_level( datetime t_open, double _level)
{
if (_level <= 0 ) return ( False );
int bar0 = iBarShift ( NULL , 0 , t_open);
double max = High [ iHighest ( NULL , 0 , MODE_HIGH , bar0, 0 )];
double min = Low [ iLowest ( NULL , 0 , MODE_LOW , bar0, 0 )];
if ( _level <= max && _level >= min )
   return ( TRUE );
return ( False );
}
void draw_line( datetime begin, double _level, color _clr)
{
if (_level <= 0 ) return ;
string o_name = i_name + "_wh1_" + TimeToStr (begin, TIME_DATE );
datetime t_0 = begin ;
datetime t_1 = TimeCurrent () ;
   if ( ObjectFind (o_name) != 0 )
   ObjectCreate (o_name, OBJ_TREND , 0 , t_0, _level, t_1, _level);
   ObjectSet (o_name, OBJPROP_TIME1 , t_0);
   ObjectSet (o_name, OBJPROP_PRICE1 , _level);
   ObjectSet (o_name, OBJPROP_TIME2 , t_1);
   ObjectSet (o_name, OBJPROP_PRICE2 , _level);
   ObjectSet (o_name, OBJPROP_COLOR , _clr);
   ObjectSet (o_name, OBJPROP_STYLE , STYLE_DOT );
   ObjectSet (o_name, OBJPROP_WIDTH , 1 );
     ObjectSet (o_name, OBJPROP_RAY , false );   // луч
     ObjectSetInteger ( 0 , o_name, OBJPROP_SELECTABLE , False ); 
   ObjectSetInteger ( 0 , o_name, OBJPROP_HIDDEN , True );  
   ObjectSetString ( 0 , o_name, OBJPROP_TOOLTIP , "\n" ); // убираю всплывающую надпись
}
 
REHİNİN NE OLDUĞUNU ANLAMAYA YARDIMCI OLUN
1) Mevduat nasıl hesaplanır? Bir Expert Advisor'da bu değer nasıl elde edilir?
2) Kilitleme sırasında depozito nasıl hesaplanır? Bir Expert Advisor'da bu değer nasıl elde edilir?
3) Açık sipariş bilet için teminat tutarını nasıl alabilirim? OrderMargin() gibi işlevleri bulamadım, ancak siparişlerdeki marj terminalde görünüyor (ya da yalan mı söylüyor?).
4) Marj, bir emir açılırken bir kez sabitlenen veya mevcut kurda açık bir emrin varlığının her yeni anında yeniden hesaplanan (kayan) bir parametre midir?

Manuel hesaplama formülü doğru mu?
(base_lot * trade_lot * current_rate_%%%USD) / kaldıraç = USD marjı
 
smart_man :
REHİNİN NE OLDUĞUNU ANLAMAYA YARDIMCI OLUN
1) Mevduat nasıl hesaplanır? Bir Expert Advisor'da bu değer nasıl elde edilir?
2) Kilitleme sırasında depozito nasıl hesaplanır? Bir Expert Advisor'da bu değer nasıl elde edilir?
3) Açık sipariş bilet için teminat tutarını nasıl alabilirim? OrderMargin() gibi işlevleri bulamadım, ancak siparişlerdeki marj terminalde görünüyor (ya da yalan mı söylüyor?).
4) Marj, bir emir açılırken bir kez sabitlenen veya mevcut kurda açık bir emrin varlığının her yeni anında yeniden hesaplanan (kayan) bir parametre midir?

Manuel hesaplama formülü doğru mu?
(base_lot * trade_lot * current_rate_%%%USD) / kaldıraç = USD marjı

1)

 margin = AccountInfoDouble ( ACCOUNT_MARGIN );                         //-Размер зарезервированных залоговых средств на счете  в валюте депозита

2) kullanmayın

3) formül, sahip olduğunuz formüldür, sadece "current_rate_%%%USD" yerine , pos açılış fiyatı .

4)sabit parametre


Doğru

 
Alekseu Fedotov :

1)

2) kullanmayın

3) formül, sahip olduğunuz formüldür, sadece "current_rate_%%%USD" yerine , pos açılış fiyatı .

4)sabit parametre


Doğru

Teşekkür ederim!

2) Formülün aynı olduğu bilgisini buldum, sadece sonunda hala her şeyi 2'ye böldüm, ama gerçekten olup olmadığını bilmiyorum

3) OrderOpenPrice()'e göre pozisyon açılış fiyatı?

5) Başka bir soru, herhangi bir açılış planlanıyorsa, bundan önce sipariş için gelecekteki tüm maliyetleri hesaplamanız gerekir (marjın boyutu, kar ve zarar miktarı ve burada ayrıca maliyeti hesaplamanız gerekecektir. bir nokta, ücretsiz fonların kullanılabilirliğini kontrol edin, bir seferde risk için ücretsiz fon yüzdesi olarak sınırlayın, başka bir şeyi mi kaçırdım?) ve ancak o zaman mı açın? Yoksa başka bir şekilde mümkün mü? Başka bir düşüş var mı, sayılmalı mı?

5.1) Pip değeri nasıl hesaplanır?

5.2) Ücretsiz fonların mevcudiyeti nasıl kontrol edilir?

Bu tür sorular soruyorum çünkü bunu kendi başıma çözmek zor, muhasebe gibi çok özel şeyler var.