Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 214

 
Aleksandr Martynov :

Oops, sanırım buldum:

Belgelere göre:

İşlev kullanılarak özel bir gösterge çağrılırsa   iCustom() , ardından bu gösterge, onu çağıran programın iş parçacığında çalışır. Kitaplık (içe aktarılan) işlevleri de çağıran programın iş parçacığında çalışır.

Toplamda, MQL4 için hesaplamaları nereye yaptığınızın bir önemi yoktur, çünkü kaynaklar programın tek bir iş parçacığına ve onun kullandığı göstergelere tahsis edilecektir.

Bu durumda, mümkünse, gösterge kodunun bir Uzman Danışmana aktarılması ve dizinin derinliğine ve "tampon" sayısına göre hesaplanan değerlerin sayısının optimize edilmesi önerilir, ancak bu durum aşağıdakiler için geçerli değildir. özyinelemeli algoritmalar - programdaki otomatik olarak endekslenen arabellekler yalnızca fiyat verileri için olduğundan, göstergede hesaplamaları hala daha kolaydır...

soru, kodu okumanın ve düzenlemenin rahatlığıdır ve bu nedenle MT4 tek bir pencerede tek iş parçacıklıdır. Hindinin hesaplanan kısmını danışmana götürmek benim için daha kolay. Ama her zaman iyi değil. Kod uzun. ve içerme veya aikyust aynıdır. Hızlanırsanız MT5. MT4, forum katılımcılarından gelen geri bildirimlere göre hız kaybediyor.

 
Valeriy Yastremskiy :

soru, kodu okumanın ve düzenlemenin rahatlığıdır ve bu nedenle MT4 tek bir pencerede tek iş parçacıklıdır. Hindinin hesaplanan kısmını danışmana götürmek benim için daha kolay. Ama her zaman iyi değil. Kod uzun. ve içerme veya aikyust aynıdır. Hızlanırsanız MT5. MT4, forum katılımcılarının geri bildirimlerine göre hız kaybediyor.

Bir EA'da hesaplanan arabelleklerin yönetimi bir göstergeden daha pahalı olacaktır... ortalama alma, zikzak gibi çok basit formüller ve hatta hiç değil. 5 kesinlikle iyidir, ancak şu ana kadar herkes bunu sağlamaz ve ustalaşmanız gerekir.

 
Aleksandr Martynov :

Bir EA'da hesaplanan arabelleklerin yönetimi bir göstergeden daha pahalı olacaktır... ortalama alma, zikzak gibi çok basit formüller ve hatta hiç değil. 5 kesinlikle iyidir, ancak şu ana kadar herkes bunu sağlamaz ve ustalaşmanız gerekir.

bu konuda, sadece gösterge mantığının istenen derinliğe kadar çubuklarla hesaplanması, göstergenin ikyustundan daha ucuz olacaktır. ancak bunun için her zaman kolay olmayan gösterge mantığının kodunu almanız gerekir.

 
Bir geliştiriciye isteği üzerine uzman ve terminal günlükleri vermek ne kadar güvenli?Hesabım veya bilgisayarımla bir şeyler yapabilecek mi?

 
Alexander Kovalev :
Bir geliştiriciye isteği üzerine uzman ve terminal günlükleri vermek ne kadar güvenli?Hesabım veya bilgisayarımla bir şeyler yapabilecek mi?

Evet, ayrıca kutudaki tüm altın takıları evden çıkarın.

 

Arkadaşlar lütfen nerede hata yaptığımı söyleyin (lütfen çok fazla öldürmeyin, MQL4'ü 3. gün anlıyorum).


Daha önce kaydedilen değerden (bir önceki emri açarken aldığım) Delta puan ofseti (60) ile piyasadan bir SAT emri açmaya çalışıyorum.

Ancak komut dosyası, uygun bir koşul beklemeden (60 puanlık fiyat düşüşü) mevcut fiyattan bir öncekiyle hemen yeni bir sipariş açar. Bir yerlerde hata yaptığımı anlıyorum ama tam olarak nerede yetişemiyorum.

Çok minnettar olacağım!


Garip keşif

 

anlamama yardım et!!!

Nerede olduğumu anlayamıyorum. EA, ciltlerin bir EMA'sını gerektirir. iMAonArray kullanıldı.

Ancak hesaplama gerçeğine benzemiyor.

İşte kod:

***

Dosyalar:
 
Aleksandr Martynov :
Güzel soru, bir arabam var ve içinde bir şey tıkırdıyor, hangi cıvatayı sıkmalıyım? Kaç ipucunun mümkün olduğunu hayal edebiliyor musunuz, ama sonunda hepsi işe yaramaz çünkü somunu sıkmanız gerekiyor ...
Stüdyoda sadece kod var, başka bir şey yok

Bakın altın neden açılmıyor??

***

Документация по MQL5: Дата и время / TimeCurrent
Документация по MQL5: Дата и время / TimeCurrent
  • www.mql5.com
Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это –...
 
Наджибулло Хабибов :

Bakın altın neden açılmıyor??

***

kodu yapıştır   sağ: düğmeyi kullan   kod veya başka bir seçenek: düğmeyi kullanarak bir dosya ekleyin Dosya eki
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Теперь вы можете не только читать статьи и скачивать программы на языке MQL5, но и участвовать в обсуждении интересующих вас тем на Форуме, оставлять комментарии к статьям и опубликованным кодам. Кроме того, вы можете не только выкладывать собственные разработки в Code Base, но и публиковать Статьи, за которые мы предлагаем вознаграждение...
 
Наджибулло Хабибов :

Bakın altın neden açılmıyor??

***

 //--- Inputs
extern double Lots       = 0.1 ;       // лот
extern double KLot       = 1 ;         // умножение лота
extern double MaxLot     = 5 ;         // максимальный лот
extern double Profit     = 0 ;         // Профит в валюте
extern int StopLoss      = 0 ;         // Стоп Лось
extern int TakeProfit    = 0 ;         // ТейкПрофит
extern int BULevel       = 0 ;         // уровень БУ
extern int BUPoint       = 30 ;       // пункты БУ
extern int TrailingStop  = 0 ;         // трал
extern int StartHour     = 0 ;         // час начала торговли
extern int StartMin      = 30 ;       // минута начала торговли
extern int EndHour       = 23 ;       // час окончания торговли
extern int EndMin        = 30 ;       // минута окончания торговли
extern int Reverse       = 0 ;         // 1-реверс
extern int CloseSig      = 0 ;         // 1-закрытие по сигналу
extern int Slip          = 30 ;       // реквот
extern int Shift         = 1 ;         // на каком баре сигнал индикатора
extern int Magic         = 123 ;       // магик

extern string IndName    = "Aroow" ;
extern int SignalPeriod  = 9 ;

datetime t= 0 ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   Comment ( "" );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   Comment ( "" );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession( int aStartHour, int aStartMinute, int aStopHour, int aStopMinute, datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime= 3600 *aStartHour+ 60 *aStartMinute;
//--- время окончания сессии
   int StopTime= 3600 *aStopHour+ 60 *aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur% 86400 ;
   if (StopTime<StartTime)
     {
       //--- переход через полночь
       if (aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return ( true );
        }
     }
   else
     {
       //--- внутри одного дня
       if (aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return ( true );
        }
     }
   return ( false );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder( int type, double price)
  {
   int r= 0 ;
   color clr=Green;
   double sl= 0 ,tp= 0 ;

   if (type== 1 || type== 3 || type== 5 )
     {
      clr=Red;
       if (StopLoss> 0 )
         sl= NormalizeDouble (price+StopLoss* _Point , _Digits );
       if (TakeProfit> 0 )
         tp= NormalizeDouble (price-TakeProfit* _Point , _Digits );
     }

   if (type== 0 || type== 2 || type== 4 )
     {
      clr=Blue;
       if (StopLoss> 0 )
         sl= NormalizeDouble (price-StopLoss* _Point , _Digits );
       if (TakeProfit> 0 )
         tp= NormalizeDouble (price+TakeProfit* _Point , _Digits );
     }

   r= OrderSend ( NULL ,type,Lot(), NormalizeDouble (price, _Digits ),Slip,sl,tp, "" ,Magic, 0 ,clr);
   return ;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()< 2 )
               count++;
           }
        }
     }
   return (count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   
   if (CountTrades()> 0 )
     {
      lot= NormalizeDouble (lot* MathPow (KLot,CountTrades()), 2 );
     }
   if (lot>MaxLot)
      lot=Lots;
   return (lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY)
              {
               if (Bid-OrderOpenPrice()>TrailingStop* _Point )
                 {
                   if (OrderStopLoss()<Bid-TrailingStop* _Point )
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop* _Point ,OrderTakeProfit(), 0 ,Yellow);
                     return ;
                    }
                 }
              }

             if (OrderType()==OP_SELL)
              {
               if ((OrderOpenPrice()-Ask)>TrailingStop* _Point )
                 {
                   if ((OrderStopLoss()>(Ask+TrailingStop* _Point )) || (OrderStopLoss()== 0 ))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop* _Point ,OrderTakeProfit(), 0 ,Yellow);
                     return ;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()==OP_BUY)
              {
               if (OrderOpenPrice()<=(Bid-(BULevel+BUPoint)* _Point ) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint* _Point ,OrderTakeProfit(), 0 ,Yellow);
                   return ;
                 }
              }

             if (OrderType()==OP_SELL)
              {
               if (OrderOpenPrice()>=(Ask+(BULevel+BUPoint)* _Point ) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()== 0 ))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint* _Point ,OrderTakeProfit(), 0 ,Yellow);
                   return ;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll( int ot=- 1 )
  {
   bool cl;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()== 0 && (ot== 0 || ot==- 1 ))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Bid, _Digits ),Slip,White);
              }
             if (OrderType()== 1 && (ot== 1 || ot==- 1 ))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(), NormalizeDouble (Ask, _Digits ),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit( int ot=- 1 )
  {
   double pr= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic)
           {
             if (OrderType()== 0 && (ot== 0 || ot==- 1 ))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

             if (OrderType()== 1 && (ot== 1 || ot==- 1 ))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return (pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   double blu = iCustom ( NULL , 0 ,IndName,SignalPeriod, 4 ,Shift);
   double red = iCustom ( NULL , 0 ,IndName,SignalPeriod, 5 ,Shift);
   double blu2 = iCustom ( NULL , 0 ,IndName,SignalPeriod, 4 ,Shift+ 1 );
   double red2 = iCustom ( NULL , 0 ,IndName,SignalPeriod, 5 ,Shift+ 1 );

   bool buy = blu< 1000 && red2< 1000 ;
   bool sell = red< 1000 && blu2< 1000 ;

   if (Reverse> 0 )
     {
      buy = red< 1000 && blu2< 1000 ;
      sell = blu< 1000 && red2< 1000 ;
     }

   if (BULevel> 0 )
      BU();
   if (TrailingStop> 0 )
      Trailing();
   if (AllProfit()>Profit && Profit> 0 )
      CloseAll();

   if (TimeSession(StartHour,StartMin,EndHour,EndMin, TimeCurrent ()) && t!=Time[ 0 ])
     {
       if (buy)
        {
         PutOrder( 0 ,Ask);
        }
       if (sell)
        {
         PutOrder( 1 ,Bid);
        }
      t=Time[ 0 ];
     }

   if (CountTrades()> 0 && CloseSig> 0 )
     {
       if (sell)
        {
         CloseAll( 0 );
        }
       if (buy)
        {
         CloseAll( 1 );
        }
     }

   Comment ( "\n blu: " ,blu,
           "\n red: " ,red,
           "\n All Profit: " ,AllProfit());
  }
//+------------------------------------------------------------------+