[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 5. - sayfa 188

 
Ancak, beş dakikalık sürenin 30 puandan az olduğu ortaya çıkarsa, bekleyen bir emri nasıl sileceğimi bilmiyorum.
 
hoz :

Evet ne olmuş?

Görselleştirme modunda çalışırken bir takım sınırlamalar vardır
 

Neyi yanlış yaptım!!!!

sorunuma bir çözüm buldum

 int start()
  {
     double Price=Ask+ 300 * Point ;    
     double SL=Price- 300 * Point ;    
     double TP=Price+ 150 * Point ;
     bool New_Bar;
                          
     if (Time[ 0 ])                                                                           //   если образовался новый бар               
         int Ticket= OrderSend ( Symbol (),OP_BUYSTOP, 0.1 ,Price, 3 ,SL,TP ); //   выставить отложенный ордер
     return ;
     Fun_New_Bar();                                                                      
     if ( New_Bar== true )                                                 // если образовался следующий бар
        OrderDelete(Ticket);                                           // удалить отложенный ордер
  
//+------------------------------------------------------------------+
     void   Fun_New_Bar();                             //НО ПО ОТНОШЕНИЮ К ЭТОЙ СТРОКЕ КОМПИЛЯТОР ПИШЕТ ОШИБКУ       '(' - function definition unexpected  
       {                                                                           
           static datetime New_Time= 0 ;
          New_Bar= false ;
                                
         if ( New_Time!==Time[ 0 ])                       
            New_Time=Time[ 0 ];                         
         New_Bar= true ;                             
      }

/* üzgünüm, gönderiyi biraz düzelttim - böylece Vinin okunabilir olacak */

 
İlginiz için teşekkür ederiz ve kodun bu formatta alınması için hangi tuşa basılması gerekir.
 
solnce600 :

Neyi yanlış yaptım!!!!

sorunuma bir çözüm buldum

/* üzgünüm, gönderiyi biraz düzelttim - böylece Vinin okunabilir olacak */

Bu hat
 if (Time[ 0 ])

şu anlama gelir: "son çubuğun zamanı sıfıra eşit değilse". Yani her zaman sıfır değildir.

Daha sonra, değişken

 bool New_Bar;

start() işlevinin içinde tanımlanmıştır, bu nedenle diğer işlevlerin içinde görünmez. Ayrıca, start() gövdesi içinde Fun_New_Bar() tanımlamayı denediniz, bunu MQL'de yapamazsınız, tüm fonksiyonlar global modül seviyesinde bildirilmelidir. New_Bar bildirimi de buraya yerleştirilmelidir.

 

Ek olarak, start() işlevinin bir yürütmesi sırasında (döngülenmemişse), bir çubuğun oluşumunu belirlemek ve ardından bir sonraki çubuğun oluşumunu beklemek imkansızdır: tanım gereği, start() denir. ve her tikte tamamlandı (nüanslarla, ancak genel olarak).

Yardımı tekrar okumanızı ve MQL programlarının yürütme alanındaki boşlukları gidermenizi ve ayrıca döngü yapmayan döngülü bir program yazma örneğine bakmanızı tavsiye ederim.

 
solnce600 :
İlginiz için teşekkür ederiz ve kodun bu formatta alınması için hangi tuşa basılması gerekir.

SRC----------------------\|/

------------------------------------ V

 
Hakkı vardır.
 
alsu :
Bu hat
 if (Time[ 0 ])

şu anlama gelir: "son çubuğun zamanı sıfıra eşit değilse". Yani her zaman sıfır değildir.


Teşekkür ederim ama bu satırda “DEĞİL” in nerede olduğunu anlamıyorum. Eşit değil !== ile gösterilir.

Ve demek istediğim - yeni bir barın açılış saati göründüğü anda, yani. yeni bir çubuk belirdi - bir sipariş açın.

ve gerçekten de, bu kod her beş dakikalık periyodun açılışında bir emir açar.

 int start()

  {
 double Price=Open[0]+300*Point;	
 double SL=Price-300*Point;	
 double TP=Price+150*Point;
 if (Time[0])                         
 int Ticket=OrderSend(Symbol(),OP_BUYSTOP,0.1,Price,3,SL,TP );
  

 
 }


 

Bana daha kolay göründüğü için diğer yoldan gitmeye karar verdim.

Bekleyen bir siparişi silmeyin - ancak yalnızca beş dakikalık mum sona ermemişse bekleyen bir sipariş verin

Onlar. iki koşul karşılandığında bekleyen bir sipariş verin. İlk koşul gerçekleştiğinde

 if (Time[0])

- Siparişin ayarlandığını kontrol ettim

Ve ikinci koşulun nasıl verileceği, yani, yalnızca 5 dakika dolmadıysa bekleyen bir sipariş ayarlayın . Eğer (---------- && ?????????)

 int start()

  {
 double Price=Open[ 0 ]+ 300 * Point ;    
 double SL=Price- 300 * Point ;     
 double TP=Price+ 150 * Point ;
 
  
 
 
                          
   if (Time[ 0 ]&& ?????????  )                         
 int Ticket= OrderSend ( Symbol (),OP_BUYSTOP, 0.1 ,Price, 3 ,SL,TP );
 return ( 0 );
 
  }