Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 323

 

Onlar. anladığım kadarıyla bu baskıdan sonra veri alırken ... ve günlükte bir mesaj

 Wait Data for GBPUSD 

Test, iş algoritmasına göre ilerliyor mu?

 
R0MAN :

Onlar. anladığım kadarıyla bu baskıdan sonra veri alırken ... ve günlükte bir mesaj

Test, iş algoritmasına göre ilerliyor mu?

Ve hangi fonksiyondaki hat maliyeti? OnInit() içindeyse - bu satırdan sonra, aşağıdaki her şey artık bağımlı değil... OnCalculate() çalışmaya başlar. Test, tam olarak başlatılmamış bir GBPUSD hindi ile birlikte gelir.
 
Herkese merhaba, #property strict yönergesini ayarlayın hemen 4 hata nasıl düzeltilir
2,3,5,8 satırdaki hatalar

if (CloseFriday == TRUE && DayOfWeek() == 5 && TimeCurrent() >= StrToTime(CloseFridayHour + ":00")) return (0);
op = NormalizeDouble(Teklif, Rakamlar);
tp = NormalizeDouble(Teklif - (Kar Al)*Puan,Rakamlar);
if (TakeProfit==0) tp=0;
sl = NormalizeDouble(Teklif + (StopLoss)*Puan,Rakamlar);
if (StopLoss==0) sl=0;
CalcLot();
Ticket=OrderExists(OP_SELL);
if (Ticket<MaxTrades && OrderSymbol()==Symbol())
if (Bilet==-1)
 
MigVRN :
Ve hangi fonksiyondaki hat maliyeti? OnInit() içindeyse - bu satırdan sonra, aşağıdaki her şey artık bağımlı değil... OnCalculate() çalışmaya başlar. Test, tam olarak başlatılmamış bir GBPUSD hindi ile birlikte gelir.

Anladım. Sayesinde. Daha önce olmadı...

OnCalculate() çalışmaya başlar.

 //------------------------------------------------------------------    OnInit
int OnInit ()
{
         SetIndexBuffer ( 0 , Mediana, INDICATOR_DATA );
         ArraySetAsSeries (Mediana, true );
         // задали имена валют
      ...
//------------------------------------------------------------------    OnCalculate
int OnCalculate ( const int rates_total, const int prev_calculated,
                 const datetime & time[], const double & open[], const double & high[], const double & low[], const double & close[],
                 const long & tick_volume[], const long & volume[], const int & spread[])
{

         for ( int i= 0 ; i< 6 ; i++) if (Pair[i].CopyBuf(nBars)< 0 ) { Print ( "Wait Data for " +Pair[i].m_name); return ( 0 ); } // получили данные из МА в буфера // при ошибке выходим
        
         int limit=rates_total-prev_calculated; if (limit>=rates_total) limit=rates_total- 1 ; // ограничили на таймсерию
         if (limit>nBars) limit=nBars; // ограничили на число скопированных данных
        
         for ( int i= 0 ; i<limit; i++) // проходим по треубемому промежутку и расчитываем медиану
        {
 

İyi günler sevgili forum kullanıcıları.

Lütfen bana döngünün neden tekrarlanmadığını söyle.

Bu benim ilk deneme yapımım, bu yüzden kesinlikle yargılamayın)

Şimdiden teşekkürler.

 //+-------------------Переменные MACD--------------------------------+
extern int fast_ema_period= 12 ; // период быстрой средней
extern int slow_ema_period= 26 ; // период медленной средней
extern int signal_period= 9 ; // период усреднения разности
extern int shift_MACD= 0 ; // сдвиг индикатора MACD
//+-------------------Переменные DeM---------------------------------+
extern int DeM_period= 14 ; // период усреднения
extern double levelUP= 0.7 ; // верхний уровень
extern double levelDONE= 0.3 ; // нижний уровень
extern int shift_DeM= 0 ; // сдвиг индикатора DeM
//+-------------------Общие переменные-------------------------------+
extern int Magic= 7770000 ; // магический номер
extern double Lot= 0.01 ; // размер лота
extern int slippage= 4 ; // проскальзывание цены
extern int SL= 150 ; // СтопЛосс
extern int TP= 300 ; // ТейкПрофит
int kolpos= 0 ; // количество позиций советника
//+------------------------------------------------------------------+
//| Старт советника                                                  |
//+------------------------------------------------------------------+
int start()                                  
{
   double MAIN= iMACD ( Symbol (), 0 ,fast_ema_period,slow_ema_period,signal_period, PRICE_CLOSE ,MODE_MAIN,shift_MACD);
   double SIGNAL= iMACD ( Symbol (), 0 ,fast_ema_period,slow_ema_period,signal_period, PRICE_CLOSE ,MODE_SIGNAL,shift_MACD);
   double DeMval= iDeMarker ( Symbol (), 0 ,DeM_period,shift_DeM);
//---
   for ( int pos= 0 ; pos< OrdersTotal (); pos++)
      {
       OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
       if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==Magic)
      kolpos++;
      }
   if (kolpos== 0 )
      {
       if (MAIN> 0 &&SIGNAL> 0 &&SIGNAL>MAIN&&DeMval>levelUP)
       OrderSend ( Symbol (),OP_SELL,Lot,Bid,slippage,Bid+SL* Point ,Bid-TP* Point , NULL ,Magic, 0 , clrBlue );
       if (MAIN< 0 &&SIGNAL< 0 &&SIGNAL<MAIN&&DeMval<levelDONE)
       OrderSend ( Symbol (),OP_BUY,Lot,Ask,slippage,Ask-SL* Point ,Ask+TP* Point , NULL ,Magic, 0 , clrRed );
      }
//---
   return ( 0 );
} 
 
N0mad :

İyi günler sevgili forum kullanıcıları.

Lütfen bana döngünün neden tekrarlanmadığını söyle.

Bu benim ilk deneme yapımım, bu yüzden kesinlikle yargılamayın)

Şimdiden teşekkürler.

İyi akşamlar. Kolpos değişkenini start() gövdesine ekleyin.
 
Tapochun :
İyi akşamlar. Kolpos değişkenini start() gövdesine ekleyin.
Hemen yanıt verdiğiniz için teşekkür ederiz. çok yardımcı oldu.
 

Herkese selam!

Böylesi bir durum.

Uzman TF M15 üzerinde çalışıyor.

Aynı zamanda, daha yüksek zaman dilimleri için fiyat verilerini kopyalayın (örneğin, CopyHigh(Symbol, PERIOD_D1 ,0,period,Hi_array) )

bir yıldan fazla başarısız olur. Genel olarak, bu şaşırtıcı değil, çünkü senkronizasyon sonuçları sadece bir yıl olan yaklaşık 25 bin 15 milyon bar gösteriyor.

Daha uzun bir süre için verileri nasıl alabilirim? D1 için senkronize edin veya farklı şekilde yapılabilir mi?

 
metatrader4 745build, önceki sürüm için bir komut dosyası nasıl eklenir, aksi takdirde komut dosyaları çalışmaz
 
valera5111 :
metatrader4 745build, önceki sürüm için bir komut dosyası nasıl eklenir, aksi takdirde komut dosyaları çalışmaz

Lütfen tam olarak ne yapmak istediğinizi belirtin?

Hangi hataların meydana geldiğini açıklayın (derlerken "Hatalar" sekmesine bakın), terminalde çalışırken "Uzmanlar" sekmesine bakın).