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

 

Yardım lütfen. Güncellemeden sonra her zaman for() döngüsüyle uğraşamam, ofset ( iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i) ) nedeniyle, gösterge yeniden çizilir!


 //+------------------------------------------------------------------+
//|                                                         help.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property strict
#include <MovingAverages.mqh>
//--- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 2
#property   indicator_color1   clrSilver
#property   indicator_color2   clrRed
#property   indicator_width1   2

//--- indicator parameters
input int SignalSMA= 8 ;             // Signal SMA Period
//--- indicator buffers
double     ExtBuffer[];
double     ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
   IndicatorDigits ( Digits + 1 );
//--- drawing settings
   SetIndexStyle ( 0 , DRAW_HISTOGRAM );
   SetIndexStyle ( 1 , DRAW_LINE );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBuffer);
   SetIndexBuffer ( 1 ,ExtSignalBuffer);

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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;
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if (prev_calculated> 0 )
      limit++;
//--- counted in the 1-st buffer
   for (i= 0 ;i<limit;i++)
      ExtBuffer[i]=(
                     iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_HIGH ,i)
                    + iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i)
                    );
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- done
   return (rates_total);
  }
//+------------------------------------------------------------------+

Şimdiden teşekkür ederim.

 
Alexey Viktorov :

Bana göre, yaklaşım hiç mantıklı değil. Neden haftanın gününü tanımlamalısınız? Koşulun "Bugün xxx'ten fazla sipariş açmayın" olması gerekiyorsa, bugünün hangi gün olduğunun ne önemi var?

Benim açımdan bugün açılan siparişleri yeniden hesaplayıp uygun koşulu ayarlamak daha mantıklı. sırasıyla durumda

siparişin açılış tarihinin yeterli tanımı yoktur.


Eğer biliyorsanız - lütfen nasıl yapıldığını yazın)
Bunu nasıl yapacağımı anlamıyorum, böylece bir gün tüm gün için n'den fazla sipariş açılmaz.

 
cripple :

Yardım lütfen. Güncellemeden sonra her zaman for() döngüsüyle uğraşamam, ofset ( iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN ,i) ) nedeniyle, gösterge yeniden çizilir!


Şimdiden teşekkür ederim.

ma-shkakh farklı TF-we'de. olduğu gibi, kıdemli zaman çerçevesini M1 TF'ye girmek, yani. MA'yı farklı sayıda kene ile iki kez hesaplayın. Bu durumda, eski dönemin aynı değeri, farklı genç olanlara eklenecektir.

i'den geçerek, örneğin D1 ve 10 M1 periyodundan 10 mum alırsınız. Mantıken bir şeyler yanlış...

Başka bir şey de, gösterge M1 olarak ayarlanmışsa, büyük olasılıkla yeniden çizmeden orada çalışacaktır.

 
Renat Akhtyamov :

ma-shkakh farklı TF-we'de. olduğu gibi, kıdemli zaman çerçevesini M1 TF'ye girmek, yani. MA'yı farklı sayıda kene ile iki kez hesaplayın.

i'den geçerek, örneğin D1 ve 10 M1 periyodundan 10 mum alırsınız. Mantıken bir şeyler yanlış...

Evet doğru fark ettin ama aklım hala M1'i doğru saymayı anlamak için yeterli değil
 
cripple :
Evet doğru fark ettin ama aklım hala M1'i doğru saymayı anlamak için yeterli değil

ek olarak, M1'i zamanla daha eski bir TF ile senkronize etmek gerekli olacaktır, çünkü 1 bar M5'in 5 M1 mumuna karşılık geleceği kesin olmaktan uzaktır, belki 4 ve 1.

 
cripple :
Evet doğru fark ettin ama aklım hala M1'i doğru saymayı anlamak için yeterli değil

Denemek

 int    Bars (
   string            symbol_name,     // имя символа
   ENUM_TIMEFRAMES   timeframe,       // период
   datetime          start_time,       // с какой даты
   datetime          stop_time         // по какую дату
   );

i-inci çubuğun saatini ve ortaya çıkan çubuğun numarasını i yerine koydum.

 
lütfen bana klavyeyi kullanarak MT4 terminalindeki açık çiftler arasında gezinmenin mümkün olup olmadığını söyleyin
 
LRA :
Sevgili novikov433 !!! Sana programlamayı öğreteceğim ya da sana ücretsiz bir danışman yazarım ya da her ikisini birden !!! Karşılığında, kaybedilen siparişlerin başabaşa nasıl çevrildiğini öğretin. Basit bir örnekle mümkündür. Karıma bir emir (sipariş) veriyorum: sabahın erken saatlerinde bir kova patates almak için pazarda ve saat 10'a kadar (temel analiz) fiyat yükselir - satmak için. Ama bazen on buçukta (haberler) bir araba patates getiriyorlar. Ve fiyat (haberlerde) hemen düşer ve günün sonunda, hatta tüm hafta boyunca. StopLoss koydum - fiyat 10 ruble düşerse, hemen satabildiğiniz kadar (piyasa fiyatından) satın. Kaybı ortadan kaldırmak için sıra nasıl değiştirilir. Bu seçenek ilginçse - sabununuzu kişisel olarak yazın.
Pekala, örneğin, piyasa biraz doğru yönde gittiyse ve sonra geri döndüyse, o zaman anlaşmayı başabaşta kapatmanız ve tersine açmanız yeterlidir. boker fx ecn skoru ile açık. Tüm bunlara nasıl dahil oluyorsun? Başladığım anda, hemen bir çeşit stupor yakalarım. Şu anda, bir kez daha ellerimle ticaretin tamamen saçmalık olduğuna ikna oldum. kodda neden bu kadar çok bileşenin yazılması gerektiğini nasıl anlayabilir ve anlayabiliriz?
 
Alexey Viktorov :

Denemek

i-inci çubuğun saatini ve ortaya çıkan çubuğun numarasını i yerine koydum.


Böyle bir şey düşündünüz mü?
 //+------------------------------------------------------------------+
//|                                                         help.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+

#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          "http://www.mql4.com"
#property description "Moving Averages Convergence/Divergence"
#property strict
#include <MovingAverages.mqh>
//--- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 2
#property   indicator_color1   clrSilver
#property   indicator_color2   clrRed
#property   indicator_width1   2

//--- indicator parameters
input int SignalSMA= 8 ;             // Signal SMA Period
//--- indicator buffers
double     ExtBuffer[];
double     ExtSignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ( void )
  {
   IndicatorDigits ( Digits + 1 );
//--- drawing settings
   SetIndexStyle ( 0 , DRAW_HISTOGRAM );
   SetIndexStyle ( 1 , DRAW_LINE );
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtBuffer);
   SetIndexBuffer ( 1 ,ExtSignalBuffer);

   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
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;
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if (prev_calculated> 0 )
      limit++;
//--- counted in the 1-st buffer
   for (i= 0 ;i<limit;i++)
     {
       int bars= iBarShift ( Symbol (), PERIOD_M1 , iTime ( Symbol (), PERIOD_CURRENT ,i), false );
      ExtBuffer[i]=(
                     iMA ( NULL , PERIOD_CURRENT , 1 , 0 , MODE_SMA , PRICE_HIGH ,i)
                    + iMA ( NULL , PERIOD_M1 , 1 , 1 , MODE_SMA , PRICE_OPEN , bars )
                    );
       Print (bars);
     }
//--- signal line counted in the 2-nd buffer
   SimpleMAOnBuffer(rates_total,prev_calculated, 0 ,SignalSMA,ExtBuffer,ExtSignalBuffer);
//--- done
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
ax00071 :
İlginiz için teşekkür ederim)) İşte bir dulavratotu. . . . . . Kapanışta, işlem türünü kontrol etmek için ek koşullar olmaksızın, işlemi Cuma günü saat 22:00'de kapatmak için bir şartım vardı. Ve anlaşmanın kendisi birkaç saat önce kapandı. Saat 22:00'ye ulaştığında, danışman zaten kapalı olan bir siparişi kapatmak için emirler göndermeye başladı. . . . .
Kendine bitki demeye değmez. Böyle bir hatayı yerelleştirmeyi, kavramayı ve düzeltmeyi başardıysanız, o zaman bir programcı unvanına yaklaştınız!