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

 
bij :

if(iTime(NULL, PERIOD_D1 ,i+1)!=iTime(NULL,PERIOD_D1,i)&& buraya nasıl yazılır? )

[i] saatinden tarihi çıkarmanız ve bunu tarih saat[i+1] ile karşılaştırmanız gerekir. Eşit değilse, zamanı [i] zamanından çıkarın ve verilen zamanla karşılaştırın. Eşleşirlerse, bir çizgi çizin.

Bütün bunlar nasıl çıkarılır - senaryoda gösterdim. Geriye sadece düşünmek kalıyor.

 
Artyom Trishkin :

[i] saatinden tarihi çıkarmanız ve bunu tarih saat[i+1] ile karşılaştırmanız gerekir. Eşit değilse, zamanı [i] zamanından çıkarın ve verilen zamanla karşılaştırın. Eşleşirlerse, bir çizgi çizin.

Bütün bunlar nasıl çıkarılır - senaryoda gösterdim. Geriye sadece düşünmek kalıyor.

Cuma akşamı, bence kötü) Hiçbir şey inşa etmez. Niye ya?

   datetime date1=time[i]; 
   datetime date2=time[i+ 1 ];
 
   MqlDateTime str1,str2; 
   TimeToStruct (date1,str1); 
   TimeToStruct (date2,str2); 
   if (str1.day!=str2.day&&str1.mon!=str2.mon&&str1.year!=str2.year&&str2.hour== 17 &&str2.min== 30 ){
  
   if (!TrendCreate( 0 , "closek" +time[i], 0 , iTime ( NULL , PERIOD_D1 ,i+ 1 ), iClose (i+ 1 , NULL , PERIOD_M30 ), iTime ( NULL , PERIOD_D1 ,i), 0 , clrLime , STYLE_SOLID , 2 , false , false , false , false , 0 ))
        {
         continue ;
        }
        }
 
Artyom Trishkin :

sonra zamanı [i] zamanından çıkarın ve verilen zamanla karşılaştırın.

Muhtemelen zaman[i+1], günün kapanışından sonraki son güne bir satır koymam gerekiyor.

 

Merhaba.

saçma soru ama lütfen yardım edin

Alım satıma bir fiyattan girdim, her zaman özlem duyarım) Ve alım satımın fiyatını mevcut teklifle karşılaştırırım, eğer %0,5 artarsak kapatırım.Teklif üzerine yemin eder (((   

   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && ( fabs ( DEAL_PRICE - Bid [ 0 ])/ DEAL_PRICE )>= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }
 
ISL :

Alım satıma bir fiyattan girdim, her zaman özlem duyarım) Ve alım satımın fiyatını mevcut teklifle karşılaştırırım, eğer %0,5 artarsak kapatırım.Teklif üzerine yemin eder (((   

Görünüşe göre, çünkü MQL5. Ve "teklif" burada değil, ancak SymbolInfoDouble (_Symbol, SYMBOL_BID) var


 
ISL :

Merhaba.

saçma soru ama lütfen yardım edin

Alım satıma bir fiyattan girdim, her zaman özlem duyarım) Ve alım satımın fiyatını mevcut teklifle karşılaştırırım, eğer %0,5 artarsak kapatırım.Teklif üzerine yemin eder (((   

Ve küfür ederek doğru olanı yapar. MQL5'te Teklif fiyatları ile böyle bir dizi yoktur.

Değişmek

m_symbol. Bid ()

ve döngüden önce fiyatları güncellemeyi unutmayın:

   if (! RefreshRates ())
       return ;
 
Vladimir Karputov :

Ve küfür ederek doğru olanı yapar. MQL5'te Teklif fiyatları ile böyle bir dizi yoktur.

Değişmek

ve döngüden önce fiyatları güncellemeyi unutmayın:

İki farklı şekilde yaptım:

1) Expert Advisor çalışıyor ama ne yazık ki fikri hayata geçirmiyor. Çok basit, önceki mum daha düşük kapandığında ve bir sonrakini satın alıyorum. yukarıda kapalı. Ve sadece fiyat %0,5 artarsa kapatırım.

Garip anlaşmalar yapıyor

   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && ( SymbolInfoDouble ( _Symbol , SYMBOL_BID )- DEAL_PRICE )/ DEAL_PRICE >= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }

2) Yöntem aşağıdaki gibidir:

 if (! RefreshRates ())
       return ; 
   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select(my_symbol))                             //если уже существует позиция по этому символу
        {
         if ((m_Position.PositionType()== POSITION_TYPE_BUY ) && (m_symbol. Bid ())- DEAL_PRICE )/ DEAL_PRICE >= 0.005 ) m_Trade.PositionClose(my_symbol);   //и тип этой позиции Buy, то закрываем ее
           return ;                            
        }
      m_Trade.Buy( 0.1 ,my_symbol);                                 //если дошли сюда, значит позиции нет, открываем ее
     }

Yürüyüş her şeyi karıştırdı ((((

Bir hata mesajı verir:


 
ISL :

İki farklı şekilde yaptım:

1) Expert Advisor çalışıyor ama ne yazık ki fikri hayata geçirmiyor. Çok basit, önceki mum daha düşük kapandığında ve bir sonrakini satın alıyorum. yukarıda kapalı. Ve sadece fiyat %0,5 artarsa kapatırım.

Garip anlaşmalar yapıyor

2) Yöntem aşağıdaki gibidir:

Yürüyüş her şeyi karıştırdı ((((

Bir hata mesajı verir:


Kodumdan herhangi birini açın ve orada hem m_symbol hem de RefreshRates göreceksiniz.

 
Vladimir Karputov :

Kodumdan herhangi birini açın ve orada hem m_symbol hem de RefreshRates göreceksiniz.

Teşekkür ederim. Oku bitti.

Şimdi gömülü algoritmanın neden yürütülmediğini bulamıyorum.

       if (! RefreshRates ())
         return ;
1)   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ])           //если значение индикатора были выше цены закрытия и стали ниже
     {
2)       if (m_Position.Select( Symbol ()))                             //если уже существует позиция по этому символу
        {
         
           return ;                            
        }
2*)    m_Trade.Buy( 0.1 , Symbol ());                                 //если дошли сюда, значит позиции нет, открываем ее
     }
3)  if 
   ((m_Position.PositionType()== POSITION_TYPE_BUY ) && (((m_symbol. Bid ()- DEAL_PRICE )/ DEAL_PRICE )>= 0.1 ))
       {
         m_Trade.PositionClose( Symbol ());   //и тип этой позиции Buy, то закрываем ее
      }


Aşağıdakiler olur: koşul altında bir satın alma yapılır

1) Koşul sağlanırsa;

2) Orada zaten açık pozisyon olup olmadığını kontrol ederim, varsa 3'e giderim, yoksa 2*) açarım.

3) Pozisyon alış ise ve fiyatın giriş fiyatından %10 artması koşulu karşılanıyorsa, kapatırım

Test sırasında şunlar oluyor, pozisyon şartlara göre değil basitçe açılıp kapanıyor (((Yine yardım rica ediyorum!

 
ISL :

Teşekkür ederim. Oku bitti.

Şimdi gömülü algoritmanın neden yürütülmediğini bulamıyorum.


Aşağıdakiler olur: koşul altında bir satın alma yapılır

1) Koşul sağlanırsa;

2) Orada zaten açık pozisyon olup olmadığını kontrol ederim, varsa 3'e giderim, yoksa 2*) açarım.

3) Pozisyon alış ise ve fiyatın giriş fiyatından %10 artması koşulu karşılanıyorsa, kapatırım

Test sırasında şunlar oluyor, pozisyon şartlara göre değil basitçe açılıp kapanıyor (((Yine yardım rica ediyorum!

Aşağıdaki algoritmayı öneriyorum:

   if (! RefreshRates ())
       return ;
   if (MA1_buf[ 1 ]>Close_buf[ 1 ] && MA1_buf[ 0 ]<Close_buf[ 0 ]) //если значение индикатора были выше цены закрытия и стали ниже
     {
       if (m_Position.Select( Symbol ())) //если уже существует позиция по этому символу
        {
         if (m_Position.PositionType()== POSITION_TYPE_BUY && (m_symbol. Bid ()-m_Position.PriceOpen())/m_Position.PriceOpen()>= 0.1 )
           {
            m_Trade.PositionClose( Symbol ());   //и тип этой позиции Buy, то закрываем ее
             return ;
           }
        }
       else
         m_Trade.Buy( 0.1 , Symbol ()); //если дошли сюда, значит позиции нет, открываем ее
     }

m_Position'a dikkat edin. FiyatAçık ()