KimIV'ten faydalı özellikler - sayfa 117

 
tim-time :

... e-SignalOfTrade Uzman Danışmanınıza PUSH bildirimleri eklensin mi?

Eklendi... sitemden indir...
 
KimIV :

Hatanın kısa veya ayrıntılı bir Rusça açıklamasını koduna göre döndüren ErrorRU() işlevi derlendi. Hem ticaret sunucusu tarafından döndürülen hatalar hem de MQL program yürütme hataları tanınır. Bununla birlikte, herkes için değil, "Ne yapmalı" önerileri ile hataların ayrıntılı bir açıklaması var, ancak orada ne var.

İşlevi, test etmek için bir komut dosyasının parçası olarak yayınlıyorum.

Birinin MQH dosyası biçiminde bir varyasyona ihtiyacı varsa, onu sitemden alın .


Selamlar İgor. Bu özellik için teşekkürler, çok gerekli
 

Merhaba KimIV

Siz, sitenizde harika bir işleve sahipsiniz i-Profit.mq4.

Lütfen bana terazinin durumuyla ilgili verileri ondan nasıl çıkaracağımı söyleyin:

// 0 - mevcut bakiye

// 1 - günün başında bakiye

// 2 - haftanın başındaki bakiyeler

// 3 - ayın başındaki bakiyeler

// 4 - çeyreğin başındaki bakiyeler

// 5 - yılın başındaki bakiye

// 6 - özel bir tarihte bakiye

 

ProfitByPrice() işlevi.

Bu işlev, tahmin işlevlerimin küçük bir kümesinden biridir. Geleceği göstermeleri anlamında öngörü, yani "Bir olay olursa ne olacak?" Sorusuna cevap verirler. Bu işlev, örneğin, mevcut pozisyonlar parametre olarak iletilen fiyattan kapatılırsa mevduat para biriminde bir kar döndürür.

  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir ticaret işlemi anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.
  • cp - Beklenen kapanışın fiyatı. 0 varsayılan değeri, geçerli Teklif fiyatı anlamına gelir.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2013                                                     |
//|  Описание : Возвращает профит в валюте депозита, если текущие позиции      |
//|             будут закрыты по цене, переданной в качестве параметра.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - операция                             (-1 - любая позиция)          |
//|    mn - MagicNumber                          (-1 - любой магик)            |
//|    cp - цена предполагаемого закрытия (Bid)  ( 0 - текущая цена)           |
//+----------------------------------------------------------------------------+
double ProfitByPrice( int op=- 1 , int mn=- 1 , double cp= 0 ) {
   double pr= 0 ;
   double po=MarketInfo( Symbol (), MODE_POINT);
   double sp=MarketInfo( Symbol (), MODE_SPREAD);
   double tv=MarketInfo( Symbol (), MODE_TICKVALUE);
   int     i, k= OrdersTotal ();

  RefreshRates();
   if (cp<= 0 ) cp=Bid;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()== Symbol () && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
            pr+=(cp-OrderOpenPrice())/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
           if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-cp-Ask+Bid)/po*OrderLots()*tv;
            pr+=OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
   return (pr);
}

not. Ekli, işlevi test etmek için geleneksel bir komut dosyasıdır.

ZZY. Parametreler arasında geleneksel sy yoktur, çünkü başka bir parametrede geçirilen fiyat, ticaret aracına bağlı olmalıdır. Çok fazla uğraşmamaya ve mevcut sembole bağlanmaya karar verdim.

Dosyalar:
 
Sevgili Igor! Programlamadaki ilk adımlarımızı kolaylaştıran işlevleriniz için teşekkür ederiz! Bana yardım edebilir misiniz, bir pozisyonu kapatmak için bir fonksiyona ihtiyacım var, ancak diğer fonksiyonları çağırmadan , ancak içinde bir Select olması, 3 deneme ve hata işleme! Ve başlangıçta, süreci yavaşlatmamak için Select'siz kontrol fonksiyonlarına sahip koşulları belirlerdim. Çeşitli kontrollerle başlangıçta Select döngüsünü kullanırken, neredeyse iki kez yavaşlayan Select olmadan kapatma işlevini çağırıyorum ! Bana ne tavsiye edebilirsin? Teşekkür ederim!
 

Kim IV :

Bu fiyatın uzaklığında başka emir veya pozisyon olmaması kaydıyla hesaplanan fiyattan bekleyen emir verilmesi gerekmektedir. Görünüşe göre böyle bir işleviniz yok: belirli bir fiyattan uzakta bir emrin veya pozisyonun varlığı?

 
Görünüşe göre KimIV burada görünmüyor! :(
 
khorosh :

Kim IV :

Bu fiyatın uzaklığında başka emir veya pozisyon olmaması kaydıyla hesaplanan fiyattan bekleyen emir verilmesi gerekmektedir. Görünüşe göre böyle bir işleviniz yok: belirli bir fiyattan uzakta bir emrin veya pozisyonun varlığı?


Buna benzeterek, bir şeyi tasvir edebilirsiniz ...

Güncelleme...

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,   http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 24.06.2013                                                     |
//|  Описание : Возвращает флаг существования ордера или позиции               |
//|             около заданной цены.                                           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    zp - заданная цена                                                      |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//|    op - торговая операция               (    -1      - любая операция)     |
//|    mn - MagicNumber                     (    -1      - любой магик)        |
//|    ds - расстояние в пунктах от цены    (  1000000   - по умолчанию)       |
//+----------------------------------------------------------------------------+
bool ExistOPNearPrice( double zp, string sy= "" , int op=- 1 , int mn=- 1 , int ds= 1000000 ) {
   int i, k= OrdersTotal (), ot;

   if (sy== "" || sy== "0" ) sy= Symbol ();
   double p=MarketInfo(sy, MODE_POINT);
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
       if ((OrderSymbol()==sy) && (op< 0 || ot==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if ( MathAbs (OrderOpenPrice()-zp)<ds*p) return (True);
        }
      }
    }
  }
   return (False);
}

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

Dosyalar:
 
borilunad :
Sevgili Igor! Programlamadaki ilk adımlarımızı kolaylaştıran işlevleriniz için teşekkür ederiz! Bana yardım edebilir misiniz, bir pozisyonu kapatmak için bir fonksiyona ihtiyacım var, ancak diğer fonksiyonları çağırmadan , ancak içinde bir Select olması, 3 deneme ve hata işleme! Ve başlangıçta, süreci yavaşlatmamak için Select'siz kontrol fonksiyonlarına sahip koşulları belirlerdim. Çeşitli kontrollerle başlangıçta Select döngüsünü kullanırken, neredeyse iki kez yavaşlayan Select olmadan kapatma işlevini çağırıyorum! Bana ne tavsiye edebilirsin? Teşekkür ederim!
ClosePosBySelect() doğru değil mi?
 
artmedia70 :
ClosePosBySelect() doğru değil mi?
Bu, ancak bu kadar değil, sonuçta ortaya çıkan hatalarla diğer işlevlere çok sayıda gereksiz çağrı!