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

 

MQL5'te bekleyen siparişler nasıl kontrol edilir?


Sorun şu ki, ihtiyacım olan fonksiyonlarda şöyle yazıyorlar: "Pozisyonları ve aktif bekleyen emirleri birbiriyle karıştırmamalısınız"


Peki bu bekleyen siparişler hakkında nasıl bilgi edinilir?

 
Alexandr Sokolov :

MQL5'te bekleyen siparişler nasıl kontrol edilir?


Sorun şu ki, ihtiyacım olan fonksiyonlarda şöyle yazıyorlar: "Pozisyonları ve aktif bekleyen emirleri birbiriyle karıştırmamalısınız"


Peki bu bekleyen siparişler hakkında bilgi nasıl alınır?

Sadece bekleyen siparişleri saymanız gerekiyor. Örneğin, bu işlev yalnızca bekleyen Durdurma emirleri içindir:

 //+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders( int &count_buy_stops, int &count_sell_stops)
  {
   count_buy_stops   = 0 ;
   count_sell_stops  = 0 ;

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // returns the number of current orders
       if (m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if (m_order. Symbol ()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
             if (m_order.OrderType()== ORDER_TYPE_BUY_STOP )
               count_buy_stops++;
             else
               if (m_order.OrderType()== ORDER_TYPE_SELL_STOP )
                  count_sell_stops++;
           }
  }
 
Vladimir Karputov :

Sadece bekleyen siparişleri saymanız gerekiyor. Örneğin, bu işlev yalnızca bekleyen Durdurma emirleri içindir:

Çok teşekkürler!


Sadece bir örneğe baktım ve orada her şey Pozisyondan geçiyor ...

 
Alexandr Sokolov :

Çok teşekkürler!


Sadece bir örneğe baktım ve orada her şey Pozisyondan geçiyor ...

İşte derleyen bir örnek:

 //+------------------------------------------------------------------+
//|                                    CalculateAllPendingOrders.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
#property script_show_inputs
//---
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
COrderInfo     m_order;                       // object of COrderInfo class
//--- input parameters
input ulong     InpMagic             = 200 ;         // Magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   if (!m_symbol.Name( Symbol ())) // sets symbol name
     {
       Print ( __FILE__ , " " , __FUNCTION__ , ", ERROR: CSymbolInfo.Name" );
       return ;
     }
//---
   int count_buy_stops= 0 ,count_sell_stops= 0 ;
   CalculateAllPendingOrders(count_buy_stops,count_sell_stops);
  }
//+------------------------------------------------------------------+
//| Calculate all pending orders                                     |
//+------------------------------------------------------------------+
void CalculateAllPendingOrders( int &count_buy_stops, int &count_sell_stops)
  {
   count_buy_stops   = 0 ;
   count_sell_stops  = 0 ;

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // returns the number of current orders
       if (m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties
         if (m_order. Symbol ()==m_symbol.Name() && m_order.Magic()==InpMagic)
           {
             if (m_order.OrderType()== ORDER_TYPE_BUY_STOP )
               count_buy_stops++;
             else
               if (m_order.OrderType()== ORDER_TYPE_SELL_STOP )
                  count_sell_stops++;
           }
  }
//+------------------------------------------------------------------+
 
Alexandr Sokolov :

MQL5'te bekleyen siparişler nasıl kontrol edilir?


Sorun şu ki, ihtiyacım olan fonksiyonlarda şöyle yazıyorlar: "Pozisyonları ve aktif bekleyen emirleri birbiriyle karıştırmamalısınız"


Peki bu bekleyen siparişler hakkında nasıl bilgi edinilir?

Tek fark, mql4'te OrdersTotal() fonksiyonunun toplam piyasa ve bekleyen emir sayısını döndürmesidir. Ve mql5'te yalnızca bekleyen siparişlerin sayısını döndürür. Ve pozisyon sayısını elde etmek için, mql4 piyasa emirlerinin terminolojisinde, PositionsTotal() işlevi vardır.

 
Alexey Viktorov :

Konuyu forumda görmedim ama birkaç talimata baktıktan sonra bunun daha anlaşılır olduğunu düşünüyorum. Denedim, işe yaradı ama henüz uygulamaya gerek görmüyorum. Tüm terminallerden geçmişi tek bir klasörde birleştirmenin güzel olacağını düşünmeme rağmen.

Linkteki yazıyı okudum. Bu dahice. Ve bu, çok sayıda terminali olanlar için süper bir çözüm. Artık, dosyaları sürekli olarak ileri geri kopyalamaya gerek kalmadan farklı terminaller için bir mql4 klasörü olabilir.

çok teşekkürler!!!

 
Sergey Likho :

Linkteki yazıyı okudum. Bu dahice. Ve bu, çok sayıda terminali olanlar için süper bir çözüm. Artık, dosyaları sürekli olarak ileri geri kopyalamaya gerek kalmadan farklı terminaller için bir mql4 klasörü olabilir.

çok teşekkürler!!!

Bana teşekkür etme. Sergey Tabolin'in mesajlarına dikkat ettim ve içindeki bazı kelimeleri Seric29'un arzusuyla karşılaştırdım, ne olduğuna kendim baktım.

 

Merhaba.

Lütfen kodu çözmeme yardım et.

Izgarayı piyasaya sürmeye çalıştım ve bana küfretmeye başladılar: 2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: FreeMarginCheck işlevi için geçersiz lot miktarı

Expert Advisor dosyası ektedir.

Şimdiden teşekkürler.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Предопределенные макроподстановки
  • www.mql5.com
//| Expert initialization function                                   | //| Expert deinitialization function                                 | //| Expert tick function                                             | //| test1                                                            |...
Dosyalar:
123.mq4  87 kb
 
Dmitriy Prigodich :

Merhaba.

Lütfen kodu çözmeme yardım et.

Izgarayı piyasaya sürmeye çalıştım ve bana küfretmeye başladılar: 2016.04.01 00:02:00 1111111113241135454356146 EURUSD,H1: FreeMarginCheck işlevi için geçersiz lot miktarı

Expert Advisor dosyası ektedir.

Şimdiden teşekkürler.

ayrıca diyor ki: geçersiz lot miktarı

EA'nın argümanları kontrol edilmez ve partinin hacmi normalleştirilmez.

Not - peki, piyasaya her şeyi üst üste koymayın, daha çok kendiniz kullanmadığınız bir şey. Derecelendirmeye ihtiyacınız var, daha iyi kodobazı doldurun

 

Genelde adamlar bir deney yaptılar, video çekmek istedim ama kameram yok ve hala bezelye kralının altında olan eski bir telefonum var. Ben de bir uzman yarattım, adını 111.mq4 koydum

işte onun ilkel kodu

 #property strict
#import "111б.ex4" //111б.mq4
int Funi( string Soob);
#import

int OnInit (){Funi( Symbol ()); return ( INIT_SUCCEEDED );}
void OnDeinit ( const int reason){}
void OnTick (){Funi( Symbol ());}


, sonra bir kitaplık oluşturdum, onu ilkel bir kodla 111b.mq4 olarak adlandırdım

 #property library
#property strict
 string   st_mas[]; //export
 int Funi( string Soob) export
 {st_mas[( ArrayResize (st_mas, ArrayRange (st_mas, 0 )+ 1 ))- 1 ]=Soob;
 Print ( "Размер массива = " , ArrayRange (st_mas, 0 ));
 for ( int i=0;i< ArrayRange (st_mas, 0 );++i)
 Print ( "Вывод массива " ,st_mas[i]);
 return 2 ;}

. Kitaplığın içinde bir dizi tipi dize ilan ettim, ancak daha sonra ortaya çıktığı gibi, geliştiriciler dizileri ve değişkenleri dışa ve içe aktarma olanağı sağlamadı. Bilgileri hatırlayacak küresel bir dizi elde etmenin bir yolu olmadığı ortaya çıktı. Peki, tamam, diğer tarafa gittim. Bir Funi() işlevi yarattım. Sonra H tuşunu kullanarak sabit bağlantılar oluşturdum, terminallerim bu şekilde kuruluyor

Forex4you'daki orijinal dosyalara ve Forex4you1'deki bağlantılara sahibim, sonra robotları orijinal ve grafiğe bir bağlantı ile bıraktım, ilk hesaplamalar alındı, ancak keneler başladığında, yalnızca orijinal Forex4you bilgileri ve st_mas'ı güncelledi dizinin boyutu arttı ve Forex4you1'de işaretler olduğunda hiçbir şey olmadı etkileşimi yalnızca dosya grafiğe manuel olarak girdiğinde mümkündür. Sonra diğer tarafa gittim. 333.mq4 ismiyle Expert Advisor yaptım ve MT4 Forex4you1 içerisine kurdum 111b.mq4 kütüphanesini içine bağladım ve programı çizelgeye attım. Robot 333.mq4, kütüphaneye olan bağlantıya bağlanabildi ve bu iş çevrimiçi çalışmaya başladı, ancak daha sonra ortaya çıktığı gibi, kütüphane bir prototip ve içinde küresel düzeyde bildirilen dizi aynı grafik içinde çalışıyor

Örnek, robotun global bir dizi ile bir kütüphaneye bağlı olmasına rağmen, bu dizinin prototip olarak çalışmasına ve yine de etkileşimi sağlamak mümkün olmayacak, her taraftan kullanılabilecek ortak değişkenler oluşturmanız gerektiğini gösteriyor. . Dizileri ve değişkenleri dışa aktarmanın mümkün olup olmadığını kim bilebilir? Bir dosyaya bilgi yazarak bu sorunu çözmenin başka bir yolu olduğunu düşünüyorum çünkü. dosya bir prototip olmayacak ve her iki taraftan da okunacak ve böylece terminaller ve robotlar birbirleriyle etkileşime girebilecek. Dosyalarla nasıl çalışılacağını kim bilebilir, bu teoriyi kontrol edin. Henüz o deneyimim yok.

Dizileri ve değişkenleri dışa aktarmanın mümkün olup olmadığını bilen adamlar?