[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 489

 
silhouette :

Sipariş yerleştirme algoritmasının uygulanmasına biraz takıldı.

Sonuç olarak, bir bilet var, bir bilet aramak için bir koşul içeren bir arama ekliyorum:

Emirlerden herhangi biri sihirle eşleşirse, onu değiştiririz.

Başka bir görev daha var: emirlerin hiçbiri sihirle uyuşmuyorsa, o zaman yeni bir bekleyen emir verilmelidir. if(OrderMagicNumber()!=magic) burada çalışmıyor.

Bu koşul, üçüncü taraf kullanıcı tanımlı işlevlere başvurmadan nasıl uygulanabilir?

Her şey çok basit. Bazı boole değişkeni alın. Siparişleri işleme koymadan önce bunu false olarak ayarlayın. Sipariş işlenir işlenmez, doğru olarak değiştirin. Tüm emirleri kontrol ettikten sonra, değişkenin değerini kontrol edin - eğer yanlış kalırsa, gerekli sihire sahip tek bir emir yoktu. Yeni bir sipariş açın.

 
midorum :

Her şey çok basit. Bazı boole değişkeni alın. Siparişleri işleme koymadan önce bunu false olarak ayarlayın. Sipariş işlenir işlemez, doğru olarak değiştirin. Tüm emirleri kontrol ettikten sonra, değişkenin değerini kontrol edin - eğer yanlış kalırsa, gerekli sihire sahip tek bir emir yoktu. Yeni bir sipariş açın.

teşekkür etmek!
 

ATR göstergesinin nasıl çalıştığını anlamaya ve aynı zamanda kodunu incelemeye karar verdim. Özü anladım, ama garip bir şekilde yazılmış.

İşte başlatma işlevi:

 int start()
  {
   int i,counted_bars= IndicatorCounted ();
//----
   if ( Bars <=AtrPeriod) return ( 0 );
//---- initial zero
   if (counted_bars< 1 )
       for (i= 1 ;i<=AtrPeriod;i++) AtrBuffer[ Bars -i]= 0.0 ;
//----
   i= Bars -counted_bars- 1 ;
   while (i>= 0 )
     {
       double high=High[i];
       double low =Low[i];
       if (i== Bars - 1 ) TempBuffer[i]=high-low;
       else
        {
         double prevclose=Close[i+ 1 ];
         TempBuffer[i]= MathMax (high,prevclose)- MathMin (low,prevclose);
        }
      i--;
     }
//----
   if (counted_bars> 0 ) counted_bars--;
   int limit= Bars -counted_bars;
   for (i= 0 ; i<limit; i++)
      AtrBuffer[i]= iMAOnArray (TempBuffer, Bars ,AtrPeriod, 0 , MODE_SMA ,i);
//----
   return ( 0 );
  }
//+----------------

İşte yanlış anlaşılan ilk blok:

 //---- initial zero
   if (counted_bars< 1 )
       for (i= 1 ;i<=AtrPeriod;i++) AtrBuffer[ Bars -i]= 0.0 ;
//----

counted_bars<1 değeri varsa herhangi bir şey yapmanın anlamı nedir . Bence bu, göstergenin tek bir çubuk hesaplamadığı ve sadece işlevden çıkmanız gerektiği anlamına gelir, çünkü. henüz değer yok... Sorun ne?

AtrBuffer neden [Bars-i] dizinine sahip? Sonuçta, anladığım kadarıyla, buradaki nokta, değer yoksa, arabelleği 0.0'a ayarlayın. Ancak, 0.0 değerinin yalnızca (Bars) - (AtrPeriod) arasındaki barlar için ayarlandığı ve AtrPeriod ile 0th bar arasındaki arabelleğe hiçbir şey yazılmadığı hemen ortaya çıkıyor . Niye ya?

Bu kod parçasını anlamıyorum

Bir sonraki blokta:

 //----
   i= Bars -counted_bars- 1 ;
   while (i>= 0 )
     {
       double high=High[i];
       double low =Low[i];
       if (i== Bars - 1 ) TempBuffer[i]=high-low;
       else
        {
         double prevclose=Close[i+ 1 ];
         TempBuffer[i]= MathMax (high,prevclose)- MathMin (low,prevclose);
        }
      i--;
     }
//----

Çizgide:

 if (i== Bars - 1 ) TempBuffer[i]=high-low;

Koşul eğer i==Bars-1 . Soldaki grafiğin başından itibaren 1. çubuğun değerinin dikkate alındığı ortaya çıkıyor.. AMA bu çok uzak, bu değerin kullanımı nedir?

 

Yardıma ihtiyacınız var!

Danışmanın tüm açık ve bekleyen emirleri belirli bir düşüş seviyesinde, örneğin %30'da kapatmasını ve ardından yeniden başlamasını ve yeniden başlamasını nasıl sağlayabilirim???

Dosyalar:
 
OrderSend
(   string symbol, int cmd, double volume, double price, int slippage,
double stoploss, double takeprofit, string comment= NULL , int magic= 0 , datetime expiration= 0 , color arrow_color= CLR_NONE )

Lütfen söyleyin, sipariş verme işlevinde, bir tarih saat sona erme parametresi var, bekleyen bir siparişin çalışmaması durumunda örneğin 5 dakika sonra kendi kendine silinmesi için ne yazmalı? TimeCurrent()+300 veya değil mi?

 
BeerGod :

Lütfen söyleyin, sipariş ayarlama fonksiyonunda, bir tarih saat sona erme parametresi var, bekleyen siparişin çalışmaması durumunda örneğin 5 dakika sonra silinmesi için ne yazması gerekiyor? TimeCurrent()+300 veya değil mi?

Saniyeler yanılmıyorsam orada gösteriliyor. yani haklısın 5 dakika 300 olur . açılış saatini kesintisiz ve kârsız kullanmaya çalış ve kapanış saatini Print'te göster ve karşılaştır, ben bu şekilde yapıyorum.
 
Merhaba. anlamaya yardım etmeyi seviyorum, oran 0.10 stop 200pip, 200pip'e dayanmak için ne kadar ihtiyacım var?
 
laveosa :
Merhaba. anlamaya yardım etmeyi seviyorum, oran 0.10 stop 200pip, 200pip'e dayanmak için ne kadar ihtiyacım var?
Örneğin, hangi hesapta çalıştığınıza bağlı. normal veya yüzde. 0,01 lot için 1 puan = 1 cent (x10x200 = 20 USD) olur ve 0,01 lot için 1 puan = 10 cent (x10x200 = 200 USD) olur.
 
paladin80 :
Örneğin, hangi hesapta çalıştığınıza bağlı. normal veya yüzde. 0,01 lot için 1 puan = 1 cent (x10x200 = 20 USD) olur ve 0,01 lot için 1 puan = 10 cent (x10x200 = 200 USD) olur.
1 puan-1 sentim var. Yani 200 piplik bir stopa kadar bir hareketi sürdürmek için 20USD'ye ihtiyacım var?