Çaydanlıktan gelen sorular - sayfa 187

 
G001 :
Tamamen bitkin. Doğru açılmıyor.

Lütfen yardım edin. Hata nerede?

Şu şekilde deneyin:
 MqlTradeRequest request={ 0 };
MqlTradeResult result={ 0 };
MqlTradeCheckResult check={ 0 };
 
fyords :
Şu şekilde deneyin:
Teşekkür ederim.
Açılıyor, ancak göstergeden gelen sinyalleri doğru okumuyor.
yardımcı olacak mı?
 
G001 :
Teşekkür ederim.
Açılıyor, ancak göstergeden gelen sinyalleri doğru okumuyor.
yardımcı olacak mı?
 ArraySetAsSeries (Bull, true );

OnInit'te bir kez yapılır.

 CopyBuffer (Indicator, 1 , 0 , 3 ,Bull);
Tampon numaralarını karıştırdın mı?
 
fyords :

OnInit'te bir kez yapılır.

Tampon numaralarını karıştırdın mı?
Öyle görünüyor. önceki sayfadaki gösterge.
 
G001 :
Açılıyor, ancak göstergeden gelen sinyalleri doğru okumuyor.

doğru değil ne demek?

Kontrol etmek için göstergenin değerini görüntülemek için yazdırmayı kullanabilirsiniz - "ne elde ederiz?"

 
fyords :

doğru değil ne demek?

Kontrol etmek için göstergenin değerini görüntülemek için yazdırmayı kullanabilirsiniz - "ne elde ederiz?"

Danışmanı diğer göstergelerle kontrol ettim ve işe yarıyor.
Belki gösterge sorundur?
Bu gösterge ile ilk kene açılır.

Üzgünüz, baskıyı nereye ekleyeceğinizi bilmiyorum.

BUY_STOP için örnek, kırmızıdan griye.

 //+------------------------------------------------------------------+ 
//|                                                      MACDATR.mq5 | 
//|                                      Copyright © 2011, Svinozavr | 
//+------------------------------------------------------------------+ 
//---- Indicator settings
#property indicator_separate_window 
#property indicator_buffers 4 
#property indicator_plots   4
#property indicator_level1 + 0.0005
#property indicator_level2 - 0.0005
#property indicator_levelcolor DimGray
#define RESET 0
//-----
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 Gray
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_label1 "MACD"
//-----
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 Green
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
#property indicator_label2 "Bull"
//-----
#property indicator_type3 DRAW_HISTOGRAM
#property indicator_color3 Red
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
#property indicator_label3 "Bear"
//-----
#property indicator_type4 DRAW_LINE
#property indicator_color4 Olive
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
#property indicator_label4 "ATR"
//-----
//----- Indicator parameters
//+------------------------------------------------------------------+
input uint FastEMA      = 12 ;
input uint SlowEMA      = 26 ;
input uint SignalEMA = 9 ;
input int   ATRG         = 0 ;
input ENUM_APPLIED_PRICE AppliedPrice= PRICE_CLOSE ;
//+------------------------------------------------------------------+
//-----
double ATRmin= 0 ;
double kATR= 1 ;
int min_rates_total;
int ATRHandle,MACDHandle;
double MACDBuffer[],ATRBuffer[],Bull[],Bear[];
//+------------------------------------------------------------------+    
//| MACD indicator initialization function                           | 
//+------------------------------------------------------------------+  
void OnInit ()
{
//-----
   if (ATRG) min_rates_total= int ( MathMax (FastEMA,SlowEMA)+ATRG);
   else min_rates_total= 2 * int ( MathMax (FastEMA,SlowEMA));
//-----
   int ATR;
   if (!ATRG) ATR= int (SlowEMA); 
   else ATR=ATRG;
  ATRmin*= _Point ;
//-----
  ATRHandle= iATR ( NULL , 0 ,ATR);
   if (ATRHandle== INVALID_HANDLE ) Print ( " Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà ATR" );
//-----
  MACDHandle= iMACD ( NULL , 0 ,FastEMA,SlowEMA,SignalEMA,AppliedPrice);
   if (MACDHandle== INVALID_HANDLE ) Print ( " Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà MACD" );
//-----
   SetIndexBuffer ( 0 ,MACDBuffer, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,min_rates_total);
   ArraySetAsSeries (MACDBuffer, true );
//-----
   SetIndexBuffer ( 1 ,Bull, INDICATOR_DATA );
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,min_rates_total);
   ArraySetAsSeries (Bull, true );
//-----
   SetIndexBuffer ( 2 ,Bear, INDICATOR_DATA );
   PlotIndexSetInteger ( 2 , PLOT_DRAW_BEGIN ,min_rates_total);
   ArraySetAsSeries (Bear, true );
//-----
   SetIndexBuffer ( 3 ,ATRBuffer, INDICATOR_DATA );
   PlotIndexSetInteger ( 3 , PLOT_DRAW_BEGIN ,min_rates_total);
   ArraySetAsSeries (ATRBuffer, true );
//-----
   string shortname;
   StringConcatenate (shortname, "MACDATR (" ,FastEMA, ", " ,SlowEMA, ", " ,SignalEMA, ", " , EnumToString (AppliedPrice), ")" );
//-----
   IndicatorSetString ( INDICATOR_SHORTNAME ,shortname);
//-----
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits + 1 );
//-----
}
//+------------------------------------------------------------------+  
//| MACD 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[]
                )
  {
//----- Check for data
   if (rates_total<min_rates_total) return ( 0 );
//-----
   int to_copy,limit,i;
   double atr,Atr[];
   datetime Time[ 1 ];
//-----
   if (prev_calculated>rates_total || prev_calculated<= 0 )
  {
    limit=rates_total-min_rates_total;
  }
   else limit=rates_total-prev_calculated;
//----- 
   ArraySetAsSeries (Atr, true );
//-----
  to_copy=limit+ 1 ;
//-----
   if ( CopyBuffer (ATRHandle, 0 , 0 ,to_copy,Atr)<= 0 ) return (RESET);
   if ( CopyBuffer (MACDHandle, MAIN_LINE , 0 ,to_copy,MACDBuffer)<= 0 ) return (RESET);
//-----
   for (i=limit; i>= 0 && ! IsStopped (); i--)
  {
    atr=kATR*Atr[i]; // ATR
    atr= MathMax (atr,ATRmin);
//-----
     if (MACDBuffer[i]> 0 ) {ATRBuffer[i]=MACDBuffer[i]-atr;}
     if (MACDBuffer[i]< 0 ) {ATRBuffer[i]=MACDBuffer[i]+atr;}
  }
//-----
   for (i=limit; i>= 0 && ! IsStopped (); i--)
  {
//-----
    Bear[i]= 0 ;
    Bull[i]= 0 ;
//-----
     if (MACDBuffer[i]> 0 && MACDBuffer[i+ 1 ]<MACDBuffer[i] && ATRBuffer[i]>= 0 ) {Bull[i]=MACDBuffer[i];}
     if (MACDBuffer[i]< 0 && MACDBuffer[i+ 1 ]>MACDBuffer[i] && ATRBuffer[i]<= 0 ) {Bear[i]=MACDBuffer[i];}
  }
//+------------------------------------------------------------------+
//----- Done
   return (rates_total);
}
//+------------------------------------------------------------------+

 
G001 :
Danışmanı diğer göstergelerle kontrol ettim ve işe yarıyor.
Belki gösterge sorundur?
Bu gösterge ile ilk kene açılır.

Maalesef baskıyı nereye ekleyeceğimi bilmiyorum.

BUY_STOP için örnek, kırmızıdan griye.

Herhangi bir sorun bulunamadı, her şey çalışıyor. Kodları sayfa 189'dan aldım.

 

#property tester_file "" program özelliği hakkında soru.

Test için Expert Advisor'a çok sayıda dosya, daha doğrusu 3800 bağlamak gerekiyor.

Sadece bu yıl için çeşitli enstrümanlar için günlük opsiyon seviyeleri.

Çözüm nedir?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Karlson : #property tester_file "" programları hakkında bir soru.

Test için Expert Advisor'a çok sayıda dosya, daha doğrusu 3800 bağlanması gerekiyor. Sadece bu yıl için çeşitli enstrümanlar için günlük seçenek seviyeleri. Çözüm nedir?

Test için ise, bu dosyalardaki tüm bilgilerin değiştirilemez (arşivlenmiş) olması gerektiği ortaya çıktı. İki işlev yazmaya çalışırdım: biri yüzlerce dosyadaki tüm verileri tek bir dosyaya döküyor, ikincisi bu dosyayı iyi tanımlanmış kurallara göre okuyor. Yani denemedin mi?
 
Yedelkin :
Test için ise, bu dosyalardaki tüm bilgilerin değiştirilemez (arşivlenmiş) olması gerektiği ortaya çıktı. İki işlev yazmaya çalışırdım: biri yüzlerce dosyadaki tüm verileri tek bir dosyaya döker, ikincisi bu dosyayı iyi tanımlanmış kurallara göre okur. Yani denemedin mi?
Henüz denemedim.Ama onu tek bir dosyada toplama fikri anlaşılabilir.Belki geliştiriciler, klasördeki değişmemiş verileri bağlamanın bir yolunu göstereceklerdir.