KimIV'ten faydalı özellikler - sayfa 80

 
zennon писал(а) >>
MovingInWL() işlevi, sy,op,mn giriş filtrelerinden bağımsız olarak tüm açık konumlar üzerinde aptalca yinelenir. Bu, örnek olarak eklenen Expert Advisor için de geçerlidir (sayfa 55).

Andrey, teşekkürler! Sabit...

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL ( string sy = "" , int op = - 1 , int mn = - 1 ) {
   double po , pp ;
   int     i , k = OrdersTotal ( ) ;

   if ( sy = = "0" ) sy = Symbol ( ) ;
   for ( i = 0 ; i < k ; i + + ) {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ) {
       if ( ( OrderSymbol ( ) = = sy | | sy = = "" ) & & ( op < 0 | | OrderType ( ) = = op ) ) {
         if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {
          po = MarketInfo ( OrderSymbol ( ) , MODE_POINT ) ;
           if ( OrderType ( ) = = OP_BUY ) {
             if ( OrderStopLoss ( ) - OrderOpenPrice ( ) < LevelWLoss * po ) {
              pp = MarketInfo ( OrderSymbol ( ) , MODE_BID ) ;
               if ( pp - OrderOpenPrice ( ) > LevelProfit * po ) {
                ModifyOrder ( - 1 , OrderOpenPrice ( ) + LevelWLoss * po , - 1 ) ;
               }
             }
           }
           if ( OrderType ( ) = = OP_SELL ) {
             if ( OrderStopLoss ( ) = = 0 | | OrderOpenPrice ( ) - OrderStopLoss ( ) < LevelWLoss * po ) {
              pp = MarketInfo ( OrderSymbol ( ) , MODE_ASK ) ;
               if ( OrderOpenPrice ( ) - pp > LevelProfit * po ) {
                ModifyOrder ( - 1 , OrderOpenPrice ( ) - LevelWLoss * po , - 1 ) ;
               }
             }
           }
         }
       }
     }
   }
}
e-MovingInWL2.mq4 Uzman Danışmanı da düzeltildi.
 

İyi günler Igor!

Foruma bu kadar zaman ayırdığınız için teşekkürler. Igor, gelen alım / satım talepleri hakkında bilgi alma olasılığını biliyor musunuz - "piyasa derinliği".

 
Alex30 писал(а) >>
Igor, gelen alım / satım talepleri hakkında bilgi alma olasılığını biliyor musunuz - "piyasa derinliği".

Numara

 
Deneyimlilere soru: Biri bana xMeterMTF.mq4 demomda göstergenin neden her şeyin yolunda olduğunu gösterdiğini, ancak gerçek hayatta euro için boş olduğunu söyleyebilir mi (belki de eur/usd çifti gerçek hayatta eur/usddpro olarak listelendiğinden) ) Bunu düzeltmek mümkün mü
Dosyalar:
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

isTradeTimeString() işlevi.

Bu işlev, zaman ticaret izni bayrağını döndürür. Aslında asıl kontrol edilen, belirli bir zaman diliminde ticaret sunucusunun o anki saatinin konumudur. İçerideyse, isTradeTimeString() işlevi true döndürür, aksi takdirde false döndürür. Bu işlevin bir özelliği, hem bir gün içinde hem de bir gün dışında bir zaman aralığı belirleme yeteneğidir. Bu, kullanım örneklerinde daha ayrıntılı olarak gösterilecektir. isTradeTimeString() işlevi, aşağıdaki isteğe bağlı parametreleri kabul eder:

  • TimeBegin - "SS:MM" formatındaki bir dize, ticaretin başlangıç zamanını ayarlar. Varsayılan değer "00:00"dır.
  • TimeEnd - "SS:MM" biçimindeki bir dize, işlemin bitiş zamanını ayarlar. Varsayılan değer "00:00"dır.
 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString ( string TimeBegin = "00:00" , string TimeEnd = "00:00" ) {
   datetime dtBegin , dtEnd ;          // Время начала и окончания работы
   int       hc , he ;                  // Часы текущего времени и окончания работы

  dtBegin = StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) + " " + TimeBegin ) ;
  dtEnd   = StrToTime ( TimeToStr ( TimeCurrent ( ) , TIME_DATE ) + " " + TimeEnd ) ;
  hc     = TimeHour ( TimeCurrent ( ) ) ;
  he     = TimeHour ( dtEnd ) ;
   if ( dtBegin > = dtEnd ) {
     if ( hc > = he ) dtEnd + = 24 * 60 * 60 ; else dtBegin - = 24 * 60 * 60 ;
   }

   if ( TimeCurrent ( ) > = dtBegin & & TimeCurrent ( ) < = dtEnd ) return ( True ) ;
   else return ( False ) ;
}
 

isTradeTimeString() işlevini kullanma örnekleri.

  1. Bir gün içindeki zaman dilimi. Ticaret sunucusunun mevcut saati segmentin içindedir ve "07:50" ye eşit olmasına izin verin.
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Bir gün içindeki zaman dilimi. Ticaret sunucusunun şu anki saati segmentin dışında ve "07:50" ye eşit olmasına izin verin.
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. Zaman aralığı, günün sınırını içerir. Ticaret sunucusunun şu anki saati segmentin içinde ve "07:50" ye eşit olmasına izin verin.
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. Zaman aralığı, günün sınırını içerir. Ticaret sunucusunun şu anki saati segmentin dışında ve "07:50" ye eşit olmasına izin verin.
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

not. Ekli, isTradeTimeString() işlevini test etmek için bir komut dosyasıdır.

Dosyalar:
 
KimIV >> :

Igor, i-Sessions göstergesinde periyodik olarak hatalar görünüyor: henüz açılmamış oturum alanları beliriyor ve kayboluyor...

 
DR12CED >> :

Igor, i-Sessions göstergesinde periyodik olarak hatalar görünüyor: henüz açılmamış oturum alanları görünüyor ve kayboluyor...

Hata... Geri alıyorum... Olayları beklemek açısından da kullanışlı olacaklar... Üzgünüm... plz...

 
KimIV >> :

isTradeTimeString() işlevi.

Bu işlev, zaman ticaret izni bayrağını döndürür. Aslında asıl kontrol edilen, belirli bir zaman diliminde ticaret sunucusunun o anki saatinin konumudur. İçerideyse, isTradeTimeString() işlevi true döndürür, aksi takdirde false döndürür. Bu işlevin bir özelliği, hem bir gün içinde hem de bir gün dışında bir zaman aralığı belirleme yeteneğidir. Bu, kullanım örneklerinde daha ayrıntılı olarak gösterilecektir. isTradeTimeString() işlevi, aşağıdaki isteğe bağlı parametreleri kabul eder:

  • TimeBegin - "SS:MM" formatındaki bir dize, ticaretin başlangıç zamanını ayarlar. Varsayılan değer "00:00"dır.
  • TimeEnd - "SS:MM" biçimindeki bir dize, işlemin bitiş zamanını ayarlar. Varsayılan değer "00:00"dır.

Ve değişkenlerin "string" değil "int" olması mümkündür. Test cihazında sıralamak için?

Şimdiden teşekkürler.

 
vasilyt писал(а) >>
Ve değişkenlerin "string" değil "int" olması mümkündür. Test cihazında sıralamak için?

76. sayfada ...