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

 
Artyom Trishkin :

Test cihazında farklı bir sembolde mi? Veya başka bir sembolde demo/gerçek? Veya bu sembol üzerindeki test cihazında? Veya bu sembolde demo/gerçek mi?

Senden ne çekmen gerekiyor?

Neden sen? Nerede denediğiniz ne fark eder? Soru, Point = 0 olabilir. Ve eğer yapabilirse, bir hatayla karşılaşmamak için kodu doğru bir şekilde nasıl yazabilirim: sıfıra bölme ?
 
LuckySith :

Üzgünüm, ben çok acemiyim - nasıl olduğunu anlamıyorum
Belki de en basit koda sahip bir göstergeniz vardır, benzetmeden anlayabilirim? çünkü bulamadım

Burada, çubuğun ortasına noktalar koyan çok basit bir kodum var. Üzerlerine geldiğimde bir metin veya bir pencere görünecek şekilde nasıl yapabilirim?



#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle ( 0 , DRAW_ARROW );
   SetIndexArrow ( 0 , 159 );
   SetIndexBuffer ( 0 ,ExtMapBuffer1);
   SetIndexEmptyValue ( 0 , 0.0 );
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars= IndicatorCounted ();
   int limit= Bars -counted_bars;
//----  
   for ( int i=limit; i>= 0 ; i--)
     {
       double        fabody0 = fabs ( Close [i]- Open [i]);
       double        fabody1 = fabs ( Close [i+ 1 ]- Open [i+ 1 ]);
       double        fabody2 = fabs ( Close [i+ 2 ]- Open [i+ 2 ]);
       double        fabody3 = fabs ( Close [i+ 3 ]- Open [i+ 3 ]);
       double        fabody4 = fabs ( Close [i+ 4 ]- Open [i+ 4 ]);
       double        fabody5 = fabs ( Close [i+ 5 ]- Open [i+ 5 ]);
       double        fabody6 = fabs ( Close [i+ 6 ]- Open [i+ 6 ]);
       double        fabody7 = fabs ( Close [i+ 7 ]- Open [i+ 7 ]);
       if ((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&( Volume [i]> Volume [i+ 1 ]))
      {  
         if ((( Close [i]> Open [i])&&( Low [i]+( High [i]- Low [i])/ 2 > Low [i+ 1 ]+( High [i+ 1 ]- Low [i+ 1 ])* 0.9 ))||(( Close [i]< Open [i])&&( Low [i]+( High [i]- Low [i])/ 2 < Low [i+ 1 ]+( High [i+ 1 ]- Low [i+ 1 ])* 0.1 )))
         ExtMapBuffer1[i]=( iHigh ( Symbol (), 0 ,i)+ iLow ( Symbol (), 0 ,i))/ 2 ;
      }
     }
//----
   return ( 0 );
  }
denemek
Dosyalar:
gmxdk8j.mq4  6 kb
 
Gevorg Hakobyan :
Neden sen? Nerede denediğiniz ne fark eder? Soru, Point = 0 olabilir. Ve eğer yapabilirse, bir hatayla karşılaşmamak için kodu doğru bir şekilde nasıl yazabilirim: sıfıra bölme ?
Peki, ne istersen.
Bu yüzden bölmeden önce böleni sıfır için kontrol edin.
Sonuçla değil, nedenle ve buna karşılık gelen beceriksiz koltuk değneğiyle ilgilendiğinizi sanıyordum.
 
Artyom Trishkin :
Peki, ne istersen.
Bu yüzden bölmeden önce böleni sıfır için kontrol edin.
Sonuçla değil, nedenle ve buna karşılık gelen beceriksiz koltuk değneğiyle ilgilendiğinizi sanıyordum.
İletişim kutusunun tamamını okumadım, ancak beşinci ondalık basamağı yazdırmayla ilgili bir şeyden şüpheleniyorum.
 
Alexey Viktorov :
İletişim kutusunun tamamını okumadım, ancak beşinci ondalık basamağı yazdırmayla ilgili bir şeyden şüpheleniyorum.
Hayır, Point() ile bölünür ve sıfıra bölünür.
Bu yüzden, bir sembol üzerindeki verileri nasıl ve nerede aldığına dair net bir cevap almaya çalışıyorum.

 
Artyom Trishkin :
Hayır, Point() ile bölünür ve sıfıra bölünür.
Burada ayrıca, olduğu gibi ve sembol üzerindeki verileri nereden aldığına dair belirgin bir cevap elde etmeye çalışıyorum.

if(v=="NZD")
{
h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+
(iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+
(iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD",MODE_POINT)+
(iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+
(iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+
(iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+
(iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT);
}
 
Alexey Viktorov :
İletişim kutusunun tamamını okumadım, ancak beşinci ondalık basamağı yazdırmayla ilgili bir şeyden şüpheleniyorum.
Sorun bu olabilir mi?
 
Gevorg Hakobyan :
Sorun bu olabilir mi?
Numara. Bu, yalnızca yazdırırken ve uyarılarda beşinci karakterin görünmezliğidir.
 
Alekseu Fedotov :
denemek
Genel olarak, ihtiyaç duyulan şey, ancak sorun şu ki, açıklama oldukça büyük olacak ve bu yöntemle kelimenin tam anlamıyla birkaç kelime yazabilirsiniz - gerisi görüntülenmiyor
 

Merhaba.

Lütfen yardım et.

Şimdi her bir sonraki siparişin lotu 1, 2, 3, 4, 5 gibi artıyor...

Partinin her sipariş için değil, 3'lük bir adımla artmasını istiyorum,   Böyle   1, 1, 1, 2, 2, 2, 3, 3, 3…


extern double    LotStop        = 0.01 ;
extern double    Plus_LotStop   = 0.01 ;
extern double    Plus_N_ORD  = 3 ;         //каждые N ордеров
void OnTick ()
  {
//---
       for ( int i= 1 ; i<=OrdersStop; i++)
   {
         if (( Close [ 1 ]< Open [ 1 ]&& Close [ 2 ]> Open [ 2 ]&&NumberOfPositions( Symbol (), - 1 ,_Magic)< 1 ))
         {
            OPENORDER ( OP_BUYSTOP ,PriceBS,LOTs,_Magic,i);
            numB++;
            PriceBS = NormalizeDouble (PriceBS+Step_Stop* Point , Digits );
          
            OPENORDER ( OP_SELLSTOP ,PriceSS,LOTs,_Magic,i);
            numS++;
            PriceSS = NormalizeDouble (PriceSS-Step_Stop* Point , Digits );
         }
      
      LOTs=LOTs+Plus_LotStop;
      }
  }