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

Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
anlamaya çalışıyorum. Onlar. sizce doğru seçenek SVA_03 değil mi?
Evet belki. Ama _02 kesinlikle yanlıştır.
Hmmm... Kendimde bir hata buldum, şimdi neredeyse hiç fark yok, işte orijinali
//| SVA_04.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod= 14 ;
extern int Levl= 50 ;
extern int TF= 0 ;
//---- buffers
double MABuffer[];
double PosBuffer[];
double NegBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers ( 1 );
SetIndexBuffer ( 0 ,MABuffer);
SetIndexBuffer ( 1 ,PosBuffer);
SetIndexBuffer ( 2 ,NegBuffer);
//---- indicator line
SetIndexStyle ( 0 , DRAW_LINE );
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name= "RSI(" +RSIPeriod+ ")" ;
IndicatorShortName (short_name);
SetIndexLabel ( 0 ,short_name);
SetIndexLabel ( 1 , "U" );
SetIndexLabel ( 2 , "D" );
return ( 0 );
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars= IndicatorCounted ();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if ( Bars <=RSIPeriod) return ( 0 );
if (TF!= 0 )
{
string name= WindowExpertName ();
for (i= 0 ; i< Bars -counted_bars+ 1 ; i++)
{
int barIndex= iBarShift ( NULL ,TF, Time [i], false );
MABuffer[i]= iCustom ( Symbol (),TF,name,RSIPeriod,Levl, 0 , 0 ,barIndex);
}
return ( 0 );
}
i= Bars -RSIPeriod- 1 ;
if (counted_bars>=RSIPeriod) i= Bars -counted_bars- 1 ;
while (i>= 0 )
{
double sumn= 0.0 ,sump= 0.0 ;
if (i== Bars -RSIPeriod- 1 )
{
int k= Bars - 2 ;
//---- initial accumulation
while (k>=i)
{
rel= Close [k]- Close [k+ 1 ];
if (rel> 0 ) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel= Close [i]- Close [i+ 1 ];
if (rel> 0 ) sump=rel;
else sumn=-rel;
positive=(PosBuffer[i+ 1 ]*(RSIPeriod- 1 )+sump)/RSIPeriod;
negative=(NegBuffer[i+ 1 ]*(RSIPeriod- 1 )+sumn)/RSIPeriod;
}
PosBuffer[i]=positive;
NegBuffer[i]=negative;
i--;
}
i= Bars -RSIPeriod- 1 ;
if (counted_bars>=RSIPeriod) i= Bars -counted_bars- 1 ;
while (i>= 0 )
{
x=PosBuffer[i+ 1 ];
y=NegBuffer[i+ 1 ];
if (x> 0 )sma= Close [i+ 1 ]+x;
else sma= Close [i+ 1 ]-y;
MABuffer[i]=sma;
i--;
}
//----
return ( 0 );
}
//+------------------------------------------------------------------+
İşte düzeltmeli SVA_03 varyantı
//| SVA_03.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
extern int RSIPeriod= 14 ;
extern int Levl= 50 ;
extern int TF= 0 ;
//---- buffers
double MABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers ( 1 );
SetIndexBuffer ( 0 ,MABuffer);
//---- indicator line
SetIndexStyle ( 0 , DRAW_LINE );
//----
//---- name for DataWindow and indicator subwindow label
// short_name="RSI("+IntegerToString(RSIPeriod)+")";
short_name= "RSI(" +RSIPeriod+ ")" ;
IndicatorShortName (short_name);
SetIndexLabel ( 0 ,short_name);
return ( 0 );
}
//+------------------------------------------------------------------+
//| Relative Strength Index |
//+------------------------------------------------------------------+
int start()
{
int i,counted_bars= IndicatorCounted ();
double rel,negative,positive,sma,x,y,Pos,Neg;
//----
if ( Bars <=RSIPeriod) return ( 0 );
if (TF!= 0 )
{
string name= WindowExpertName ();
for (i= 0 ; i< Bars -counted_bars+ 1 ; i++)
{
int barIndex= iBarShift ( NULL ,TF, Time [i], false );
MABuffer[i]= iCustom ( Symbol (),TF,name,RSIPeriod,Levl, 0 , 0 ,barIndex);
}
return ( 0 );
}
i= Bars -RSIPeriod- 1 ;
if (counted_bars>=RSIPeriod) i= Bars -counted_bars- 1 ;
while (i>= 0 )
{
double sumn= 0.0 ,sump= 0.0 ;
if (i== Bars -RSIPeriod- 1 )
{
int k= Bars - 2 ;
//---- initial accumulation
while (k>=i)
{
rel= Close [k]- Close [k+ 1 ];
if (rel> 0 ) sump+=rel;
else sumn-=rel;
k--;
}
positive=sump/RSIPeriod;
negative=sumn/RSIPeriod;
}
else
{
//---- smoothed moving average
rel= Close [i]- Close [i+ 1 ];
if (rel> 0 ) sump=rel;
else sumn=-rel;
positive=(Pos*(RSIPeriod- 1 )+sump)/RSIPeriod;
negative=(Neg*(RSIPeriod- 1 )+sumn)/RSIPeriod;
}
x=Pos;
y=Neg;
Pos=positive;
Neg=negative;
if (x> 0 )sma= Close [i+ 1 ]+x;
else sma= Close [i+ 1 ]-y;
MABuffer[i]=sma;
i--;
}
//----
return ( 0 );
}
//+------------------------------------------------------------------+
orada değiştirildi
y=negative;
üzerinde
y=Neg;
Tünaydın!
Yardım! Bekleyen bir siparişi açacak bir koda ihtiyacınız var. Ve sipariş açıldıktan 20 dakika sonra kapatılmazsa SL 50 puana dönüşecektir. Teşekkür ederim!
Tünaydın
Lütfen bana çok basit (muhtemelen) bir soruyla yardım edin. Standart bir işlev vardır:
"const void &" ne anlama geliyor ve nasıl kullanılır? Benzer bir işlevi yazmaya yönelik basit bir girişim bile derleme hatasıyla sonuçlanır:
return ArraySize (array);
}
Derleme hatası: 'const' - 'void' türünün yasa dışı kullanımı
Kodunuzu yazarken "const void &" kullanmanın doğru yolu nedir ? Ve hiç mümkün mü?
Tünaydın
Lütfen çok basit (muhtemelen) bir soruyla yardım edin. Standart bir işlev vardır:
"const void &" ne anlama geliyor ve nasıl kullanılır? Benzer bir işlevi yazmaya yönelik basit bir girişim bile derleme hatasıyla sonuçlanır:
return ArraySize (array);
}
Derleme hatası: 'const' - 'void' türünün yasa dışı kullanımı
Kodunuzu yazarken "const void &" kullanmanın doğru yolu nedir ? Ve hiç mümkün mü?
Dizinin depolamasını istediğiniz veri türüyle void'i değiştirin. Standart işlev bir şablon olarak çerçevelenmiştir.
Aslında, bu sistem işlevi aşırı yüklenmiştir ve böyle bir aşırı yüklemenin tüm uygulaması MQL4 programlarının geliştiricisinden gizlenmiştir:
int DiziSize (
boşluk & sıralamak[] // kontrol edilen dizi
);
Yani, aslında, MQL4 dilinin derleyicisi, bu işleve yapılan her çağrı için gerekli uygulamayı, örneğin tamsayı türündeki diziler için, bunun gibi bir şeyle değiştirir:
int DiziSize (
int & sıralamak[] // int türünden öğeler içeren dizi
);
Ve tarihsel veri biçiminde tırnak işaretleri ile çalışmak için MqlRates türünden bir dizi için, ArraySize() işlevi aşağıdaki gibi temsil edilebilir:
int DiziSize (
MqlOranlar & sıralamak[] // MqlRates türü değerleriyle dolu dizi
);
Tünaydın!
Yardım! Bekleyen bir siparişi açacak bir koda ihtiyacınız var. Ve emir açıldıktan 20 dakika sonra kapatılmazsa SL 50 puana dönüşecektir. Teşekkür ederim!
void'i dizinin depolaması gereken veri türüyle değiştirin. Standart işlev bir şablon olarak çerçevelenmiştir.
Aslında, bu sistem işlevi aşırı yüklenmiştir ve böyle bir aşırı yüklemenin tüm uygulaması MQL4 programlarının geliştiricisinden gizlenmiştir.
MQL4/MQL5'te "const void &" yapısının aslında referans kitabı için sembolik bir gösterim olduğunu ve pratikte fonksiyonlarınızda bu şekilde yazmanın imkansız olduğunu doğru anladım mı?
Şimdiden teşekkürler
MQL4/MQL5'te "const void &" yapısının aslında referans kitabı için sembolik bir gösterim olduğunu ve pratikte fonksiyonlarınızda bu şekilde yazmanın imkansız olduğunu doğru anladım mı?
Şimdiden teşekkürler