Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 644

 
tara :
Numara.

"On" cevabını vermeniz daha faydalı olacaktır! Ama ya eğer!
 
Got :

Nerede yanlış olduğunu açıklayın, enstrümanı "Piyasa İzleme" de bulamıyor.

Ayrıca i> = 0 koşuluna "=" koymayı deneyin

 for ( int i= SymbolsTotal ( true )- 1 ; i> = 0 ; i--){
 
borilunad :

Altta Grafikler, Özellikler'i tıklayın ve sol üstteki Grafik'in işaretini kaldırın! Ve genel olarak, daha fazlasını kullanın, kullanışlı olacaktır!

Teşekkür ederim! İşe yaradı.
 

Hata ayıklayıcı çalışmıyor - sorun nedir?

Metatrader build 646, build editör 934. İşte en basit gösterge:


EURUSD , M 1 grafiğinde çalıştırıyorum ve olan şu:

1

Onlar. her şey olması gerektiği gibi.

Ve şimdi Uyarıdan önce bir kesme noktası yapıyorum ve Hata Ayıklayıcıyı başlatıyorum:

USDCHF , H 1 grafiği görünür.Bu nereden geliyor? Sadece EURUSD , M 1 açıldı.

Çalıştırıyorum ve gördüğüm şey bu:

Onlar. gösterge tam olarak bu USDCHF'den veri alır, H 1. Buradaki sorun nedir?

İkinci soru. Yazılı komut dosyası, Editör tarafından Komut Dosyaları klasörüne yerleştirilmez dizinde, ancak MQL 4 klasöründe bulunur ve derlenmiş dosyayı oraya yerleştirir. Kaynağı manuel olarak Komut Dosyaları klasörüne sürüklemeniz, ardından derlemeniz gerekir ve ancak bundan sonra komut dosyası Gezgin'de görünür. Göstergeler ile böyle bir şanssızlık olmaz, hemen klasörlerine düşerler. Yanlış bir şey mi yapıyorum yoksa Editör bir hata mı yapıyor?

Üçüncü soru. Forumdaki biri mayıs ayında 650'sinden bahsetmiş olsa da, elimde hala 646 yapı var. O zamandan beri gerçekten güncelleme olmadı mı, yoksa yine bende bir sorun mu var?

Bana cevap verene başarılar dilerim.

 
İyi şanslar için teşekkürler! Ama sadece üçüncü soruya cevap veriyorum! Ayrıca sunucu bizi daha yenisiyle güncelleyene kadar 646. yapıya sahibim. Dinlendikten sonra açtığımda bu oluyor. Bunu seansın başlamasından önce haftada bir kez yapıyorum. Sana da iyi şanslar!
 

Gösterge değerlerini yeniden hesaplarken eski sinyallere tepki vermemesi, ancak bir uyarı göstermesi ve yalnızca yenilerine posta göndermesi için göstergeye SendMail ve Alert nasıl eklenir?

Eğer böyleyse:

 //+------------------------------------------------------------------+
//|                                                       simple.mq4 |
//|                                                         evillive |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "evillive"
#property link       ""
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
double Up[];
double Down[];
extern int period = 2 ;
extern int method = 1 ;
extern int price = 0 ;
extern int shift = 4 ;
extern string _alerts_= "alerts section" ;
input bool alert= false ; //show alert
input bool mail= false ; //send mail
input bool not= false ; //send push notification
//////////////////

       string dir= "" ;
       datetime tim= 0 ;

int OnInit ()
  {

   SetIndexStyle( 0 , DRAW_ARROW , EMPTY, 3 );
   SetIndexArrow( 0 , 176 );
   SetIndexBuffer ( 0 , Up);
   SetIndexStyle( 1 , DRAW_ARROW , EMPTY, 3 );
   SetIndexArrow( 1 , 176 );
   SetIndexBuffer ( 1 , Down);
   SetIndexLabel( 0 , "BUY!" );
   SetIndexLabel( 1 , "SELL!" );

   return (INIT_SUCCEEDED);
  }

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[])
  {
//---
   int i,limit;
   double ma0,ma1,atr;
//---
       if (rates_total<=(period+shift))
       return ( 0 );
//--- counting from 0 to rates_total
//--- initial zero
   if (prev_calculated< 1 )
     {
       for (i= 0 ; i<=rates_total-(period+shift); i++)
        {
         Up[i]= 0.0 ;
         Down[i]= 0.0 ;
        }
     }
//--- starting calculation
   if (prev_calculated> 0 )
      limit=rates_total-prev_calculated; //period+shift;
   else
      limit=rates_total-(period+shift);

   for (i = 1 ; i < limit; i++)
  {
      ma0 = iMA ( NULL , 0 ,period, 0 ,method,price,i);
      ma1 = iMA ( NULL , 0 ,period, 0 ,method,price,i+shift);
      atr = iATR ( NULL , 0 ,period,i);
       if (ma0>ma1 && Close[i]<Close[i+shift] && Close[i]>Close[i+period+shift])
        {
            Up[i] = (Close[i]+Open[i])/ 2 ;
            dir= "up" ;
            tim=Time[i];
            alerts(dir,tim);
        }
       if (ma0<ma1 && Close[i]>Close[i+shift] && Close[i]<Close[i+period+shift])
        {   
            Down[i] = (Close[i]+Open[i])/ 2 ;
            dir= "down" ;
            tim=Time[i];
            alerts(dir,tim);
        }
  }
   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void alerts( string d, datetime t)
{
if (!IsTesting() && ( TimeLocal ()-t)> 60 )
{
if (alert== true ) Alert ( "New " ,d, " arrow" );
if (mail== true ) SendMail ( "New signal" , StringConcatenate ( "A new " ,d, "signal detected by indicator" ));
if (not== true ) SendNotification( StringConcatenate ( "A new " ,d, "signal detected by indicator" ));
}
return ;
}

daha sonra gösterge üzerinde herhangi bir etki olduğunda (tabloya kurulum, ayar, TF'yi değiştirme, yerinde atlama veya keskin bir ses), uyarıları yeniden gösterir ve bunları grafiğin başından TÜM oklarına posta yoluyla göndermeye çalışır. mevcut olana.

Ek olarak soru - günlükteki posta " Posta: 'Test mesajı' gönderildi " olarak işaretlendi, ancak posta kutusuna tek bir mektup düşmedi (((

 
evillive :

Gösterge değerlerini yeniden hesaplarken eski sinyallere tepki vermemesi, ancak bir uyarı göstermesi ve yalnızca yenilerine posta göndermesi için göstergeye SendMail ve Alert nasıl eklenir?

Eğer böyleyse:

daha sonra gösterge üzerinde herhangi bir etki olduğunda (tabloya kurulum, ayar, TF'yi değiştirme, yerinde atlama veya keskin bir ses), uyarıları yeniden gösterir ve bunları grafiğin başından TÜM oklarına posta yoluyla göndermeye çalışır. mevcut olana.

Ek olarak soru - günlükteki posta " Posta: 'Test mesajı' gönderildi " olarak işaretlendi, ancak posta kutusuna tek bir mektup düşmedi (((


bunu yapardım

 //+------------------------------------------------------------------+
//|                                                       simple.mq4 |
//|                                                         evillive |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "evillive"
#property link       ""
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Aqua

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
double Up[];
double Down[];
extern int period = 2 ;
extern int method = 1 ;
extern int price = 0 ;
extern int shift = 4 ;
extern string _alerts_= "alerts section" ;
input bool alert= false ; //show alert
input bool mail= false ; //send mail
input bool not= false ; //send push notification
                     //////////////////

char dir= 0 ;
datetime tim= 0 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {

   SetIndexStyle( 0 , DRAW_ARROW ,EMPTY, 3 );
   SetIndexArrow( 0 , 176 );
   SetIndexBuffer ( 0 ,Up);
   SetIndexStyle( 1 , DRAW_ARROW ,EMPTY, 3 );
   SetIndexArrow( 1 , 176 );
   SetIndexBuffer ( 1 ,Down);
   SetIndexLabel( 0 , "BUY!" );
   SetIndexLabel( 1 , "SELL!" );

   return (INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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[])
  {
//---
   int i,limit;
   double ma0,ma1,atr;
//---
   if (rates_total<=(period+shift))
       return ( 0 );
//--- counting from 0 to rates_total
//--- initial zero
   if (prev_calculated< 1 )
     {
       for (i= 0 ; i<=rates_total-(period+shift); i++)
        {
         Up[i]= 0.0 ;
         Down[i]= 0.0 ;
        }
     }
//--- starting calculation
   if (prev_calculated> 0 )
      limit=rates_total-prev_calculated- 1 ; //period+shift;
   else
      limit=rates_total-(period+shift)- 1 ;

   for (i=limit; i>= 0 ; i--)
     {
      ma0 = iMA ( NULL , 0 ,period, 0 ,method,price,i);
      ma1 = iMA ( NULL , 0 ,period, 0 ,method,price,i+shift);
      atr = iATR ( NULL , 0 ,period,i);
       if (ma0>ma1 && Close[i]<Close[i+shift] && Close[i]>Close[i+period+shift])
        {
         Up[i]=(Close[i]+Open[i])/ 2 ;
        }
       if (ma0<ma1 && Close[i]>Close[i+shift] && Close[i]<Close[i+period+shift])
        {
         Down[i]=(Close[i]+Open[i])/ 2 ;
        }
     }
       if (ma0>ma1 && Close[ 0 ]<Close[shift] && Close[ 0 ]>Close[period+shift])
        {
         if (dir!= 1 ) {
            dir= 1 ;
            alerts( "UP" ,Time[ 0 ]);
         }
        }
       if (ma0<ma1 && Close[i]>Close[i+shift] && Close[i]<Close[i+period+shift])
        {
         if (dir!=- 1 ){
            dir=- 1 ;
            alerts( "DOWN" ,Time[ 0 ]);
         }
        }

   

   return (rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void alerts( string d, datetime t)
  {
   if (!IsTesting() && ( TimeLocal ()-t)> 60 )
     {
       if (alert== true ) Alert ( "New " ,d, " arrow" );
       if (mail== true ) SendMail ( "New signal" , StringConcatenate ( "A new " ,d, "signal detected by indicator" ));
       if (not== true ) SendNotification( StringConcatenate ( "A new " ,d, "signal detected by indicator" ));
     }
   return ;
  }
//+------------------------------------------------------------------+
 
Vinin :


bunu yapardım

Eklenen satırların döngünün dışında olması gerekiyor, yoksa bir yazım hatası mı?
Her şey, olması gerektiği gibi anlıyorum.
 

Merhaba, pozisyon ortalaması için bir şablonu olan var mı?

Yani bir emir açılırsa ve kârsızsa, o zaman aynı yönde ikinci bir emir açarken, bu emirlerin arasına ortada bir durak koyarız ve böyle devam eder, üç emir, dört ...?

 
Top2n :

Merhaba, pozisyon ortalaması için bir şablonu olan var mı?

Yani, bir emir açılırsa ve kârsızsa, o zaman aynı yönde ikinci bir emir açarken, bu emirlerin arasına ortada bir durak koyarız ve böyle devam eder, üç emir, dört ...?


tüm açılış fiyatlarını alın ve aritmetik ortalamayı hesaplayın