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

 
Alexey Volchanskiy :

Yardım istiyorsanız kimsenin .ex5'e ihtiyacı yok - kaynağı yayınlayın


Testere ve hala bunun kaynak olduğunu düşündüm :-) Diğer simgelere de bakıyorum .... Bunlardan hangisinin kaynak olduğunu düşündüm ...... bu :-)

Hayır olduğu ortaya çıktı .... Ve hepsi aynı

Dosyalar:
ChekParam.mq5  11 kb
 

Sonuç olarak, nabız grafiğin sonundan eksi üçüncü çubukta sıfırdır ve sıfır olarak çizilir. Ve tamponda boş değil

Ne olduğunu bilmiyorum, ancak tüm PULSE kodunu yeni bir göstergeye yerleştirerek, icustom'ı atlayarak sorunu çözdüm.

o zaman eksi ikinci çubukta böyle bir hata yok. Kodda başka hiçbir şeyi değiştirmedim, bu yüzden bu gerçekten bir meta alıntılar yığını.

 
LookingFor :

Sonuç olarak, nabız grafiğin sonundan eksi üçüncü çubukta sıfırdır ve sıfır olarak çizilir. Ve tamponda boş değil

Ne olduğunu bilmiyorum, ancak tüm PULSE kodunu yeni bir göstergeye koyarak, icustom'ı atlayarak sorunu çözdüm.

o zaman eksi ikinci çubukta böyle bir hata yok. Kodda başka hiçbir şeyi değiştirmedim, bu yüzden bu gerçekten bir meta alıntılar yığını.


bir kod olmadan, söve sadece sizin olabilir. maalesef yardım isteyince malzemeyi vermediniz...

 
Ve sonuçta, kimse yardım edebilir mi? Hata nedir, gösterge neden yanlış görüntüleniyor.
Dosyalar:
ChekParam.mq5  11 kb
 
Vladislav Andruschenko :

bir kod olmadan, söve sadece sizin olabilir. maalesef yardım isteyince malzemeyi vermediniz...

Vladislav, adalet adına, özün ne olduğunu anlama arzusu ve size olan saygımdan, kodu veriyorum.


 //+------------------------------------------------------------------+
//|                                                   PULS_SWING.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots    1
//--- plot Pulse_Swing
#property indicator_label1   "Pulse_Swing"
#property indicator_type1   DRAW_LINE
#property indicator_color1   clrRed
#property indicator_style1   STYLE_SOLID
#property indicator_width1   1
//--- input parameters
input double    points= 0.005 ;
input double    begin_price_level= 1.0 ;
//--- indicator buffers
double          Pulse_Swing [], pulse [] , trend [] , delta [];
int PULSE_Handle ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,Pulse_Swing, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,pulse, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 2 ,trend, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 3 ,delta, INDICATOR_CALCULATIONS );
   IndicatorSetInteger ( INDICATOR_DIGITS , 0 );
   ResetLastError (); 
   PULSE_Handle = iCustom ( NULL , 0 , "PULSE" ,
                          points,           // Points
                          begin_price_level           // begin_price_level
                          );
   Print ( "PULSE_Handle" ,PULSE_Handle, "  error = " , GetLastError ()); 
//---
   PlotIndexSetInteger ( 0 , PLOT_LINE_STYLE , STYLE_SOLID );
   //ArrayFree (pulse);ArrayFree (delta);ArrayFree (Pulse_Swing);
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   int   bar, start  ;
   if (prev_calculated== 0 )
   {pulse [ 0 ] = pulse [ 1 ] = 0 ; start =begin+ 2 ;}
   else {start = prev_calculated ;}
   //Print(IntegerToString(bar));
   for (bar= start ;bar<rates_total;bar ++)
   { CopyBuffer (PULSE_Handle, 0 ,bar, 1 ,pulse);
   //Print(IntegerToString(pulse[bar]));
   if ((pulse [bar- 1 ]- pulse [bar - 2 ])> 0 ) trend[bar- 1 ] = 1 ; // 
   else
   if ((pulse [bar- 1 ] - pulse [bar - 2 ])< 0 ) trend[bar- 1 ] = - 1 ; //
   else
   if (pulse [bar- 1 ] == pulse [bar - 2 ])  {trend[bar- 1 ] = trend[bar- 2 ] ;} // 
   else 
   continue ;
   delta[bar] = pulse[bar]- pulse[bar- 1 ];
   if (trend [bar- 1 ]== 1 && pulse [bar] != pulse [bar- 1 ])
   Pulse_Swing [bar] = Pulse_Swing [bar- 1 ] + delta[bar];
   else
   if (trend [bar- 1 ]== - 1 && pulse [bar] != pulse [bar- 1 ])
   Pulse_Swing [bar] = Pulse_Swing [bar- 1 ] - delta[bar];
   else
   if (delta [bar]== 0 )Pulse_Swing [bar] = Pulse_Swing [bar- 1 ] ;
   }
   //Print(IntegerToString(delta[rates_total-1]));
   Print ( IntegerToString (delta[rates_total- 2 ]));
   //Print(IntegerToString(pulse[rates_total-1]));
   Print ( IntegerToString (pulse[rates_total- 3 ]));
   Print ( IntegerToString (pulse[rates_total- 2 ]));
   Print ( IntegerToString (pulse[rates_total- 1 ]));
  
//--- return value of prev_calculated for next call
   return (rates_total);
  }
 

Bir ticaret işleminin sonucunu okuyamıyorum. Şöyle yazdı:

 MqlTradeRequest request={ 0 };
MqlTradeResult result={ 0 };
//--- установка параметров операции
....
//--- отправка запроса
if ( ! OrderSend (request,result) )
   PrintFormat ( "OrderSend error %d" , GetLastError ()); // если отправить запрос не удалось
else // Я хочу получить парамеры резултата
{ Sleep ( 9999 ); // Жду получения резултата
   double ClosePrice=result.price;
}

Sleep öğesini kaldırırsam: her zaman ClosePrice=0.0 alırım. 10 saniye beklesem bile (ve daha fazlasını yapmak istemiyorum), neredeyse her zaman bir sonuç alıyorum ama bazen olmuyor.

Her zaman sonucu almasını nasıl sağlayabilirim?

OrderSend() açıklaması şunları söylüyor:

Not

Bir ticaret talebi, ticaret sunucusundaki birkaç kontrol aşamasından geçer. Öncelikle request parametresinin tüm gerekli alanlarının doldurulup doldurulmadığı kontrol edilir ve herhangi bir hata yoksa sunucu siparişi daha sonraki işlemler için kabul eder. Emir, ticaret sunucusu tarafından başarıyla kabul edilirse, OrderSend() işlevi true değerini döndürür.

Yani, OrderSend()'den true aldığımda, eğer doğru anladıysam MqlResult parametrelerini alamıyorum.

Bana ne zaman gelecekler?

 
Ivan Ivanov :

Bir ticaret işleminin sonucunu okuyamıyorum.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Bir sipariş değiştirilirken 131 hatası oluşuyor

fxsaber , 2017.09.12 19:47

Sadece ticaret sunucusunun adını ve sembolü yazmanız yeterlidir ve sorun en kısa sürede çözülecektir, çünkü herkes kendisi deneyebilir.

Bu arada, görevin bir çözüm bulmak değil, evet / hayır cevabını vermek olduğu hissine kapılıyorsunuz.

 

Lord programcılar,

Böyle bir soru: MT5'teki strateji test cihazı sadece açılış fiyatlarında iyi bir sonuç alıyorsa, robot sadece açılış fiyatından işlem açarsa benzer bir sonuç olur mu?

 
Dzyga :

Lord programcılar,

Böyle bir soru: MT5'teki strateji test cihazı sadece açılış fiyatlarında iyi bir sonuç alıyorsa, robot sadece açılış fiyatından işlem açarsa benzer bir sonuç olur mu?


Bunu kontrol etmek kolaydır: EA'da yalnızca açılış fiyatından (yani, çubuğun doğduğu anda) bir açılış yaparsınız ve "Tüm onaylar" tik oluşturma modunda test cihazında kontrol edersiniz.

 

arkadaşlar lütfen yardım edin

Döngüde neyin yanlış olduğunu anlamıyorum, Saptan gelen veriler rsa1 dizisine gitmiyor

 if (prev_calculated == 0 ){i=bars =start= 1 ;}
   else {start = prev_calculated ;}
   for ( bars=start ; bars<rates_total ; bars ++)
  { CopyBuffer (pulse_Handle, 0 ,start, 1 ,pca1);
  
   if (pca1[bars]!=pca1[bars- 1 ]) {pca2[i]=pca1[bars]; i++;
   string s= "" ;s= IntegerToString (pca1[bars])+ "  " ; Print (s); continue ;}
   else continue ;}