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

 
ModRed :
Bir MA göstergesi var. Ve benzer bir HMA var. Bir Expert Advisor'a nasıl eklenebilir? Kodu tamamen kopyala? Yoksa daha kısa bir versiyonu var mı?

iCustom'u öğren
 
Mitruha :

Fikir çok güzel ama işlemleri başka terminallere aktaracak veya kopyalayacak programları burada görmediniz.Bir komisyoncu hizmetleri olmadan çalışır mı, iyi yapılabilir mi?

Böyle mi?
 
ModRed :
Bir MA göstergesi var. Ve benzer bir HMA var. Bir Expert Advisor'a nasıl eklenebilir? Kodu tamamen kopyala? Yoksa daha kısa bir versiyonu var mı?
Nasıl yapılır .
[Deleted]  

Herkese selamlar Bir sorunum var - göstergeyi "kaybettim". Bu, iki parametreyi değiştirmenin mümkün olduğu bir tür düzleştirilmiş CCI'dir - bir nokta ve bir tür çarpan. Orijinal versiyonda, bu parametreler sırasıyla 20 ve 2'ye eşittir Ve her şeyi doğru hatırlıyorsam, bu göstergenin adı iki kelimeden oluşuyordu ve ikinci kelime İngilizce "C" harfiyle başladı.Birdenbire kim bilir, yardım edin!

[Silindi]  
alsu :

Ancak genel olarak, elbette, yapıcıyı aşırı yükleyebilir ve Init () yerine kullanabilirsiniz, sonuçta bu aynı işlevdir. Hangi seçeneğin seçileceği herkes için kişisel bir meseledir, zevk konularında, bildiğiniz gibi, danışman yoktur)


Başlatma başarısız olursa, örneğin Init () gibi bir yöntemin kullanılması durumunda, bunu ilgili türde bir değer döndürme olarak tanımlayabilir ve bir hata durumunda karşılık gelen değeri döndürebilirsiniz. Çağıran kod bu nedenle başarısız başlatmanın farkındadır ve bu nedenle nesne kullanılamaz. Bir kurucu kullanılıyorsa, çağıran kod başarısız başlatma hakkında nasıl bilir?

 

Yardım edin beyler, baykuşun pozisyon daha önce bir sinyalle açıldığı gibi aynı çubukta bir emir açmamasını, ancak yeni bir çubuk bekleyip sinyali tekrar kontrol etmesini nasıl sağlar, böyle mi yaptı - çubuk çubuk

bunu ekledi -

 datetime    BARflag  = 0 ; 
ve -
 int start()
{
 datetime now = Time[ 0 ];
   if (BARflag >= now) return ( 0 );
   BARflag = now;
 
bergkamp. :

Yardım edin beyler, baykuşun pozisyon daha önce bir sinyalle açıldığı gibi aynı çubukta bir emir açmamasını, ancak yeni bir çubuk bekleyip sinyali tekrar kontrol etmesini nasıl sağlar, böyle mi yaptı - çubuk çubuk

bunu ekledi -

ve -

Bunun gibi bir şey:

   //---
   if (iBarShift(OrderSymbol(), Period (),OrderOpenTime())== 0 ) {
       // выбранный ордер открыт на нулевом (текущем) баре, значит ещё рано открывать следующий
      }
   else {
       // выбранный ордер открыт не на нулевом (текущем) баре, значит можно открывать следующий
      }
 
artmedia70 :

Bunun gibi bir şey:

Teşekkürler, bir örnek için öngörülen satırları deşifre etmeyi zorlaştırmaz mı?--//seçilen sipariş sıfır (akım) çubuğunda açık, bir sonrakini açmak için çok erken olduğu anlamına geliyor

// seçilen sipariş sıfır (geçerli) çubuğunda açılmaz, böylece bir sonrakini açabilirsiniz...???

 
bergkamp. :

Teşekkürler, örneğin belirtilen satırları deşifre etmeyi zorlaştırmaz mı?--//seçilen sipariş sıfır (mevcut) çubuğunda açık, bir sonrakini açmak için çok erken demek

// seçilen sipariş sıfır (geçerli) çubuğunda açılmaz, böylece bir sonrakini açabilirsiniz...???

İşte son açık pozisyonun açık çubuğunu döndüren bir fonksiyon:

 //+------------------------------------------------------------------+
   int BarOpenLastPos( string sy, int timeframe, int op, int mn) {
       datetime t= 0 ;
       int       i, j=- 1 , k= OrdersTotal ()- 1 ;
       for (i=k; i>= 0 ; i--) {
         if ( OrderSelect (i, SELECT_BY_POS)) {
             if (OrderSymbol()!=sy)         continue ;
             if (OrderType()!=op)           continue ;
             if (OrderMagicNumber()!=mn)   continue ;
             if (t<OrderOpenTime()) {
               t=OrderOpenTime();
               j=i;
               }
            }
         }
       if ( OrderSelect (j, SELECT_BY_POS)) return (iBarShift(sy,timeframe,OrderOpenTime()));
       return (- 1 );
   }
//+------------------------------------------------------------------+

İşlev -1 döndürürse, verileri işleve aktarılan açık pozisyon yoktur.

Kullanım örneği:

 if (BarOpenLastPos( Symbol (), Period (), OP_BUY, magic)> 0 ) {
   // бар открытия последней открытой позиции Buy на текущем символе, текущем таймфрейме, 
   // с магиком magic больше нулевого --> можно открывать следующую позицию
   }

veya

 if (BarOpenLastPos(USDCAD, PERIOD_M15 , OP_SELL, magic0)< 0 ) {
   // нет позиций Sell на USDCAD с магиком magic0 --> можно открывать позицию на USDCAD
   }
 

Uzmanlar sizden yardım istiyor...

test01 algoritması

 //+------------------------------------------------------------------+
//test                                                                    
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1  clrGold
#property indicator_color2  clrBlue

#property indicator_level1    0

//--- indicator buffers
double Buf0[];
double Buf1[];

double t1[];
double t2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(4);
   SetIndexBuffer(0,Buf0); SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(1,Buf1); SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,t1); 
   SetIndexBuffer(3,t2); 
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
   
   {
   int i,counted_bars;
   counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   
int sr=24,n;
double sum,sum2;
double m1,m2;

  
   while(i>=0)
   {
   sum=0;
   sum2=0;
   
   for(n=i; n<=i+sr-1; n++) 
   {
   if(Open[i]>Open[i+1]) m1=sum=sum+Close[i]-Close[n];
   if(Open[i]<Open[i+1]) m2=sum=sum+Close[i]-Close[n];
   
   if(Open[i]>Open[i+1]) t1[i]=sum2=sum2+Close[i]-Close[n];
   if(Open[i]<Open[i+1]) t2[i]=sum2=sum2+Close[i]-Close[n];
   }
     
   Buf0[i]=(m1+m2)/sr;
   Buf1[i]=(t1[i]+t2[i])/sr;
   
   i--;
   }
return(0);
  }
//+------------------------------------------------------------------+

Buf1 neden Buf0'dan farklı değerlere sahip? mantıksal olarak aynı mı olmalılar?

Neden değişken aracılığıyla bazı değerler ve arabellek (veri dizisi) --> aracılığıyla diğer değerler var (dizi daha fazla hesaplama için gereklidir)? m1 ve m2 değişkenlerinin yanı sıra dizi aracılığıyla nasıl yapılır

Dosyalar:
test01.mq4  2 kb