Yalnızca "KimIV'ten Faydalı özellikler". - sayfa 11

 
Bu fonksiyonlara yeni rastladım ve bu programcının mantığını anlamaya karar verdim. Burada sorular soruyorum. Forum bunun için var.
 
satop :

DistMarketAndPos() işlevi.

İyi! Daha ilginç özellikler alalım! Örneğin, piyasa ile en yakın konum arasındaki nokta cinsinden mesafeyi döndüren. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. "" veya NULL, geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.


satop :

DistMarketAndPos() işlevi.

İyi! Daha ilginç özellikler alalım! Örneğin, piyasa ile en yakın konum arasındaki nokta cinsinden mesafeyi döndüren. Kontrol edilen konumların daha doğru seçimi, harici parametreler tarafından belirlenir:

  • sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. "" veya NULL, geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.


Sevgili Igor Kim, bu çok iyi bir işlev, onu ileri geri çalıştırmaya çalışıyorum ve onunla ileri geri emirler açmaya çalışıyorum, bir hatam var, ondan kurtulamıyorum, düzeltmeme yardım et. aşağıdaki hata yorumu

harici int TakeProfit = 150;

harici çift Parti = 0.01;

harici int MAGIC=1234;

int başlangıç()

{

if (DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,Ask+TakeProfit*Puan);

}

dönüş(0);

}

int DistMarketAndPos(dize sy="", int op=OP_BUY, int mn=-1)

{

çift d,p;

int i, k=SiparişToplam(), r=1000000;


if (sy=="" || sy=="0") sy=Symbol();

p=MarketInfo(sy, MODE_POINT);

if (p==0) if (StringFind(sy, "")<0) p=0.00001; başka p=0.01;

(i=0; i<k; i++) için

{

if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))

{

if ((OrderSymbol()==sy) && (op<0 || OrderType()==op))

{

if (mn<0 || OrderMagicNumber()==dk)

{

if (OrderType()==OP_BUY)

{

d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;

if (r>d) r=NormalizeÇift(d, 0);

}

if (OrderType()==OP_SEL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;

if (r>d) r=NormalizeÇift(d, 0);

}

}

}

}

}

//------------------------------------------------ -------------------------------------------------- --------------------------------------------------


if (DistMarketAndPos()>150)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,3,0,Ask-TakeProfit*Puan);

}

dönüş(0);


{

int DistMarketAndPos(string sy="", int op=OP_SELL, int mn=-1) //bu satır 1 hata veriyor,

// bu satır kaldırılırsa,

//sonra derler ama sonra

//op=OP_SELL ayarlamayacağım,

// ve onsuz, danışman düşünecek

// hesaplamanın sırası nedir

//mesafe - OP_BUY

if (sy=="" || sy=="0") sy=Symbol();

p=MarketInfo(sy, MODE_POINT);

if (p==0) if (StringFind(sy, "")<0) p=0.00001; başka p=0.01;

(i=0; i<k; i++) için

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if ((OrderSymbol()==sy) && (op<0 || OrderType()==op))

{

if (mn<0 || OrderMagicNumber()==dk)

{

if (OrderType()==OP_BUY)

{

d=MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;

if (r>d) r=NormalizeÇift(d, 0);

}

if (OrderType()==OP_SEL)

{

d=MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;

if (r>d) r=NormalizeÇift(d, 0);

}

}

}

}

}

dönüş(r);

dönüş(r);

}

}

//------------------------------------------------ -------------------------------------------------

TEŞEKKÜR EDERİM

 
qwanya :


Sevgili Igor Kim, bu çok iyi bir işlev, onu ileri geri çalıştırmaya çalışıyorum ve onunla ileri geri emirler açmaya çalışıyorum, bir hatam var, ondan kurtulamıyorum, düzeltmeme yardım et. aşağıdaki hata yorumu

TEŞEKKÜR EDERİM


Denemek:

Ve burada sorularla ...

 extern    int      TakeProfit = 150 ;
extern    double   Lot        = 0.01 ;
extern    int      MAGIC= 1234 ;
      
      
//=====================================================================
   int     start()
      {
     if (DistMarketAndPos( NULL ,OP_BUY)> 150 )
            {                                     
             OrderSend ( Symbol (),OP_BUY,Lot,Ask, 3 , 0 ,Ask+TakeProfit* Point );
            }
          
     if (DistMarketAndPos( NULL ,OP_SELL)> 150 )
            {                                     
         OrderSend ( Symbol (),OP_SELL,Lot,Ask, 3 , 0 ,Ask-TakeProfit* Point );   
            }            
       return ( 0 );
       }
          
//========================================================================          
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double d, p;
   int i, k= OrdersTotal (), r= 1000000 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
  p=MarketInfo(sy, MODE_POINT);
   if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy) && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
           if (OrderType()==OP_BUY) {
            d= MathAbs (MarketInfo(sy, MODE_ASK)-OrderOpenPrice())/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
           if (OrderType()==OP_SELL) {
            d= MathAbs (OrderOpenPrice()-MarketInfo(sy, MODE_BID))/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
        }
      }
    }
  }
   return (r);
}
 
Lütfen orijinal konuya yorum bırakın. Kaynağa açılan kapı (KimIV'in faydalı özellikleri) .
 
Lütfen orijinal konuya yorum bırakın. Kaynağa açılan kapı (KimIV'in faydalı özellikleri) .
 
satop :

MovingInWL() işlevi.

Çalışmayan işlevlerin neden gönderildiğini açıklayan var mı?

'LevelWLoss' - bildirilmemiş tanımlayıcı
'LevelProfit' - bildirilmemiş tanımlayıcı
'ModifyOrder' - işlev tanımlı değil
'LevelWLoss' - bildirilmemiş tanımlayıcı
'LevelProfit' - bildirilmemiş tanımlayıcı
'ModifyOrder' - işlev tanımlı değil
6 hata(lar), 0 uyarı(lar)

ve bu işlevin kendi içinde

 
DenisovOleg :

Çalışmayan işlevlerin neden gönderildiğini açıklayan var mı?

'LevelWLoss' - bildirilmemiş tanımlayıcı
'LevelProfit' - bildirilmemiş tanımlayıcı
'ModifyOrder' - işlev tanımlı değil
'LevelWLoss' - bildirilmemiş tanımlayıcı
'LevelProfit' - bildirilmemiş tanımlayıcı
'ModifyOrder' - işlev tanımlı değil
6 hata(lar), 0 uyarı(lar)

ve bu işlevin kendi içinde

İşlev çalışıyor, ancak danışman koduna eklenmesi gereken ModifyOrder işlevini çağırıyor ve LevelWLoss ve LevelProfit değişkenleri de danışmana eklenmelidir, bunun gibi bir şey

harici int LevelProfit = 1000;

harici int SeviyeWKayıp = 50;

 
Виктор
Iurii Tokman

Bu forum başlığı için çok teşekkür ederim. Özellikler için lurii Tokman'a çok teşekkürler. Şahsen, onu neredeyse Stroustrup ile eşitlemeye hazırım.
Teşekkür ederim!

 
Iurii Tokman :

GetAmountLotFromOpenPos() işlevi.

Bu işlev, birçok açık pozisyonun toplamını döndürür. Dikkate alınacak pozisyonların daha doğru seçimi harici parametreler tarafından belirlenir:

  • sy - Piyasa aracının adı. Bu parametreyi ayarlarsanız, işlev yalnızca belirtilen takımın konumlarını dikkate alacaktır. Varsayılan değer "" herhangi bir piyasa aracı anlamına gelir. NULL , geçerli enstrüman anlamına gelir.
  • op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY , OP_SELL veya -1 . Varsayılan değer -1 , herhangi bir konum anlamına gelir.
  • mn - Konum Kimliği, MagicNumber. Varsayılan değer -1 , herhangi bir tanımlayıcı anlamına gelir.

dönmüyor!!!

ne yaparsam yapayım, ya sıfırlar ya da "olay işleme işlevi bulunamadı 4.mq4 1 1
"

 
Aleksey Maryaskin :

Bu forum başlığı için çok teşekkür ederim. Özellikler için lurii Tokman'a çok teşekkürler. Şahsen, onu neredeyse Stroustrup ile eşitlemeye hazırım.
Teşekkür ederim!

Fonksiyon yazarına da teşekkür etmeyi unutmayın.
Neden: