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

 
AlexeyVik :

Pekala, üzgünüm, kaba olma. O zaman neden programlamayı rahatsız ediyorsun?

Gerçi ne için olduğunu açıklamak yerine kod parçaları yazanlar da çok. Beklemeli.

Ve açıklamayı tercih ederim ama parça yazmayı değil.

Anladım! Bunun gibi bir şey. TEŞEKKÜR.

int bar1=iBarShift(Symbol(), PERIOD_M1 ,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //ilk çubuk
int MaksVol=0;
int i=0, n=0;
(i=bar1; i>0; i--) için
{
//if(i<bar);
//if (ZamanDakika(Zaman[i])!=Dakika()) ara;
if (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=i;
}
//Yazdır(MaxVol, "MaxVol", n, "n");
}
tarihsaat MaxVolT = iTime(NULL, PERIOD_M1, n);

 
sashasonik :

Anladım! Bunun gibi bir şey. TEŞEKKÜR.

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //ilk çubuk
int MaksVol=0;
int i=0, n=0 ;
(i=bar1; i>0; i--) için
{
//if(i<bar);
//if (ZamanDakika(Zaman[i])!=Dakika()) ara;
if (iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i);
n=i;
}
//Yazdır(MaxVol, "MaxVol", n, "n");
}
tarihsaat MaxVolT = iTime(NULL, PERIOD_M1, n );

İşte tuhaf olan.

Artık kodu azaltmayı, basitleştirmeyi düşünebilirsiniz.

Burada ilk çubuğu buldunuz. Bu, diziye çok sayıda çubuğun kopyalanması gerektiği anlamına gelir. Böylece kodun üç satıra indirgendiği ortaya çıktı.

1. ilk çubuğu bulun.

2. birimleri ilk örneğe göre diziye kopyalayın

 int    CopyTickVolume (
   string            symbol_name,       // имя символа
   ENUM_TIMEFRAMES   timeframe,         // период
   int               start_pos,         // откуда начнем (с нулевого или первого)
   int               count,             // сколько копируем(первым пунктом определили)
   long              volume_array[]     // массив для копирования тиковых объемов (предварительно объявляем массив глобального уровня или локального)
   );

3. ArrayMaximum (bu diziden)


Ve neden n değişkenini kullandığınız açık değil.

 

Alıntı arşivi indir. İşte bir giriş örneği:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Alan başlıkları aşağıdaki gibidir: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
İlk 2 alan ne anlama geliyor?

 
PostoronnimV :

Alıntı arşivi indir. İşte bir giriş örneği:
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
Alan başlıkları aşağıdaki gibidir: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
İlk 2 alan ne anlama geliyor?

İlk üç sütun güvenli bir şekilde atılabilir, MT4 için teklif oluşturmak için pratik kullanımları yoktur.
 

Tünaydın!

EA'da birçok blok kullanıyorum, her blokta aynı gösterge var. Bir şekilde bu göstergeyi OnTick()'te bir kez bildirebilir miyim ve ardından her blokta ritmi yeniden bildirmem gerekmez mi?

 
abeiks :

Tünaydın!

EA'da birçok blok kullanıyorum, her blokta aynı gösterge var. Bir şekilde bu göstergeyi OnTick()'te bir kez bildirebilir miyim ve ardından her blokta ritmi yeniden bildirmem gerekmez mi?

Yapabilir
 
Nasıl? Lütfen bir örnekle gösteriniz.
 void OnTick ()
{
double MA_High = iMA ( NULL , 0 , 9 , 1 , MODE_EMA , PRICE_LOW , cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks :
Nasıl? Lütfen bir örnekle gösteriniz.
Farklı kod seviyelerinde bildirilen değişkenlerin görünürlüğü hakkında kılavuzu kullanın.
 double MA_High=0; 
void OnTick ()
{
double MA_High = iMA ( NULL , 0 , 9 , 1 , MODE_EMA , PRICE_LOW , cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive :
Farklı kod seviyelerinde bildirilen değişkenlerin görünürlüğü hakkında kılavuzu kullanın.
Teşekkür ederim!
 

Merhaba,

Lütfen bana neden uyarılar olduğunu söyleyin - değişken konumlarda (int komutundan sonra ve mesajdan sonra) 'dize'den 'sayıya' örtük dönüştürme ve 'sayı'dan 'dize'ye örtük dönüştürme. Bu aynı uyarı mı? Programlamada kötüyüm.

Ve bana daha fazlasını söyle, eğer kod çalışıyorsa, ama sadece uyarılar var, bu kötü mü? ne etkiler?

Ve bir soru daha, mesajda yerel saat nasıl gösterilir? mesaj= TimeLocal()+..... yazıyorum ve hiçbir şey olmuyor..


Kod parçacığı:

 if (last_sell_1_price== 0 || TimeCurrent ()-last_sell_1_price>alarm_limit_notification* 60 )
                 {
                   Print ( "" );
                   if (Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/ Point , 0 );
                     int sell2=DoubleToStr( (Bid - Price_Line2)/ Point , 0 );
                     int rsi=DoubleToStr(ExtRSIBuffer[ 0 ] - Price_RSI_Line, 2 );
                                  
                     message=
                     TimeCurrent ()+ "  (Level)" + "   \n" +
                     "\n" +
                     Symbol ()+ "  TF:" +TF_in_String()+ "   \n" +
                     "Price: " +DoubleToStr(Bid, 4 )+ "   \n" +
                     "sell_1: " +(sell1> 0 ? "+" : "" )+sell1+ "   \n" +
                     "sell_2: " +(sell2> 0 ? "+" : "" )+sell2+ "   \n" +
                     "RSI:  " +(rsi> 0 ? "+" : "" )+rsi;
  
                     SendNotification (message);
                     Print (message);
                     if (mail_message==on)
                     SendMail ( Symbol (),message);

                    }
                  last_sell_1_price= TimeCurrent ();
                 }
              }