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

 
Ihor Herasko :

Kenelerinizi yazın ve bunları strateji test cihazında değiştirin.

ve daha kullanıcı dostu bir şey?

 
Andrey Sokolov :

ve daha kullanıcı dostu bir şey?

Ama kendi başına yapmayacağını yazamaz mısın? sonra https://www.mql5.com/ru/job

işte makale https://www.mql5.com/ru/articles/4566

okuyun, dağıtım yasalarınıza göre alıntı yapın

MT4'ün kendi çizelgelerine ihtiyacı varsa, işaretler, makaleyi okuduktan sonra, teklifleri MT5'ten dışa aktarın ve MT4'e aktarın

daha kolay bir yol yok

MT4 altında programlayabiliyorsanız, MT4 teslimatından PeriodConverter betiğini metaetidore'da açın, kod anlaşılabilir ve hacim olarak oldukça kompakt, bununla başa çıkmak zor olmayacak, sonra kendi grafiğinizi oluşturun ve test edin

Not: Hatırladım, Weerstrass işlevi için grafikler oluşturmak için forumda bir komut dosyası yayınladım, MT4 altında yaptım

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

Merhaba. Fonksiyon Piyasaya yakın bir pozisyonun veya emrin varlığının bayrağını döndürür (forumda bulunan fonksiyon). Kodu test etmek için mevcut fiyatın 200 puan üstünde ve altında herhangi bir pozisyon yoksa pozisyon açmalıdır. Neden hemen hemen aynı fiyattan her tikte pozisyon açar?

 //+------------------------------------------------------------------+
//|                                                    testprpos.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//--- input parameters
input int       Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (!ExistOPNearMarket( Symbol (),- 1 , 200 ))
     {
       int ticket= OrderSend ( Symbol (), OP_BUY , 1 , Ask , 300 , 0 , 0 , "_" , 16384 , 0 , clrGreen );
       if (ticket< 0 )
        {
         Print ( "OrderSend завершилась с ошибкой #" , GetLastError ());
        }
       else
         Print ( "Функция OrderSend успешно выполнена" );
       //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket( 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 );
   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 )) 
        {
         ot= OrderType ();
         if (( OrderSymbol ()==sy) && (op< 0 || ot==op)) 
           {
             if (mn< 0 || OrderMagicNumber ()==mn) 
              {
               if (ot== OP_BUY || ot== OP_BUYLIMIT || ot== OP_BUYSTOP ) 
                 {
                   if ( MathAbs ( MarketInfo (sy, MODE_ASK )- OrderOpenPrice ())<ds*p) return ( True );
                 }
               if (ot== OP_SELL || ot== OP_SELLLIMIT || ot== OP_SELLSTOP ) 
                 {
                   if ( MathAbs ( OrderOpenPrice ()- MarketInfo (sy, MODE_BID ))<ds*p) return ( True );
                 }
              }
           }
        }
     }
   return ( False );
  }
//+------------------------------------------------------------------+
 
Beyler, danışmanların göçü ile ilgili sorun. butonlar inaktif oldu, geçiş yapamıyorum, denk gelen var mı?
 
Aleksei Petrenko :
Beyler, danışmanların göçü ile ilgili sorun. butonlar inaktif oldu, geçiş yapamıyorum, denk gelen var mı?
 
Aleksei Petrenko :


 
Ghabo :

Merhaba. Fonksiyon Piyasaya yakın bir pozisyonun veya emrin varlığının bayrağını döndürür (forumda bulunan fonksiyon). Kodu test etmek için mevcut fiyatın 200 puan üstünde ve altında herhangi bir pozisyon yoksa pozisyon açmalıdır. Neden hemen hemen aynı fiyattan her tikte pozisyon açar?

Çağrıdaki parametre sayısını kontrol edin

ExistOPNearMarket( Symbol (),- 1 , 200 )

ve açıklaması

 
Galim_V :

Çağrıdaki parametre sayısını kontrol edin

ve açıklaması

Teşekkür ederim.
 
Python'da ikili dosyalar için bir bot var, soru şu: Koltuk değneği olmadan robottan terminalden nasıl sinyal gönderebilir?
 

Bir işlem için marjın nasıl hesaplanacağını söyleyebilir misiniz?


İki yaklaşım denedi

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


Ve bunun gibi

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



Birincisi, mevduat para birimi USD ise EURJPY'de garip sonuçlar verir. Formüle bir şey eklemeniz mi gerekiyor?

İkincisi de her seferinde çalışır, sonra doğru değerleri verir, sonra biraz saçmalık (depozitoya bağlıdır)