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

 
Michail_David :

Teşekkürler Vitaly. Ama yine de test ederken ExtTempBuffer[i] = NormalizeDouble((close[i]-open[i])/Point(),2); satırında hata veriyor. [i} öğesinde.

1. İndeksleri kontrol edin

   SetIndexBuffer( 2 ,ExtTempBuffer);
   SetIndexBuffer( 2 ,ExtPriceBuffer);

2. Neden bu 2 ara belleğe ihtiyacınız var?

      ExtTempBuffer[i] = NormalizeDouble((close[i]-open[i])/Point(),2);
      ExtPriceBuffer[i] = NormalizeDouble((close[i+1]-open[i+1])/Point(),2);

Eğer

 ExtPriceBuffer[i] = ExtTempBuffer[i+1]
 
Michail_David :

ExtTempBuffer[i] = NormalizeDouble((close[i]-open[i])/Point(),2; [i} öğesinde.

Tutmak

 //+------------------------------------------------------------------+
//|                                                         MSBB.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

#include <MovingAverages.mqh>

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1    clrGreen
#property indicator_color2    clrRed
#property   indicator_width1    1
input int             InpMSBBPeriod= 3 ;         // Period
input ENUM_MA_METHOD InpMSBBMethod= MODE_SMA ;   // Method
//--- indicator buffers
double          ExtMSBBBuffer[];
double          ExtTempBuffer[];
double          ExtPriceBuffer[];
double          ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
//--- indicator buffers mapping
   IndicatorDigits( Digits );
//--- drawing settings
   IndicatorBuffers( 4 );
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexBuffer ( 0 ,ExtMSBBBuffer);
   SetIndexBuffer ( 1 ,ExtSignalBuffer);
   SetIndexStyle( 1 , DRAW_LINE );
   SetIndexBuffer ( 2 ,ExtTempBuffer);
   SetIndexBuffer ( 3 ,ExtPriceBuffer);
   SetIndexDrawBegin( 1 ,InpMSBBPeriod);
//--- name for DataWindow and indicator subwindow label
   IndicatorShortName( "MSBB(" + IntegerToString (InpMSBBPeriod)+ ")" );
   SetIndexLabel( 0 , "MSBB" );
   SetIndexLabel( 1 , "Signal" );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//------
   if ((rates_total-prev_calculated-InpMSBBPeriod)<= 0 ) return ( 0 );
   
   for ( int i=rates_total-prev_calculated-InpMSBBPeriod- 1 ;i>= 0 ;i--)
     {
      ExtTempBuffer[i] = NormalizeDouble ((close[i]-open[i])/ Point (), 2 );
      ExtPriceBuffer[i] = NormalizeDouble ((close[i+ 1 ]-open[i+ 1 ])/ Point (), 2 );
       //ExtMSBBBuffer[i]=price_open+ExtTempBuffer[i];
       //Print("ExtPriceBuffer[i] = ", ExtPriceBuffer[i]);
       if (ExtTempBuffer[i]== 0 )
         ExtMSBBBuffer[i]= 0.0 ;
       if (ExtPriceBuffer[i]> 0 && ExtTempBuffer[i]> 0 )
        {
         double price_open = NormalizeDouble ((open[i]-open[i+ 1 ])/ Point (), 2 );
         double price_close = NormalizeDouble ((close[i]-close[i+ 1 ])/ Point (), 2 );
         if ((price_open< 0 && price_close> 0 )||(price_open> 0 && price_close< 0 ))
            ExtMSBBBuffer[i] = 0.0 ;
         if ((price_open< 0 && price_close< 0 )||(price_open> 0 && price_close> 0 ))
            ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open;
        }
       if (ExtPriceBuffer[i]> 0 && ExtTempBuffer[i]< 0 )
        {
         double price_open = NormalizeDouble ((open[i]-close[i+ 1 ])/ Point (), 2 );
         double price_close = NormalizeDouble ((close[i]-open[i+ 1 ])/ Point (), 2 );
         if ((price_open< 0 && price_close> 0 )||(price_open> 0 && price_close< 0 ))
            ExtMSBBBuffer[i] = 0.0 ;
         if ((price_open> 0 && price_close> 0 )||(price_open< 0 && price_close< 0 ))
            ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open;
        }
       if (ExtPriceBuffer[i]< 0 && ExtTempBuffer[i]< 0 )
        {
         double price_open = NormalizeDouble ((open[i]-open[i+ 1 ])/ Point (), 2 );
         double price_close = NormalizeDouble ((close[i]-close[i+ 1 ])/ Point (), 2 );
         if ((price_open< 0 && price_close> 0 )||(price_open> 0 && price_close< 0 ))
            ExtMSBBBuffer[i]= 0.0 ;
         if ((price_open< 0 && price_close< 0 )||(price_open> 0 && price_close> 0 ))
            ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open;
        }
       if (ExtPriceBuffer[i]< 0 && ExtTempBuffer[i]> 0 )
        {
         double price_open = NormalizeDouble ((open[i]-close[i+ 1 ])/ Point (), 2 );
         double price_close = NormalizeDouble ((close[i]-open[i+ 1 ])/ Point (), 2 );
         if ((price_open> 0 && price_close< 0 )||(price_open< 0 && price_close> 0 ))
            ExtMSBBBuffer[i]= 0.0 ;
         if ((price_open> 0 && price_close> 0 )||(price_open< 0 && price_close< 0 ))
            ExtMSBBBuffer[i]=ExtTempBuffer[i]+price_open;
        }
       //--- signal line counted in the 2-nd buffer
       //ExtSignalBuffer[i]=iMAOnArray(ExtMSBBBuffer,0,InpMSBBPeriod,0,InpMSBBMethod,0);
      SimpleMAOnBuffer(rates_total,prev_calculated, 1 ,InpMSBBPeriod+ 2 ,ExtMSBBBuffer,ExtSignalBuffer);
       Print ( "ExtSignalBuffer = " , ExtSignalBuffer[i]);
       //--- done
     }
   /* if(ExtPriceBuffer[i]>0||ExtPriceBuffer[i]<0)
     {
      ExtMSBBBuffer[i] = ExtPriceBuffer[i]+ExtTempBuffer[i];
      Print("ExtMSBBBuffer[i] = ", ExtMSBBBuffer[i]);
     }
   if(ExtPriceBuffer[i]==0)
     {
      ExtMSBBBuffer[i] = 0.0;
      Print("ExtMSBBBuffer[i] = ", ExtMSBBBuffer[i]);
     }
   }*/
//---
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
Merhaba! Orada   yeniden tasarlanmış gösterge   Terminalde yerleşik olarak bulunan iExposure.mq4 göstergesine dayalı "iexposuregmini.mq4". Bilgi verenin konumunu (penceresini) harita penceresinin sol alt köşesine nasıl taşıyacağımı söyler misiniz? Ve göstergeyi grafikten çıkardıktan sonra bile gösterge paneli kalıyor... Bunu nasıl düzeltebilirim? Şimdiden çok teşekkür ederim!
Как заказать торгового робота на MQL5 и MQL4
Как заказать торгового робота на MQL5 и MQL4
  • www.mql5.com
Главным преимуществом торговых терминалов MetaTrader является возможность создания автоматических торговых систем, способных совершать торговые операции без вмешательства трейдера, что позволяет исключить влияние психологии на результаты торговли. Для этого нужно сформулировать торговую стратегию и реализовать ее в виде программы на языке MQL...
Dosyalar:
 
MakarFX :

1. İndeksleri kontrol edin

2. Neden bu 2 ara belleğe ihtiyacınız var?

Bir arabellek ExtTempBuffer[i]=ExtTempBuffer[i+1] ile işe yaramadı, ben de denemeye karar verdim ama o da işe yaramadı.

 
Michail_David :

Bir arabellek ExtTempBuffer[i]=ExtTempBuffer[i+1] ile işe yaramadı, ben de denemeye karar verdim ama o da işe yaramadı.

Çalışan kodu gönderdim.

 
MakarFX :

Tutmak

Teşekkürler Mark. Test ederken yine aynı satırda aynı hata. Hiç çalışmıyor.

2020.11.03 23:38:19.815'in ürettiği şey budur 2020.07.10 16:10:00 MSBB EURUSD,M5: 'MSBB.mq4' içinde dizi aralık dışında (78,20)


 
Michail_David :

Teşekkürler Mark. Test ederken yine aynı satırda aynı hata. Hiç çalışmıyor.

2020.11.03 23:38:19.815'in ürettiği şey budur 2020.07.10 16:10:00 MSBB EURUSD,M5: 'MSBB.mq4' içinde dizi aralık dışında (78,20)


Bana hata vermiyor, ancak günlükler nedeniyle çok büyük

 Print ( "ExtSignalBuffer = " , ExtSignalBuffer[i]);
 
MakarFX :

Bana hata vermiyor, ancak günlükler nedeniyle çok büyük

Evet. Fazla. Tüm koşulları göz önünde bulundurmuş gibi görünmüyorum. Sinyal değerine göre, çoğu çok büyük. Yardım için teşekkürler. Şartları daha detaylı inceleyeceğim.

 
Александр :

Koşullardan biri karşılanmadığı için açılmıyor.

Bu

yada bu

İki sifonu yorumlayın // ve hangisi olduğunu anlayacaksınız. Bu şekilde hatayı bulursunuz.

Teşekkürler İskender!

 
MakarFX :

Tutmak

Sorunsuz derler

'MSBB.mq4' MSBB.mq4 1 1
'MovingAverages.mqh' MovingAverages.mqh 1 1
0 hata, 0 uyarı, 187 msn geçti 1 1

Neden: