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

 
Alexey Viktorov :

dizi USDUSD = "USDUSD";

En azından öyle.

İşte burada!!! Yani benimleydi))), silindi ve unutuldu))

Çok teşekkürler!!! Evinize huzur!

 
Valeriy Yastremskiy :

Uzman Danışman, komut dosyası, gösterge geçerli değildir, ancak geçerli pencerede çalışır. Ve farklı pencerelerin/tabloların global değişkenleri örtüşmez. Yani çalışması gerekir)

diziUSDUSD; // Bu bir metin değişkenidir, ayrıca başlangıçta boş yani. eşittir ""

(Symbol() == AUDUSD) // bu satırın AUDUSD değişkeni ile ilgisi yoktur.

Ancak sipariş açma kriterleri farklı enstrümanlar / pencereler için aynı olmamalıdır. Eğer aynılarsa, o zaman gerçekten de tüm pencerelerde açılacaktır.

Teşekkür ederim!

Ve mantığı tam olarak yaptım, böylece birkaç pencerede çalışan danışman, gelecekte bir sipariş açmak için bir sinyal göründüğünde, davadan böyle ve böyle bir enstrüman için satın alma sinyalinin ve geri kalanının olmadığını anlamasını sağladı. döndürmek

 
Denis Diakonov :

İşte burada!!! Yani benimleydi))), silindi ve unutuldu))

Çok teşekkürler!!! Evinize huzur!

Veya global değişkenler düzeyinde böyle

 #define AUDUSD "AUDUSD"
 
Alexey Viktorov :

Veya global değişkenler düzeyinde böyle

Genellikle harika)) şimdi robot bir sinyal alır ve farklı çiftler için aynı anda birkaç pencerede sipariş açar))

Tekrar teşekkürler!!

 
Yerkin Sagandykov :

sorun bence değişkenin değerlerinde değil. Sadece kodumda yeni bir saatin başlangıcında yeniden hesaplama var. ve mevcut sembole göre yeni bir bar görünüp bar =1 değerlerinin hesaplandığı ve sinyal sembolüne göre yeni bir bar elde edildiği, henüz oluşmadığı ve değerlerin bar için =2 hesaplanır

problemler basitçe çözüldü - yeni bir çubuğun başlangıcı sinyal sembolü ile izlendi

 if   ( iTime (nameSym, LPeriod, 0 ) == counted_bar || iTime (nameSymSignal, LPeriod, 0 ) == counted_Signalbar) return ; 
 
Lütfen bana söyle.
Bir fonksiyon gövdesinden birden çok anahtar durumu parametresini iletmek mümkün müdür? Switch kasasında açılacak emir türleri var ve piyasaya giriş noktası belirleme fonksiyonundan emir açmak için aynı anda sadece 1 parametre geçmek mümkündü zaten anladığım gibi, bu imkansız, bu yüzden sırayla nasıl uygulanacağını bile anlamadım
 
Denis Diakonov :
Lütfen bana söyle.
Bir fonksiyon gövdesinden birden çok anahtar durumu parametresini iletmek mümkün müdür? Switch kasasında açılacak emir türleri var ve piyasaya giriş noktası belirleme fonksiyonundan emir açmak için aynı anda sadece 1 parametre geçmek mümkündü zaten anladığım gibi, bu imkansız, bu yüzden sırayla nasıl uygulanacağını bile anlamadım

İlgilendiğiniz şeyi kodu gösterin

 
Denis Diakonov :
Lütfen bana söyle.
Bir fonksiyon gövdesinden birden çok anahtar durumu parametresini iletmek mümkün müdür? Anahtar kasasında açılacak emir türleri var ve piyasaya giriş noktası belirleme fonksiyonundan emir açmak için aynı anda sadece 1 parametre geçmek mümkündü, zaten anladığım gibi, bu imkansız, bu yüzden sırayla nasıl uygulanacağını bile anlamadım

Değer aralığını mı kastediyorsunuz?

 
Vitaly Muzichenko :

İlgilendiğiniz şeyi kodu gösterin

 int OpenOrder()                                             
{
   switch (AUDUSD_Analizing)
   {
       case 0 : Alert ( "Нет условий для открытия ордера. Выход" ); break ;    
       case 1 : // кейс для открытия Buy по AUD/USD
               if (TimeServer() == true )                                     
               {
                   if ( Symbol () == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend ( "AUDUSD" ,OP_BUY,lot,Ask, 0 , 0 , 0 ); 
                   Alert ( "Тикет открытого ордера " , Open_Order, GetLastError ());
       case 2 : // кейс для открытия Sell по AUD/USD
               if (TimeServer() == true )                                     
               {
                   if ( Symbol () == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend ( "AUDUSD" ,OP_SELL,lot,Bid, 0 , 0 , 0 ); 
                   Alert ( "Тикет открытого ордера " , Open_Order, GetLastError ());
//-------------------------------------------------------------------------------------------------------------
// другая функция
//-------------------------------------------------------------------------------------------------------------

int AUDUSD_Analizing()
{    
   if (AUDUSD_Prices_new > AUDUSD_Prices_old)
   {
      s1 = AUDUSD_Prices1;
      s2 = AUDUSD_Prices2;
      s3 = s1 - s2;    
       if (raznica > s5)
      {
         Alert ( "--- ВРЕМЯ ОТКРЫВАТЬ ОРДЕР НА ПОКУПКУ ---" );

и вот тут я могу либо прописать конкретное открытие ордера или несколько их штук(чем и решил заняться так 
как не нашел решения), либо вернуть номер кейса в первую функцию(что сократило бы код). 
Но мне нужно по условиям открывать сразу несколько сделок. К примеру нужно 2 на бай разом открыть, 
а возвращается только одно значение и исполняется один кейс и дальше уже на новый круг все идет, 
а мне нужно сразу несколько кейсов, допустим 5 выполнить, поставить 5 отложек и вот как передать не пойму, 
или как вызвать срабатывание кейсов в последовательности. Если с кейсами можно как-то придумать, то по
факту код влезет в рамку 400-600 строк, а так полагаю все 1000+ выйдет в лучшем случае
(разбитые по 100-200 строк на .mqh, но и из файлов тоже помойка сложится)

 
Alexey Viktorov :

Değer aralığını mı kastediyorsunuz?

örneğin, önce durum 1'i, ardından durum 2'yi vb. göndermeyin.

kasalar açılış emirlerini yürütür