[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 287

 
Peki, doğru kodu görebilir miyim?
 
sergeev :
ilk satın alma olmayan siparişte, hesabı satın alma siparişleriyle dolduracaksınız.


Teşekkür ederim! Başka bir hata buldum!

 //+------------------------------------------------------------------+
//|                                                      OnlyBuy.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

extern double lots= 0.1 ;
extern int SlipPage= 3 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if ( OrdersTotal ()== 0 )
   OrderSend ( Symbol (),OP_BUY,lots, NormalizeDouble (Ask, Digits ),SlipPage, 0 , 0 , NULL , 0 , 0 , Red );
   for ( int j = 0 ; j < OrdersTotal (); j++)
   {
     OrderSelect (j, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol () == Symbol ())
     {
       if ( OrderType () != OP_BUY)
       OrderSend ( Symbol (),OP_BUY,lots, NormalizeDouble (Ask, Digits ),SlipPage, 0 , 0 , NULL , 0 , 0 , Red );
     }
   }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
 
icas :


Teşekkür ederim! Başka bir hata buldum!


evet.

ama önceki düzeltilmedi.

bir siparişin açılışını doğrudan döngüye ekleyemezsiniz. Önce siparişler arasında tam bir döngü yapmalı ve bir Bai olup olmadığını tam olarak öğrenmelisiniz.

Ve ancak bundan sonra Bai'yi bu döngüden sonra koyun.

 
sergeev :

evet.

ama önceki düzeltilmedi.

bir emrin açılışını doğrudan döngüye ekleyemezsiniz. Önce siparişler arasında tam bir döngü yapmalı ve tam olarak bir Satın Al olup olmadığını öğrenmelisiniz.

Ve ancak bundan sonra, henüz orada değilse, Bai'yi koyun.



Bu doğru, değişiklik yapmadan post programımdan bir parça aldım. Şimdi yapacağım - 5 dakika ...
 
Ama bu kod yanlış! Sadece başka bir fin için başka emir yoksa bir satın alma emri açacaktır. enstrüman ve başka varsa, bir satın alma açmayacaktır.
 
icas :

Bu doğru, değişiklik yapmadan post programımdan bir parça aldım. Şimdi yapacağım - 5 dakika ...
 //+------------------------------------------------------------------+
//|                                                      OnlyBuy.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

extern double lots= 0.1 ;
extern int SlipPage= 3 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   for ( int j = 0 ; j < OrdersTotal (); j++)
   {
     OrderSelect (j, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol () == Symbol ())
     {
       if ( OrderType () == OP_BUY) return ( 0 );
     }
   }
   OrderSend ( Symbol (),OP_BUY,lots, NormalizeDouble (Ask, Digits ),SlipPage, 0 , 0 , NULL , 0 , 0 , Red );
   Sleep ( 10000 ); //Пауза 10 сек. для исполнениея ордера
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
Şimdi değil mi?
 
icas :
Şimdi değil mi?
 Sleep ( 10000 ); //Пауза 10 сек. для исполнениея ордера

Bu duraklama neden gerekli?
 
kolyango :

Bu duraklama neden gerekli?

Emir hemen yerine getirilmez. Bir sonraki tıklamada bir duraklama olmadan, sipariş henüz açılmayabilir ve program tekrar aç komutunu gönderir. MT5'te, test cihazına yürütme gecikmelerini zaten girebilirsiniz.
 
icas :
Şimdi değil mi?

Konumların varlığını/yokluğunu aramayı ayrı bir fonksiyon haline getirmeyi denediniz mi?

Örneğin:

 bool ExistPositions( int mn, string sy= "" , int op=- 1 ) {
   if (sy== "" ) sy= Symbol ();
   for ( int i= 0 ; i< OrdersTotal (); i++) {
       if ( OrderSelect (i, SELECT_BY_POS)) {
         if ( OrderMagicNumber ()!=mn)   continue ;
         if ( OrderSymbol ()!=sy)         continue ;
         if ( OrderType ()> 1 )             continue ;
         if (op< 0 || OrderType ()==op)  
             return (True);
         }
      }
   return (False);
}

Magic - danışmanın sihirli numarası (ayarlarda ayarlanır veya danışman tarafından otomatik olarak oluşturulur). Ardından, mevcut sembol için bir Bai pozisyonunun olmadığını kontrol etmek için şunu yazmanız gerekir:

 if (!ExistPositions(Magic, Symbol (), OP_BUY)) {
   // ... Тут код для вызова функции открытия позиций ... 
   }

Not - sadece bir Satınalma siparişi açma komutu değil, aynı zamanda bir sipariş açmak için tüm parametreleri ve sunucu tarafından döndürülen hataları işleyen tam teşekküllü bir işlev.

Ancak, test cihazı için geçerli değerler için giriş parametrelerini kontrol ederek alabilirsiniz...

 
artmedia70 :

Konumların varlığını/yokluğunu aramayı ayrı bir fonksiyon haline getirmeyi denediniz mi?

Örneğin:

Ardından, mevcut sembol için bir Bai pozisyonunun olmadığını kontrol etmek için şunu yazmanız gerekir:

Not - sadece bir Satınalma siparişi açma komutu değil, aynı zamanda bir sipariş açmak için tüm parametreleri ve sunucu tarafından döndürülen hataları işleyen tam teşekküllü bir işlev.

Ancak, test cihazı için geçerli değerler için giriş parametrelerini kontrol ederek alabilirsiniz...



İlk gönderiye fonksiyon verdim, kolyango beğenmedi. Ayrıca, sihirbazlarla çalışmayı sevmiyorum.