MQL4'te programlama üzerine çevrimiçi kitabın beta sürümü - Sergey Kovalev (SK.) - sayfa 7

 

Ayrıca metnin OrderType () OrderOpenPrice () kullanarak neden parantezsiz işlevleri kullandığını merak ediyorum.

 
Climber :
 // Критерии закрытия ордеров

if
( _OrdersTotal == 1 ) //Выполнять следующее если открыт 1 ордер
{
OrderSelect ( 0 , SELECT_BY_POS ) ;
Tip = OrderType ;
OPrice = OrderOpenPrice ;

if ( Tip = 0 ) // Расчитать цену закрытия в зависимости от типа ордера (В=0,S=1)
{
Cprice = OPrice + ( TakeProfit * Point ) + Spread ;
if ( Bid >= Cprice )
{
Cls_B = True ;
}
}
if ( Tip = 1 )                 
{
Cprice = OPrice - ( TakeProfit * Point ) - Spread ;
if ( Ask <= Cprice )
{
Cls_S = True ;
}
}
Kodunuzda, hata parantezlerin yokluğunda değil, diğerlerinde, örneğin başka bir eşittir işaretinin olmaması durumunda (kırmızı ile işaretlenmiştir) daha olasıdır.
 
Yardımcı olmadı ==. Tüm aynı parantez hatalara yazılmıştır. Take pro ayarlandıysa kapanış kriterini koda yazmamak mümkün mü? Ya da, örneğin, fiyat aniden TP'ye yaklaşırsa ve TP'yi atlayarak bir tıkta birkaç puan aniden değişirse, çalışmayabilir mi?
 
Climber :
Ya da, örneğin, fiyat aniden TP'ye yaklaşırsa ve TP'yi atlayarak bir tıkta birkaç puan aniden değişirse, çalışmayabilir mi?


Teorik olarak bu mümkündür. Yani emir yine de kapanacak, ancak TP fiyatından değil, görünen ilk fiyattan kapatılabilir.
MQL4 Eğitimi -Ticaret İşlemleri -Ticaret İşlemlerini Yürütmek için Sipariş Özellikleri ve Kuralları'nı okumakla ilgileneceğinizi düşünüyorum. Sadece kayma ile benzer bir örnek var.

 
Programlamayı öğrenme aşamasında bir başka orijinal özellik - virgül koymak için her zaman İngilizce düzeninde virgül bulunan b harfine basıyorum))). Görünüşe göre Rusça yazıyorsunuz ve virgül koyduğunuzda Rus düzenini unutuyorsunuz.
 
Climber :
Programlamayı öğrenme aşamasında bir başka orijinal özellik - virgül koymak için her zaman İngilizce düzeninde virgül bulunan b harfine basıyorum))). Görünüşe göre Rusça yazıyorsunuz ve virgül koyduğunuzda Rus düzenini unutuyorsunuz.

Bu geçecek, bu yüzden birçok program Rusça kullanmadan İngilizce yazıyor, daha hızlı ve daha kolay, düzen sık sık değişmiyor ve daha sonra yorum gerekiyorsa, sadece sırasında programı Rusça'ya ayarlıyorlar. bu çalışma dönemi sadece Ruslaştırmak için daha uygun, bu yüzden böyle bir nedenden dolayı :) İngilizce düzeni, bu tür yazılarla uğraşanlar için temel oluşturur, yüzdesini tahmin ederseniz, Rusça en minimal ölçekte kullanılır. İngilizce düzeninin kullanımı, o zaman bu zamanın %99'udur. Bir zamanlar Rusça programlar yazmak istedim, ancak 1C ile eğlendikten sonra bu arzu ortadan kalktı.
 
Rosh :
Sorun düzeltildi ve düzeltilecek.

Şimdi https://book.mql4.com/en/metaeditor/compose adresinde resimler görüyorum
 

Mesajlarım kayboldu diye nasıl yaptığını merak ediyorum. Arkadaşlar dürüst değilsiniz. ve cevap verecek bir şey yoksa, söyle. Anlayacağım.

 

geriye sadece yazdıklarımın okuyup cevap verebildiğini ummak kalıyor.

 
İhtiyacım olan fonksiyonları forumda buldum. Biri, sayısına göre ZigZag ekstremumunun çubuk numarasını döndürür ve ikincisi, sayısına göre ZigZag ekstremumunu döndürür. İlki, yeni bir zikzak ekstremumunun ortaya çıkıp çıkmadığını belirlemeye yardımcı olacaktır (eğer sıfır zikzak çubuk numarası = 0 ise) ve bundan hareketle diğer kriterleri kontrol etmeye başlayın. İkincisi de işe yarayacaktır. Ama ikincisi için çok erken. Önce onunla uğraşmak isterim.

Bu işlevi aldım ve bir gösterge oluşturarak editöre attım. Hiçbir şey eklemedi veya çıkarmadı. Ve derlemede çok fazla hata vardı. Korku. Daha sonra sadece bu fonksiyon ile bir Expert Advisor oluşturmaya çalıştım. Benzer sonuç.((
 //+----------------------------------------------------------------------------+
//|  Возвращает номер бара экстремума ЗигЗага по его номеру.                   |
//|  Параметры:                                                                |
//|    sym - наименование инструмента  ("" - текущий символ)                   |
//|    tf  - таймфрейм                 ( 0 - текущий ТФ)                       |
//|    ne  - номер экстремума          ( 0 - текущий)                          |
//|    dp  - ExtDepth                                                          |
//|    dv  - ExtDeviation                                                      |
//|    bc  - ExtBackstep                                                       |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar ( string sym = "" , int tf = 0 , int ne = 0 , int dp = 12 , int dv = 5 , int bc = 3 ) {
  if ( sym == "" ) sym = Symbol () ;
  double zz ;
  int    i , k = iBars ( sym , tf ) , ke = 0 ;
 
  for ( i = 1 ; i < k ; i ++ ) {
    zz = iCustom ( sym , tf , " ZigZag " , dp , dv , bc , 0 , i ) ;
    if ( zz != 0 ) {
      ke ++;
      if ( ke > ne ) return ( i ) ;
    }
  }
  Print ( " GetExtremumZZBar(): Экстремум ЗигЗага номер " , ne , " не найден " ) ;
  return ( 0 ) ;
}
Burada sorun ne? Neden hatalar hakkında çığlık atıyor?