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

 
mila.com :

Okudum ama dosyayı döngüden önce açacağımı asla tahmin edemezdim)

Belki yanlış okumuşumdur)
Yani bir dosyayı baştan sona satır satır okuma örneği bile var...
 

Ticaret yaparken Pinbar'dan uzaklaştıran bir danışman var. Robot, para birimlerinde doğru şekilde çalışır ve CFD'lerde kesinlikle öngörülemez.

Söyle bana, lütfen, bu nasıl olabilir?

 
RichLux :

Ticaret yaparken Pinbar'dan iten bir robot yazdım. Robot, para birimlerinde doğru şekilde çalışır ve CFD'lerde kesinlikle öngörülemez.

Söyle bana, lütfen, bu nasıl olabilir?

Her şey sizin için burada .
 

İşte böyle bir Pinbar algılama işlevi

 int Pin() { 
   double Close1 = iClose ( _Symbol , _Period , 1 ); 
   double Open1 = iOpen ( _Symbol , _Period , 1 ); 
   double Low1 = iLow ( _Symbol , _Period , 1 ); 
   double High1 = iHigh ( _Symbol , _Period , 1 ); 
   double Close2 = iClose ( _Symbol , _Period , 2 ); 
   double Open2 = iOpen ( _Symbol , _Period , 2 ); 
   double Low2 = iLow ( _Symbol , _Period , 2 ); 
   double High2 = iHigh ( _Symbol , _Period , 2 ); 
   if ( MathAbs (Close1-Open1)/(High1-Low1)<= BodyPercent) 
    { 
       if (Close1>High1 - BodyLocaut*(High1-Low1)&&Open1>High1-BodyLocaut*(High1-Low1)&&Low1<Low2-nose* _Point && High2>High1) 
           return ( 1 ); 
       if (Close1<Low1 + BodyLocaut*(High1-Low1)&&Open1<Low1+BodyLocaut*(High1-Low1)&&High1>High2+nose* _Point && Low2<Low1) 
           return (- 1 ); 
    } 
   return ( 0 ); 
}

Bunu danışmana eklediğimde, işlev (yani danışman, işlev koşullarına karşılık gelen çubuktan sonraki bir sonraki mum üzerinde anlaşmaları ayarlar) döviz çiftlerinde mükemmel bir şekilde çalışır. Ve CFD'lerde, anlaşmalar her yerde belirlenir.

CFD'ler ve döviz çiftleri arasındaki bu özelliğin farkı nedir?

 
RichLux :

İşte böyle bir Pinbar algılama işlevi

Bunu danışmana eklediğimde, işlev (yani danışman, işlev koşullarına karşılık gelen çubuktan sonraki bir sonraki mum üzerinde anlaşmaları ayarlar) döviz çiftlerinde mükemmel bir şekilde çalışır. Ve CFD'lerde, anlaşmalar her yerde belirlenir.

CFD'ler ve döviz çiftleri arasındaki bu özelliğin farkı nedir?

Her şeyden önce, &&'yi {} ile değiştirin, böylece koşulların her biri kendi bloğunda olur - daha sonra kontrol edilen sonucu her bir blokta yazdırabilirsiniz - günlüğe hangi değerleri aldığınıza bakın.
 
Artyom Trishkin :
Her şeyden önce, &&'yi {} ile değiştirin, böylece koşulların her biri kendi bloğunda olur - daha sonra kontrol edilen sonucu her bir blokta yazdırabilirsiniz - günlüğe hangi değerleri aldığınıza bakın.

Teşekkürler, tavsiyeye uydum - nerede aptal olduğumu anladım. Danışmanın beş basamaklı numara yapması ve CFD'nin sadece 2 basamak olması nedeniyle, danışmanın tepkisini en az 50 puan bekliyordum, ancak zaten 5'ten başladım. Künt.

Lütfen bu an için bana yardım et.

Kodda şu kısım var:

 MathAbs (Close1-Open1)/(High1-Low1)

Bazen Yüksek1=Düşük1 olur. Ardından test cihazı sıfıra bölmenin imkansız olduğu kritik bir hata veriyor.

Nasıl gezilir?

 
RichLux :

Teşekkürler, tavsiyeye uydum - nerede aptal olduğumu anladım. Danışmanın beş basamaklı numara yapması ve CFD'nin sadece 2 basamak olması nedeniyle, danışmanın tepkisini en az 50 puan bekliyordum, ancak zaten 5'ten başlayarak aldım. Künt.

Lütfen bu an için bana yardım et.

Kodda şu kısım var:

Bazen Yüksek1=Düşük1 olur. Ardından test cihazı sıfıra bölmenin imkansız olduğu kritik bir hata veriyor.

Nasıl gezilir?

Düşünemezsin:

 MathAbs ((Close1-Open1)/(High1-Low1> 0 ?High1-Low1: 0.00001 ))
 

Merhaba, derlerken bir sorunla karşılaştım:


geçersiz OnTick()

{

çift minimum fiyat=999999, mp, maksimum fiyat=-999999;

for(int i=0; i<10; i++)

{

mp = iLow(Simbol(), PERIOD_CURRENT, i);

if (mp < minfiyat)

minfiyat=mp;

}


for(int i=0; i<10; i++)

{

mp = iYüksek(Simbol(), PERIOD_CURRENT, i);

if (mp > maksimum fiyat)

maksimum fiyat=mp;

}

Comment("Minprice: " + DoubleToString(minprice, 5) + "\n"+

"Maxprice: " + DoubleToString(maxprice, 5));

}


Ders kitabında derleyicinin iLow ve iHigh'da yemin ettiği bu işlevler vardır ve Simbol() değişkeni orada satır modunda doğrudur, ancak orada örnekte başka bir sorunu çözerler. Yukarıdaki kodda neyi düzeltmem gerekiyor? Sıkıştım ve test etmek için döngüyü derleyemiyorum.

DERS KİTABIDAN

Mevcut tamamlanmamış çubuğa karşılık gelen değeri almanız gerekiyorsa, o zaman

start_pos=0 ve count=1 belirterek çağrının ilk formunu kullanabilirsiniz.

Misal:

#özellik telif hakkı "2009, MetaQuotes Software Corp."

#özellik bağlantısı "https://www.mql5.com"

#özellik sürümü "1.00"

#property description "Yüksek[i] ve Düşük[i] değerlerini görüntüleme örneği"

#özellik açıklaması "rastgele seçilen çubuklar için"

çift Yüksek[],Düşük[];

//+------------------------------------------- --------------------+

//| Belirli bir çubuk numarası için Düşük Al |

//+------------------------------------------- --------------------+

çift iLow ( dize sembolü , ENUM_TIMEFRAMES zaman çerçevesi, int indeksi)

{

çift düşük = 0;

ArraySetAsSeries(Düşük,doğru);

int kopyalanmış=CopyLow(sembol,zaman çerçevesi,0,Barlar(sembol,zaman çerçevesi),Düşük);

if(copied>0 && index<copied) low=Düşük[indeks];

dönüş(düşük);

}

//+------------------------------------------- --------------------+

//| Belirli bir çubuk numarası için Yüksek Alın |

//+------------------------------------------- --------------------+

double iHigh ( dize sembolü ,ENUM_TIMEFRAMES zaman çerçevesi,int indeksi)

{

çift yüksek=0;

ArraySetAsSeries(Yüksek,doğru);

int kopyalanmış=CopyHigh(sembol,zaman çerçevesi,0,Barlar(sembol,zaman çerçevesi),Yüksek);

if(copied>0 && index<copied) high=Yüksek[index];

dönüş(yüksek);

}

//+------------------------------------------- --------------------+

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
geratdc :

Merhaba, derlerken bir sorunla karşılaştım:


geçersiz OnTick()

{

çift minimum fiyat=999999, mp, maksimum fiyat=-999999;

for(int i=0; i<10; i++)

{

mp = iLow(Simbol(), PERIOD_CURRENT, i);

if (mp < minfiyat)

minfiyat=mp;

}


for(int i=0; i<10; i++)

{

mp = iYüksek(Simbol(), PERIOD_CURRENT, i);

if (mp > maksimum fiyat)

maksimum fiyat=mp;

}

Comment("Minprice: " + DoubleToString(minprice, 5) + "\n"+

"Maxprice: " + DoubleToString(maxprice, 5));

}


Ders kitabında derleyicinin iLow ve iHigh b değişkeni Simbol () 'de yemin ettiği bu işlevler var, işte satır modunda, doğru, ancak orada örnekte başka bir sorunu çözüyorlar. Yukarıdaki kodda neyi düzeltmem gerekiyor? Sıkıştım ve test etmek için döngüyü derleyemiyorum.

DERS KİTABIDAN

Mevcut tamamlanmamış çubuğa karşılık gelen değeri almanız gerekiyorsa, o zaman

start_pos=0 ve count=1 belirterek çağrının ilk formunu kullanabilirsiniz.

Misal:

#özellik telif hakkı "2009, MetaQuotes Software Corp."

#özellik bağlantısı "https://www.mql5.com"

#özellik sürümü "1.00"

#property description "Yüksek[i] ve Düşük[i] değerlerini görüntüleme örneği"

#özellik açıklaması "rastgele seçilen çubuklar için"

çift Yüksek[],Düşük[];

//+------------------------------------------- --------------------+

//| Belirli bir çubuk numarası için Düşük Al |

//+------------------------------------------- --------------------+

çift iLow ( dize sembolü , ENUM_TIMEFRAMES zaman çerçevesi, int indeksi)

{

çift düşük = 0;

ArraySetAsSeries(Düşük,doğru);

int kopyalanmış=CopyLow(sembol,zaman çerçevesi,0,Barlar(sembol,zaman çerçevesi),Düşük);

if(copied>0 && index<copied) low=Düşük[indeks];

dönüş(düşük);

}

//+------------------------------------------- --------------------+

//| Belirli bir çubuk numarası için Yüksek Alın |

//+------------------------------------------- --------------------+

double iHigh ( dize sembolü ,ENUM_TIMEFRAMES zaman çerçevesi,int indeksi)

{

çift yüksek=0;

ArraySetAsSeries(Yüksek,doğru);

int kopyalanmış=CopyHigh(sembol,zaman çerçevesi,0,Barlar(sembol,zaman çerçevesi),Yüksek);

if(copied>0 && index<copied) high=Yüksek[index];

dönüş(yüksek);

}

//+------------------------------------------- --------------------+


bu kelimede bir hata var Simbol(), Symbol() veya _Symbol yazmanız gerekiyor
 
Sergey Gritsay :

bu kelimede bir hata var Simbol() veya Symbol() veya _Symbol yazmanız gerekiyor

Teşekkürler, Simbol hatası, Symbol'ün doğru yazılmasıyla düzeltildi. iLow ve iHigh işlevlerinde bir sorun var. fotoğrafı gör

% olarak MQL 4 ve MQL 5 arasındaki genel benzerlik nedir? Aksi takdirde, her döngüde MQL4 video eğitimlerinde kafamı bu şekilde kıracağım.

Dosyalar:
1.png  64 kb