Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 98

 

Boris.45 :

Yedelkin : Time_H1[1][0] ne döndürür?

Dizinin bu öğesini kullanmıyorum, çünkü gelecekte, son 5 çubukta hemen fraktal arama algoritmasına dönüyorum. Ve Time_H1[1][0], bu çubuğun parametrelerinin henüz oluşturulmadığı sıfır çubuğunun açılış zamanıdır. Belki yanılıyorum, ama kendi deneyimlerime göre zaman serileri oluşturmak için sıfır çubuk parametrelerinin kullanılmasının bunların bozulmasına yol açtığını gördüm.

Tamam, soruma açıklık getireyim:

"Time_H1[nomer_instr][i]=Time_buf[i];" ise ve "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0] ne döndürür?

 

Lütfen belirli (belirli) bir pozisyonu kapatmak için bir bağlantı gönderin.


Yani, belirli bir anda, bir pozisyonu kapatmak için koşullar karşılandığında, diyelim ki AL, danışman (şu anda) herhangi bir açık SATIN pozisyonunu kapatır. Ve şimdi belirli (belirli) bir SATIN AL pozisyonunu kapatmak gerektiğinde bir sorunla karşılaştım.

Örneğin, bir ALIM pozisyonu açarken, ona belirli bir atama atayabilir ve kapatırken koşulda "varlığını" belirtebilirsiniz.
 
Lester : Lütfen belirli (belirli) bir pozisyonu kapatmak için bir bağlantı gönderin.Yani, belirli bir anda, bir pozisyonu kapatmak için koşullar sağlandığında, örneğin SATIN AL, danışman (şu anda) herhangi bir açık SATIN AL pozisyonunu kapatır. Ve şimdi belirli (belirli) bir SATIN AL pozisyonunu kapatmak gerektiğinde bir sorunla karşılaştım.

Örneğin, bir ALIM pozisyonu açarken, ona belirli bir atama atayabilir ve kapatırken koşulda "varlığını" belirtebilirsiniz.
"Herhangi bir açık pozisyonu" nasıl kapatırsınız? Aslında, her açık pozisyon tek bir sembole karşılık gelir. Buna göre, kapatırken bu sembolün adını kullanmalı ve açık bir pozisyona "belirli bir tanım" atamamalısınız.
 
İşte bir örnek. İlk ALIŞ, bir dairede satın almak, ikinci alış, bir dairede SATMAK ve satın almaktır ancak zaten bir trenddedir. İB tüm açık İB'ler için de kapanır - ki bu iyi değildir, çünkü ikinci kapanış sadece trendi ifade eder.
 if (Buy_Condition_1 || Buy_Condition_2)
     { 
       if (Buy_Condition_3 && Buy_Condition_10)
        {
         // есть ли в данный момент открытая позиция на покупку?
         if (Buy_opened)
           {
             Alert ( "Позиция на покупку имеется" );
             return ;     // не добавлять к открытой позиции на покупку
           }        
         mrequest.action = TRADE_ACTION_DEAL ;     // немедленное исполнение
         mrequest.symbol = _Symbol ;               // символ
         mrequest.magic = EA_Magic;               // Magic Number
         mrequest.volume = Lot;                   // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend (mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Buy успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
         }
      }
 if (Buy_Condition_4 || Buy_Condition_5)
     { 
       if (Buy_Condition_6)
        {
         // есть ли в данный момент открытая позиция на покупку?
   if (Buy_opened)
      {
       Alert ( "Позиция на покупку во Флэте есть" );
       return ;     // не добавлять к открытой позиции на покупку
      }   
     if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
      {
       if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
       {
         Alert ( "Закрываю ордер Sell флэт!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;         // символ
         mrequest.magic = EA_Magic;         // Magic Number
         mrequest.volume = Lot;           // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
           Alert ( "тикет закрытия Sell флэт #:" ,mresult.order, "!!" );
           }
         else
           {
           Alert ( "Запрос на установку ордера закрытия Sell флэт не выполнен - код ошибки:" , GetLastError ());
           return ;
           }
         }
       }
   
         mrequest.action = TRADE_ACTION_DEAL ;     // немедленное исполнение
         mrequest.symbol = _Symbol ;               // символ
         mrequest.magic = EA_Magic;               // Magic Number
         mrequest.volume = Lot;                   // количество лотов для торговли
         mrequest.type = ORDER_TYPE_BUY ;         // ордер на покупку
         mrequest.type_filling = ORDER_FILLING_FOK ;   // тип исполнения ордера - все или ничего

         //--- отсылаем ордер
         OrderSend (mrequest,mresult);         
                 
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {
             Alert ( "Buy на тренд успешно помещен, тикет ордера #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера Buy тренд не выполнен - код ошибки:" , GetLastError ());
             return ;
           }         
         }
      }
....
...
if (Buy_Close_1 || Buy_Close_2)
     {
       if (Buy_Close_3)
        {
         if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
           {
             if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
                {
           Alert ( "Закрываю ордер BUY!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {            
             Alert ( "тикет закрытия Buy #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера закрытия Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
    }
  }

if (Buy_Close_4 || Buy_Close_5)
        {
         if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
           {
             if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
                {
           Alert ( "Закрываю ордер BUY!!!" );                  
                                  
         mrequest.action = TRADE_ACTION_DEAL ; // немедленное исполнение
         mrequest.symbol = _Symbol ;           // символ
         mrequest.magic = EA_Magic;           // Magic Number
         mrequest.volume = Lot;               // количество лотов для торговли
         mrequest.type = ORDER_TYPE_SELL ; // ордер на продажу      
         mrequest.type_filling = ORDER_FILLING_FOK ; // тип исполнения ордера - все или ничего
         //--- отсылаем ордер
         OrderSend (mrequest,mresult);
         // анализируем код возврата торгового сервера
         if (mresult.retcode== 10009 || mresult.retcode== 10008 ) //запрос выполнен или ордер успешно помещен
           {            
             Alert ( "тикет закрытия Buy #:" ,mresult.order, "!!" );
           }
         else
           {
             Alert ( "Запрос на установку ордера закрытия Buy не выполнен - код ошибки:" , GetLastError ());
             return ;
           }
        }
      }
    }
 
Lester : İşte bir örnek. İlk ALIŞ, bir dairede satın almak, ikinci alış, bir dairede SATMAK ve satın almaktır ancak zaten bir trenddedir. İB tüm açık İB'ler için de kapanır - ki bu iyi değildir, çünkü ikinci kapanış sadece trendi ifade eder.
Yani bir sembolde farklı "pozisyonları" mı kapatacaksınız?
 
Yedelkin :
Yani bir sembolde farklı "pozisyonları" mı kapatacaksınız?

Tam olarak değil.

Bir daire satın alma açıksa, o zaman satın alma eğilimini kapatamam. Ve tam tersi.

Yani, bir sembolde belirli pozisyonları kapatın - bir daire (bir daire açılırsa) veya bir trend (bir trend açılırsa).

 
Lester : Tam olarak değil. Bir daire satın alma açıksa, o zaman satın alma eğilimini kapatamam . Ve tam tersi.

Yani, bir sembolde belirli pozisyonları kapatın - bir daire (bir daire açılırsa) veya bir trend (bir trend açılırsa).

Açık. Ne yazık ki, terminolojik yanlışlıklar nedeniyle yanlış yönlendirildim ve daha fazla yardımcı olamam. MQL5'te her sembolün yalnızca bir konumu olabilir. " Daire al ve al trendi" gibi iki pozisyon aynı anda tek bir sembolde olamaz. Esasen soruyu mql5 pozisyonları ile ilgili değil, verdiğiniz ticaret emirlerini takip etmekle ilgili olarak gündeme getiriyorsunuz. Forum aramasına bakın: yaklaşık üç yıl önce MT5 için "sanal siparişler" hakkında bir makale vardı. Evet ve daha sonra bu konu forumda tekrar tekrar gündeme getirildi.
 
Yedelkin :

Tamam, soruma açıklık getireyim:

"Time_H1[nomer_instr][i]=Time_buf[i];" ise ve "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0] ne döndürür?

Uygulamaya çalıştığım fikri Expert Advisor'da açıklamaya çalışacağım.

İlgili Time_buf[], Open_buf[], High_buf[] vb. dizilerini kullanan CopyTime(), CopyOpen(), CopyHigh(), vb. standart işlevler vardır.

Bu işlevler ile farklı zaman dilimleri ve farklı para birimleri için geçmiş veriler elde edebiliriz. Aynı zamanda, Time_buf[0] sıfır çubuğunun açılış zamanıdır,

High_buf[0] - belirli bir para biriminin fiyatının, son gelen tıklama anında sıfır çubuğundaki maksimum değeri.

Ardından, her zaman çerçevesi için, her Zaman, Açık vb. için iki boyutlu diziler oluşturuyorum. Sonra H1 zaman dilimi için diziler alıyorum

Time_H1[i][j], Open_H1[i][j], High_H1[i][j], vb. Bu dizilerde, her satır belirli bir para biriminin geçmiş verileri içindir. Böylece,

for( i=1; i<=nomer_instr; i++ ) para birimi sayı döngüsünü kullanarak, Time_buf[j], High_buf[j] vb. geçmiş verilerinin üzerine yazarım. karşılık gelen dizi satırlarına

Time_H1[i][j], High_H1[i][j], vb.

Keneler üzerinde çalışan bir Uzman Danışman ile işlem yapıyorsanız, sıfır çubuğundan mevcut parametreleri kullanabilirsiniz. Doğal olarak, sıfır çubuğunun mevcut parametreleri

bitiş anı, 1. çubuğun parametrelerine eşit olacaktır. Danışmanım keneler üzerinde değil, çubuklar üzerinde çalışıyor. Böylece danışman barlarda çalıştığında öğrendim.

High_buf[0], Low_buf[0] değerleri sıfır çubuğunun kapanma anında geçmiş değerler değil, bazı rastgele değerlerdir. Bu nedenle, eğer dahil ederseniz

sıfır çubuk parametreleri tarihsel diziye dönüştürülür, ardından parametrenin tüm tarihsel dizisi bozulur. Bu yüzden sıfır bar parametresi kullanmıyorum.

Çok uzun olduğu için üzgünüm.


 

Boris.45 :

Yedelkin : Tamam, soruyu açıklayacağım: Eğer "Time_H1[nomer_instr][i]=Time_buf[i];" ve "Time_H1[1][1]= 2011.01.03 11:00:00", Time_buf[0] ne döndürür?

Uygulamaya çalıştığım fikri Expert Advisor'da açıklamaya çalışacağım .

Fikrini sormadım :)

Boris.45 : Aynı zamanda, Time_buf[0] sıfır çubuğunun açılış zamanıdır,

Burada ayrıca, bahsettiğiniz dizinin elemanını hangi değerin döndürdüğünü soruyorum .

 

Bana pzhl'yi söyle!

Piyasa saatinde döviz çiftlerinin arka planı nasıl yeniden renklendirilir

Hatta rengi kaldırın

ATP peşin!