[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 662

 
drknn :


Doğru, çünkü ilk parametre bir sayı döndürür ve ikincisi - izin verilen sınırlar içinde bir tamsayı değeri. Bütün soru, değişkende tam olarak ne yatacağıdır. Olduğu gibi yazdırmayı deneyin ve şu yapıyı deneyin:

İlginç çıkıyor ... Bunu yaptım:

 int Trend_BBOsMA ( string sy, int tf)
{
   if (sy== "" || sy== "0" ) sy= Symbol ();
double
   BB    = iCustom (sy,tf, "BB_MA" , 13 , 13 , 0 , 1 ),
   OsMA  = iOsMA   (sy,tf, 9 , 21 , 5 , PRICE_CLOSE , 1 ),
   AC1   = NormalizeDouble ( iAC (sy,tf, 1 ), 8 ),
   AC2   = NormalizeDouble ( iAC (sy,tf, 2 ), 8 ),
   AC3   = NormalizeDouble ( iAC (sy,tf, 3 ), 8 );
   
   Comment ( "\n" , "AC1 = " ,AC1, " AC2=" ,AC2);
   string str1=AC1;
   Print ( "str1 = " ,str1);
   string str2=AC2;
   Print ( "str2 = " ,str2);
   
   if (BB> 0 && OsMA> 0 && AC1>AC2) return ( 1 );
   if (BB< 0 && OsMA< 0 && AC1<AC2) return (- 1 );
   else return ( 0 );
}
Aynı zamanda, ekranda Yorum görüntülenir.

AC1 = 0,001 AC2 = 0,001,

Veri penceresinde AC1 = 0.001008, AC2 = 0.001020,

ve günlük diyor ki (son iki değer):

0.00100029
0,00100771

 
IgorM :

Bir fonksiyonun ekstremumlarını nasıl bulacağımı bulamıyorum

Değerleri depolayan bir dizi veriye sahibim:

molalar nasıl bulunur - 250 öğelik bir veri dizisini kullanarak uç noktalar ve yalnızca bu uç noktaların bulunduğu öğe numaralarını kaydedin


beyler işiniz zor :)
Ayrıca basit bir yöntem de yazabilirsiniz:

 //+------------------------------------------------------------------+
void searchExtremums( double base [], double &find[]){
   int step = 1 ;
   for ( int loop = 0 ; loop < ArraySize( base )-2; loop++){
      if (( base [loop] > base [loop+ 1 ] && base [loop+ 1 ] < base [loop+ 2 ]) || ( base [loop] < base [loop+ 1 ] && base [loop+ 1 ] > base [loop+ 2 ])){
         ArrayResize(find, step);
         find[step - 1 ] = base [loop+ 1 ];
         step++;
      }
   }   
}
//+------------------------------------------------------------------+

İçinde ekstrema (taban) bulmanız gereken bir diziyi ve bunları yazmanız (bulmanız) gereken bir diziyi iletirsiniz, Vladimir dizisi için bir çağrı örneği:

 double res[];
searchExtremum(my_array, res);

Ve sonucu göster:

 for ( int s = 0 ; s < ArraySize (res); s++) Alert (res[s])
Yani daha kolay gibi :)
 
ToLik_SRGV :


Yani daha kolay gibi :)


Tamam bugün kontrol etmeye çalışacağım, akım daha kolay olabilir ama kombinler kafama uymuyor

void searchExtremums(çift taban[], çift ve bul[]){

Şimdi bu işlevleri kontrol etmem gerekiyor

 
IgorM :

Tamam bugün kontrol etmeye çalışacağım, akım daha kolay olabilir ama kombinler kafama uymuyor

void searchExtremums(çift taban[], çift ve bul[]){

Şimdi bu işlevleri kontrol etmem gerekiyor

Igor, bu konuya bu giriş hakkında zaten yazdım :)))

Bir değişkeni bir fonksiyona parametresi aracılığıyla geçirirken, değişken değere göre iletilir, yani fonksiyondaki değişkeni değiştirmek, üzerine yazılmasına yol açmaz.
Referans ile geçmeye çalışın, bunu yapmak için parametre adından önce "&" sembolünü ekleyin

 void simple( string &s){
//                 ^
//       спец сим. & перед именем переменной задает передачу по ссылке, а не по значению
//
}
 
Mathemat :

Volfram'ın gönderisi birden fazla konuya yayıldığı için kaldırıldı.

Volfram , Bu amaç için özel olarak kendi şubenizi oluşturdunuz. Size zaten cevap verildi; Bu yeterli değil?

Not: Sana bir sır vereceğim, Volfram : Fikrinize açık bir ilginin olmaması, örtük olarak bu fikrin ilgiyi hak etmediğini gösterir. Buna göre, "ücretsiz" uygulamaya istekli kimse yoktu.

E-posta bildirim seçeneğini devre dışı bıraktınız.

Bu olmadan, nerede cevap verdiklerini ve nerede vermediklerini nasıl öğrenebilirsiniz? Bu seçeneği ne zaman iade edeceksiniz?

 
artmedia70 :

İlginç çıkıyor ... Bunu yaptım:

Aynı zamanda, ekranda Yorum görüntülenir.

AC1 = 0,001 AC2 = 0,001,

Veri penceresinde AC1 = 0.001008, AC2 = 0.001020,

ve günlük diyor ki (son iki değer):

0.00100029
0,00100771


Eh, bu muhtemelen geliştiriciler içindir;)
 
artmedia70 :

İlginç çıkıyor ... Bunu yaptım:

Aynı zamanda, ekranda Yorum görüntülenir.

AC1 = 0,001 AC2 = 0,001,

Veri penceresinde AC1 = 0.001008, AC2 = 0.001020,

ve günlük diyor ki (son iki değer):

0.00100029
0,00100771

Ben de denedim, yorumda her şey normal görünüyor:
AC = -0.0004, günlüğe kaydedildi -0.00035586
AC2 = -0.0007, günlük -0.00068589
 
ToLik_SRGV :
Ben de denedim, yorumda her şey normal görünüyor:
AC = -0.0004, günlüğe kaydedildi -0.00035586
AC2 = -0.0007, günlük -0.00068589

Görünüşe göre Comment() değerleri kendi içinde yuvarlar... Ve bazen görsel test sırasında onları tam orada ekranda görmek ne kadar uygun... Ancak tam olarak değil... :)

Evet ve bu arada, burada normalleşme forumunda sabah 7.30'a kadar birkaç saat bunu okudum ...
Normalleştirme, karşılaştırma işlemine mümkün olduğunca yakın yapılmalı... O yüzden bazı işlevlerde ve kodlarda bir şeyler değiştirmem gerektiğini düşünüyorum... Sonra test farkı gösterecek...

 
artmedia70 :

Görünüşe göre Comment() değerleri kendi içinde yuvarlar... Ve bazen görsel test sırasında onları tam orada ekranda görmek ne kadar uygun... Ancak tam olarak değil efendim... :)

Bu tür yuvarlamalar nedeniyle parti yönetimi fonksiyonunu yazarken Delphi'de bir dll-kütüphanesi yapmak zorunda kaldım, çünkü MQL4 aracılığıyla ihtiyacım olan görev hiç çözülebilir değildi...
 

Merhaba! Lütfen bana MQL4'te süper bir çaydanlık nasıl doğru yapılacağını açıklayın. İlk danışmanı yazıyorum. Bir SellStop siparişi ayarlanır ve tetiklendikten sonra BuyStop ayarlanır. Bence OrdeCloseTime kullanılmalıdır. Birçok seçeneği denedim ama EA siparişi yalnızca OrdeCloseTime==0 olduğunda görüyor. SellStop kapatıldıktan sonra SellStop tekrar açılır. kodunu veriyorum. Bu seçenekte SellStop ve BuyStop aynı anda açılır. Bana yardım et lütfen. Şimdiden teşekkürler.

int ben = 0;

int başlangıç()

{

eğer (ben < 1)

{

bilet=SiparişGönder(Symbol(),OP_SELLSTOP,Lot,OP_SS,Kayma,SL,CP_SS);

eğer (bilet>0)

{ Alert("OrderSend"," ",bilet); } başka { Alert("!OrderSend"," ", GetLastError() ); }

//------------------------------------------------ --------------------------

if (OrderSelect(bilet,SELECT_BY_TICKET)==true)

{ Alert("OrderSelect"," ",bilet); } başka { Alert("!OrderSelect"," ",GetLastError()); }

//------------------------------------------------ --------------------------

OrderSend(Symbol(),OP_BUYSTOP,Lot,OP_BS,Kayma,SL,CP_BS);

}

ben=1;

}

dönüş(0);

//------------------------------------------------ --------------------------