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

 

Herkese iyi günler.

Dizileri öğreniyorum.

Lütfen ihtiyacım olan değeri diziden nasıl çıkaracağımı söyle.

Anladığım kadarıyla değeri sildikten sonra dizinin boyutu küçülecek ve muhtemelen

dizinin boyutu için yeni bir değerin de belirtilmesi gerekecektir.

Dizinde bir dizi değerini silen bir işlev bulamadım. Lütfen bana tüm sürecin nasıl göründüğünü göster. dizi değerini silme

böylece kaldırıldıktan sonra dizi daha fazla çalışacaktır.

Teşekkür ederim.

İşte ihtiyacım olan şeye özel bir örnek.

 int start()                                             
{

double mass[ 3 ]=
{
1.2414 ,
1.2438 ,
1.2874
};

double value =   Bid ;
int S = ArrayBsearch (mass,  value,   WHOLE_ARRAY ,   0 , MODE_ASCEND );

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend ( Symbol (), OP_SELL , 0.1 , Bid , 3 , Ask + 400 * Point , Ask - 200 * Point , "jfh" , 123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY :

Herkese iyi günler.

Dizileri öğreniyorum.

Lütfen ihtiyacım olan değeri diziden nasıl çıkaracağımı söyle.

Anladığım kadarıyla değeri sildikten sonra dizinin boyutu küçülecek ve muhtemelen

dizinin boyutu için yeni bir değerin de belirtilmesi gerekecektir.

Dizinde bir dizi değerini silen bir işlev bulamadım. Lütfen bana tüm sürecin nasıl göründüğünü göster. dizi değerini silme

böylece kaldırıldıktan sonra dizi daha fazla çalışacaktır.

Teşekkür ederim.

İşte ihtiyacım olan şeye özel bir örnek.

Diziyi "kendisine" kopyalayabilir ve ardından dizinin boyutunu 1 azaltarak değiştirebilirsiniz. Dizinin sıfır indeksini kaldırıp ikincisini dolduran bir örnek, ancak kopyalama herhangi bir dizinden herhangi bir sayıda yapılabilir. elementler.

İkinci seçenek, "boş" alandaki son değerin üzerine yazmak ve ayrıca dizinin boyutunu azaltmaktır.

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov :

Diziyi "kendine" kopyalayabilir ve ardından dizinin boyutunu 1 azaltarak değiştirebilirsiniz. Dizinin sıfır indeksini kaldırıp sonuncusunu doldurmaya bir örnek, ancak kopyalama herhangi bir dizinden herhangi bir sayıda yapılabilir. elementler.

İkinci seçenek, "boşaltılmış" alandaki son değerin üzerine yazmak ve ayrıca dizinin boyutunu azaltmaktır.

Bahşiş için çok teşekkürler.
 

İyi sağlık!!! Bana açıkla, yeni başlayan biri olmasa da, tek bir problemle korkunç bir şekilde berbat oldu. Göstergeden göstergeyi çağırırım. Yeni bir çubuk göründüğünde, bazı değerler, tam orada yeniden derlerken tamamen farklı değerler alıyorum. Göstergenin zamana göre hesaplanmasındaki gecikme hiçbir şeye yol açmaz. Sonuç olarak, otomatik almak hiç çalışmıyor. Soru. NİYE YA???? Zaten o kadar yıprandım ki gücüm kalmadı. Ne inanılmaz bir aksaklık ... Sona kadar çekti ...

 

Merhaba! Fiyatın onları aşması koşuluyla, sinyal seviyelerinin hareket etme sorununu hiçbir şekilde çözemiyorum. Derleme sırasında her şey yolundadır, ancak test cihazında "uygun" bir koşul oluştuğunda hiçbir şey değişmez. Fiyatın sinyal seviyelerinin ötesine geçmesi koşulunda neyin yanlış olduğunu söyler misiniz?

 //-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price= iHigh ( Symbol (), PERIOD_M15 , 0 );                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate ( "UrO" , OBJ_HLINE , 0 , 0 ,price);
 ObjectSet ( "UrO" , OBJPROP_COLOR , clrYellowGreen );                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+ 30 * Point ;                                                                             //Сигнальный уровень А(Максимум)
 ObjectCreate ( "UrA" , OBJ_HLINE , 0 , 0 ,priceA);
 ObjectSet ( "UrA" , OBJPROP_COLOR , clrDarkSlateBlue ); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price- 30 * Point ;                                                                             //Сигнальный уровень B(Минимум)
 ObjectCreate ( "UrB" , OBJ_HLINE , 0 , 0 ,priceB); 
 ObjectSet ( "UrB" , OBJPROP_COLOR , clrOrangeRed ); 
//--------------------------------------------------------------------------
if (( Bid >=priceA) ||( Bid <=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
   ObjectSet ( "UrO" , OBJPROP_PRICE1 , iHigh ( Symbol (), PERIOD_M15 , 0 ));  
                                                                                             

Teoride, fiyat "UrA" veya "UrB" nin üzerine çıkarsa , "UrO" seviyesi m15'e kadar son mumun maksimum değerine hareket etmelidir, ancak bu olmaz. Nedenini bilen var mı?

 
vikzip :

Merhaba! Fiyatın onları aşması koşuluyla, sinyal seviyelerinin hareket etme sorununu hiçbir şekilde çözemiyorum. Derleme sırasında her şey yolundadır, ancak test cihazında "uygun" bir koşul oluştuğunda hiçbir şey değişmez. Fiyatın sinyal seviyelerinin ötesine geçmesi koşulunda neyin yanlış olduğunu söyler misiniz?

Teoride, fiyat "UrA" veya "UrB" nin ötesine geçerse, "UrO" seviyesi m15'e kadar son mumun maksimum değerine kaymalıdır, ancak bu olmaz. Nedenini bilen var mı?


ObjectMove() ile ilgili sorun nedir?

 
Vitalie Postolache :

ObjectMove() ile ilgili yanlış olan nedir?


Teşekkürler!!!)

 
Vitalie Postolache :

ObjectMove() ile ilgili sorun nedir?


İşlev harika! Bu yüzden koşul karşılanmıyor! nedenini bilen var mı???

   double price;                                                                                     //цена сердцевины
   double priceA;                                                                                   //цена верхнего сигнального уровня
   double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price= iHigh ( Symbol (), PERIOD_M15 , 0 );                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate ( "UrO" , OBJ_HLINE , 0 , 0 ,price);
ObjectSet ( "UrO" , OBJPROP_COLOR , clrYellowGreen );                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+ 30 * Point ;                                                                             //Сигнальный уровень А(Максимум)
ObjectCreate ( "UrA" , OBJ_HLINE , 0 , 0 ,priceA);
ObjectSet ( "UrA" , OBJPROP_COLOR , clrDarkSlateBlue ); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price- 30 * Point ;                                                                             //Сигнальный уровень B(Минимум)
ObjectCreate ( "UrB" , OBJ_HLINE , 0 , 0 ,priceB); 
ObjectSet ( "UrB" , OBJPROP_COLOR , clrOrangeRed ); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if (( Bid <=priceB)||( Bid >=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
   ObjectsDeleteAll ();                                                                             // для примера удаляю все объекты, но этого не происходит!
  }                                                                                               // Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return ( 0 );
}
Birisi lütfen neyin yanlış olduğunu açıklayabilir mi?
 

Merhaba!

MQL4'ü yeni öğrenmeye başlıyorum. Komut dosyasının MT4'te (sürüm 4.0 build 1090) " Otomatik Ticarete İzin Ver" düğmesini neden yok saydığını anlayamıyorum

İşte sakinleşmemek için böyle bir tasarım:

 int start()
{

     Alert ( "Привет!" );

return ;
}

Düğmeye basmazsınız, uyarı penceresi hala açılır. Komut dosyasına emir koyduğumda, otomatik ticaret düğmesine basılmış veya bırakılmış olmasına bakılmaksızın, her tıklamada durmadan onları oynatır.


Bu tasarımı denedim:


 int start()
{

 while (! IsStopped ())
    {
    
       Alert ( "Привет!" );

     if (! IsExpertEnabled ()) break ;
    }


return ;
}

İlk başta işe yaramış gibi görünüyordu, ancak senaryo daha karmaşık hale geldikçe çalışmayı da durdurdu...

Ve genel olarak, henüz bilmiyorum, belki de böyle olmalı, ancak danışmanların çalışmasında netlik yok: danışmanı değiştirdikten sonra, nedense eskisi arka planda sanki çalışmaya devam ediyor. , ama görünüşe göre henüz çözemedim.

 
Dimitry-1983 :

Merhaba!

MQL4'ü yeni öğrenmeye başlıyorum. Komut dosyasının MT4'te (sürüm 4.0 build 1090) " Otomatik Ticarete İzin Ver" düğmesini neden yok saydığını anlayamıyorum

İşte sakinleşmemek için böyle bir tasarım:

Düğmeye basmazsınız, uyarı penceresi hala açılır. Komut dosyasına emir koyduğumda, otomatik ticaret düğmesine basılmış veya bırakılmış olmasına bakılmaksızın, her tıklamada durmadan onları oynatır.


Bu yapıyı denedim:


İlk başta işe yaramış gibi görünüyordu, ancak senaryo daha karmaşık hale geldikçe çalışmayı da durdurdu...

Ve genel olarak, henüz bilmiyorum, belki de böyle olmalı, ancak danışmanların çalışmasında netlik yok: danışmanı değiştirdikten sonra, nedense eskisi arka planda sanki çalışmaya devam ediyor. , ama görünüşe göre henüz çözemedim.

Bu düğme yalnızca ticaret işlevlerini etkiler. Diğer her şey olması gerektiği gibi çalışmaya devam ediyor.
Neden: