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

 
Ivan Butko :

Hangi koşulu ekleyeceğinizi veya nasıl uygulayacağınızı biliyorsanız (kolaysa) lütfen paylaşın.

Yapabilirim, ancak nasıl çalıştığını kontrol etmek ilginç değil, bu yüzden eskiz yaptım

 void OnTick ()
{   static int ticket = - 1 ;
   while (! IsStopped () &&ticket< 0 )
   {   if ( TerminalInfoInteger ( TERMINAL_CONNECTED ) && TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && !IsTradeContextBusy())
      {  
         RefreshRates();
         ticket = OrderSend ( "EURUSD" , OP_SELL, 0.01 , Bid, 3 , 0 , 0 , "" , 0 , 0 , clrRed );
         if (ticket > 0 ) break ; 
      }
   Sleep ( 123 ); 
   }
}
 
Igor Makanu :

Yapabilirim, ancak nasıl çalıştığını kontrol etmek ilginç değil, bu yüzden eskiz yaptım

Igor, teşekkürler. Ve kontrol etmeye gerek yok, tabii ki kendim.

Ve bir kene beklemeden, bir şekilde mümkün mü?

Böylece "push" tuşuna basıldığında açma talebi hemen gider.

Bu, hızlı bir şekilde anlaşmaları açmak için "al/sat" terminalinde düğmenin standart olmasıdır (tablonun sol üst kısmı). Basıyorsunuz ve selka anında açılıyor. Tek gereken, bir onay beklemeden bir işlem yerine bir emir sepetinin açılmasıdır.

İki uygulama ortaya çıkıyor (gördüğüm gibi):
1) Tabloda sepeti açan bir buton (benzeri),
2) ya bir danışman. Expert Advisor benim için daha uygun görünüyor çünkü açılış talebini (sorun varsa) benden daha hızlı tekrarlayabiliyor.



UPD

Kodunuz çalışıyor, yeni bir onay işaretiyle açılıyor, harika, teşekkürler)


UPD

Ayrıca şunu da hatırladım: fotokopi makinelerinde "ms" parametresi var, kontrol süresini buradan ayarlayabilirsiniz. Ve eğer master'ın açık bir anlaşması varsa, o zaman neredeyse 1 ms'den itibaren slave bir anlaşma açmak için bir talep gönderebilir. Yani, anında açılma mümkündür

 
Igor Makanu :

Yapabilirim, ancak nasıl çalıştığını kontrol etmek ilginç değil, bu yüzden eskiz yaptım

Igor, lütfen gözle kontrol edin, bu yeni bir onay beklemeden anında bir açılış mı?

int OnInit()

{

//---

statik int bilet = -1;

while(!IsStopped() &&ticket<0)

{ if( TerminalInfoInteger (TERMINAL_CONNECTED) && TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && !IsTradeContextBusy())

{

Yeniler();

bilet = OrderSend("EURUSD", OP_SELL, 0.01, Bid, 3, 0, 0, "", 0, 0, clrRed);

if(bilet > 0) ara;

}

Uyku(1);

}

//---

dönüş(INIT_SUCCESSED);

}

------------------

Ve amaçlandığı gibi çalışıyor gibi görünüyor ...
 
Ivan Butko :



Ve amaçlandığı gibi çalışıyor gibi görünüyor ...

en iyi seçenek değil .... o zaman en azından böyle yaz

 #property strict
int ticket = - 1 ;
int OnInit ()
{   if (ticket < 0 ) SendMyOrder();
   return ( INIT_SUCCEEDED ); 
}
//+------------------------------------------------------------------+
void OnTick ()
{
   if (ticket < 0 ) SendMyOrder();
}
//+------------------------------------------------------------------+
void SendMyOrder()
{   while (! IsStopped () && ticket < 0 )
   {   if ( TerminalInfoInteger ( TERMINAL_CONNECTED ) && TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && !IsTradeContextBusy())
      {  RefreshRates();
         ticket = OrderSend ( "EURUSD" , OP_SELL, 0.01 , Bid, 3 , 0 , 0 , "" , 0 , 0 , clrRed );
         if (ticket > 0 ) break ; 
      }
       Sleep ( 123 ); 
   } 
}
//+------------------------------------------------------------------+

ancak ilk seçenek, grafiğe koyarsanız ve görevde olmanın gerekli olduğunu düşündüğünüzde otomatik ticaret düğmesine basarsanız net bir şekilde çalışmalıdır.

Not: Bir sipariş verdikten sonra danışmanı silmek için terminalin askıda kalmaması için şöyle yazın:

 void OnTick ()
{
   if (ticket < 0 ) SendMyOrder();
   if (ticket > 0 ) ExpertRemove ();
}
 
Igor Makanu :

en iyi seçenek değil .... o zaman en azından böyle yaz

ancak ilk seçenek, grafiğe koyarsanız ve görevde olmanın gerekli olduğunu düşündüğünüzde otomatik ticaret düğmesine basarsanız net bir şekilde çalışmalıdır.

Not: Bir sipariş verdikten sonra danışmanı silmek için terminalin askıda kalmaması için şöyle yazın:

çok teşekkürler
 

İyi! Varyant testi devam ediyor. Vladimir ve Igor'un varyantı oldukça hızlı çıktı. Pratikte, hızlı satın alma düğmesine basmanın, bir danışmandan daha hızlı fırsatları açtığı ortaya çıktı. Her iki seçeneğin de artıları ve eksileri vardır. Bir danışmanda hangi çiftlerin açılacağını sırayla belirtirseniz, sırayla ve çok yavaş bir şekilde açılırlar ... ve her grafiğe 7 danışman koyarsanız (daha boş gibi görünüyor), o zaman ilginçtir. tam tersi - tüm işlemler anında, dönüşümlü OLMAYAN, siparişler arasında gecikme olmaksızın açılır (ancak, başlangıçta hala yarım saniyelik bir boşluk vardır.)

Grafikteki düğmeyi denemek istiyorum, bir kılavuz buldum, ancak içinde yalnızca koordinatlar vb. Söyle bana, lütfen, bir anlaşma açma kodunu kaydetmek için "düğme" nesnesinin komut dosyasında nerede? Grafikte üzerine tıklayın ve anlaşma açıldı. Standart MT hızlı al/sat düğmesinde olduğu gibi.

Veya bir sipariş sepeti açmak için Ticaret Paneli nasıl yükseltilir?

 
Lütfen bu konuda yardım edin
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2019.10.14
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Ivan Butko :

Grafikteki düğmeyi denemek istiyorum, kılavuzu buldum,

Kılavuzu aramadım ama bir düğme çizdim)))

 #property copyright "IgorM"
#property link        "https://www.mql5.com/ru/users/igorm"
#property version    "1.00"
#property strict
input string    sym1 = "EURUSD" ;
input string    sym2 = "GBPUSD" ;
input string    sym3 = "USDCAD" ;
input string    sym4 = "USDJPY" ;
input string    sym5 = "AUDUSD" ;
#include <Controls\Button.mqh>
CButton ButtonSend;

string sym[ 5 ];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   sym[ 0 ] = sym1;
   sym[ 1 ] = sym2;
   sym[ 2 ] = sym3;
   sym[ 3 ] = sym4;
   sym[ 4 ] = sym5;
   ButtonSend.Create( 0 , "ButtonSend" + _Symbol , 0 , 10 , 50 , 100 , 90 );
   ButtonSend.Color( clrRed );
   ButtonSend.Text( "Kill Forex!" );
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static int ticket[ 5 ] = {- 1 , - 1 , - 1 , - 1 , - 1 };
   if (ticket[ 0 ] > 0 && ticket[ 1 ] > 0 && ticket[ 2 ] > 0 && ticket[ 3 ] > 0 && ticket[ 4 ] > 0 ) return ;
   if (ButtonSend.Pressed())
     {
      ButtonSend.Pressed( false );
       Print ( "Start OrderSend()" );
       while (! IsStopped ())
        {
         if ( TerminalInfoInteger ( TERMINAL_CONNECTED ) && TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED ) && !IsTradeContextBusy())
           {
            RefreshRates();
             for ( int i = 0 ; i < 5 ; i++)
              {
               if (sym[i] == "" ) ticket[i] = INT_MAX ;
               if (ticket[i] > 0 ) continue ;
               ticket[i] = OrderSend (sym[i], OP_SELL, 0.01 , SymbolInfoDouble (sym[i], SYMBOL_BID ), 3 , 0 , 0 , "" , 0 , 0 , clrRed );
              }
           }
         if (ticket[ 0 ] > 0 && ticket[ 1 ] > 0 && ticket[ 2 ] > 0 && ticket[ 3 ] > 0 && ticket[ 4 ] > 0 )   break ;
         Sleep ( 123 );
        }
     }
  }
//+------------------------------------------------------------------+

sembol ayarlarında "" varsa o zaman bu sembol için 0,01 lot açmıyoruz, lotu ben belirlemedim çünkü nasıl öğreteceğimle ilgili bir konu gibi, kim yapacak diye bakmayın deneyin gerekirse kendin vidala;)

 
Igor Makanu :

Kılavuzu aramadım ama bir düğme çizdim)))

sembol ayarlarında "" varsa o zaman bu sembol için 0,01 lot açmıyoruz, lotu ben belirlemedim çünkü nasıl öğreteceğimle ilgili bir konu gibi, kim yapacak diye bakmayın deneyin gerekirse kendin vidala;)

Çok teşekkür ederim İgor! İstemi ve noktaya

yapmaya çalışacağım

 
Igor Makanu :

Bir Expert Advisor'da, belirtilen her bir döviz çifti için birer birer bir zaman aralığı ile anlaşmaları açması garip. Ve farklı bir döviz çiftiyle (sembol (0)) 5 farklı tabloya bahis yaptığınızda, otomatik alım satıma tıklandığında 5 işlemin tümü aynı anda ve anında açılır.

Bana ne olabileceğini ve nasıl düzeltileceğini söyleyebilir misiniz? Böylece her şey tek bir danışmanda ve bir grafikte (böylece grafikteki düğme , orijinal versiyonda olduğu gibi birkaç danışmanla "otomatik ticaret" i etkinleştirirken olduğu kadar hızlı bir şekilde tüm çiftleri açar)