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

 
void OnTick ()
  {
 TimeCurrent (dt); 
//--- Достаточно ли количество баров для работы
   if ( Bars ( _Symbol , _Period )< 10 ) // общее количество баров на графике меньше 10?
     {
       Alert ( "На графике меньше 10 баров, советник не будет работать!!" );
       return ;
     }
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера

   ArraySetAsSeries (Signal, true );
   ArraySetAsSeries (Main, true );

   
   if ( CopyBuffer (Stochastic_handle, 0 , 0 , 100 ,Main)<= 0 ) return ;
   if ( CopyBuffer (Stochastic_handle, 1 , 0 , 100 ,Signal)<= 0 ) return ;

   double Main_1=Main[ 1 ];
   Main_1= NormalizeDouble (Main_1, 5 );
   Print ( "Main_1=" , DoubleToString (Main_1, 5 ));
    
   double Main_2=Main[ 2 ];
   Main_2= NormalizeDouble (Main_2, 5 );
   
   double Main_3=Main[ 3 ];
   Main_3= NormalizeDouble (Main_3, 5 );
   
   double Signal_1=Signal[ 1 ];
   Signal_1= NormalizeDouble (Signal_1, 5 );
   Print ( "Signal_1=" , DoubleToString (Signal_1, 5 ));
   
   double Signal_2=Signal[ 2 ];
   Signal_2= NormalizeDouble (Signal_2, 5 );
   
   double Signal_3=Signal[ 3 ];
   Signal_3= NormalizeDouble (Signal_3, 5 );
   
   
// Для сохранения значения времени бара мы используем static-переменную Old_Time.
// При каждом выполнении функции OnTick мы будем сравнивать время текущего бара с сохраненным временем.
// Если они не равны, это означает, что начал строится новый бар.

   static datetime Old_Time;
   datetime New_Time[ 1 ];
   bool IsNewBar= false ;

// копируем время текущего бара в элемент New_Time[0]
   int copied= CopyTime ( _Symbol , _Period , 0 , 1 ,New_Time);
   if (copied> 0 ) // ok, успешно скопировано
     {
       if (Old_Time!=New_Time[ 0 ]) // если старое время не равно
        {
         IsNewBar= true ;   // новый бар
         if ( MQL5InfoInteger ( MQL5_DEBUGGING )) Print ( "Новый бар" ,New_Time[ 0 ], "старый бар" ,Old_Time);
         Old_Time=New_Time[ 0 ];   // сохраняем время бара
        }
     }
   else
     {
       Alert ( "Ошибка копирования времени, номер ошибки =" , GetLastError ());
       ResetLastError ();
       return ;
     }
     
     
// открытие покупок

     if (Main_1>Signal_1&&Main_2<Signal_2&&Main_3<Signal_3&&Main_2< 20 )
     {
       if (IsNewBar!= false )
        {
           
              {
               open_by_market();

              }
        }
     }
  

   // закрытие покупок 
 
   if (Signal_3> 80 &&Signal_2> 80 &&Signal_1< 80 )
   {
   if ( PositionsTotal ()> 0 )
        {
         for ( int i= 0 ;i< PositionsTotal ();i++)
           {
             ulong orders_ticket= PositionGetTicket (i);
             if ((( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY ) ))
              
              
              {  trade.PositionClose(orders_ticket); }        
            
         }
     }           
   }
 
}
   

tünaydın. Lütfen iki görevin nasıl uygulanacağını belirtin (satın alma sinyalleri örneğinde).

verilen: giriş noktası - 20'nin altındaki stokastik çizgilerin kesişimi

anlaşmayı kapatmak - 80. seviyeyi yavaş bir stokastik çizgi ile yukarıdan aşağıya geçmek

1 görev. böylece açık pozisyon ile fiyat belirli bir deltayı aştığında yeni bir anlaşma açılacaktır. ekteki resimde olduğu gibi aynı seviyede birkaç pozisyon açmayın

2 görev. böylece kapanış birincide değil ikincide olur, 80. seviyenin yavaş bir stokastik çizgi ile yukarıdan aşağıya geçişi

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Dosyalar:
121.png  27 kb
 
gastinets :

tünaydın. Lütfen iki görevin nasıl uygulanacağını belirtin (satın alma sinyalleri örneğinde).

verilen: giriş noktası - 20'nin altındaki stokastik çizgilerin kesişimi

anlaşmayı kapatmak - 80. seviyeyi yavaş bir stokastik çizgi ile yukarıdan aşağıya geçmek

1 görev. böylece açık pozisyon ile fiyat belirli bir deltayı aştığında yeni bir anlaşma açılacaktır. ekteki resimde olduğu gibi aynı seviyede birkaç pozisyon açmayın

2 görev. böylece kapanış birincide değil ikincide olur, 80. seviyenin yavaş bir stokastik çizgi ile yukarıdan aşağıya geçişi

İlk olarak, açık olun:

  • pozisyon açma koşulu
  • pozisyon kapatma koşulu

 
Lütfen, oluşturulan Expert Advisor'da OnTick işlevindeki konumla ilgili bilgilere nasıl erişeceğimi söyleyin. Açık olsun ya da olmasın. Konum için işaretçiyi nereden alabilirim? Yoksa başka bir şekilde mi yapılmalı?
 
VHS :
Lütfen, oluşturulan Expert Advisor'da OnTick işlevindeki konumla ilgili bilgilere nasıl erişeceğimi söyleyin. Açık olsun ya da olmasın. Konum için işaretçiyi nereden alabilirim? Yoksa başka bir şekilde mi yapılmalı?

Kim tarafından tasarlanan uzman?

Kodu göster lütfen.
 
Bu konuyla ilgili olmayan yorumlar " MQL4 MT4 MetaTrader 4 Yeni Başlayanlardan Sorular " bölümüne taşındı.
 
Vladimir Karputov :

Kim tarafından tasarlanan uzman?

Kodu göster lütfen.
Uzman Danışman, Sihirbaz tarafından özel bir sinyal sınıfına ve özel bir ticaret sınıfına göre tasarlanmıştır. EA'nın kodu standarttır. OnTick, ExtExpert.OnTick()'i çalıştırır, geri kalanı standart kütüphanedendir . Aslında bu soru, kimsenin cevaplamadığı bir öncekinin devamı niteliğindedir. Wizard tarafından tasarlanan Expert Advisor'ın özel sinyal sınıfını yalnızca pozisyon açmak için kullanmasını ve sinyal sınıfından gelen sinyalleri göz ardı ederek yalnızca ticaret için kapatmasını istiyorum. Sinyallerin çalışmasını nasıl görmezden geleceğimi buldum. Ama onTick'te yoksaymayı etkinleştirmek için açık bir pozisyon olup olmadığı hakkında nasıl bilgi alacağımı anlamıyorum.
 
VHS :
*** ve sadece ticaret için kapalı ***

belirsiz.

 

VHS :
***а закрывал уже только по трейдингу ***

Vladimir Karputov :

belirsiz.

Klavyede "D" ve "L" yan yana. Yanlış.

 
Artyom Trishkin :

Klavyede "D" ve "L" yan yana. Yanlış.

Evet, Artyom, çok teşekkür ederim. Görünüşe göre otomatik düzeltme (veya çarpık eller). Hem özel sınıf hem de kapanış ticaret değil, takip ediyor.
CExpert sınıfında Processing yöntemi önce Direction'a gider ve sinyal sınıfından bir sinyal olup olmadığını kontrol eder. Ve sonra (yalnızca bir SelectPosition konumu varsa) İzi kontrol eder. Sonuç olarak, eğer bir açık pozisyon varsa, sinyal sınıfından bir sinyal alarak, takip eden sınıftan sinyallerin yokluğunda bazen kapanır.
Takip eden sınıftan açık bir pozisyonun varlığı hakkında bilgi almak ve OnTick'ten Ignore'a geçirmek için önceki seçenek işe yaramadı. OnInit'te takip eden nesneyi nasıl hatırlayacağımı ve OnTick'te ondan bilgi almayı öğrendim. Ancak bu sadece pozisyon açıkken çalışır. Ve kapatıldıktan sonra, işleme artık sonuna girmez ve Yoksay yok sayılmaya devam eder. Yani, son dokunuş kalır: pozisyonu kapattıktan sonra OnTick'te bu anı belirleyin ve Ignore değerini "0"a döndürün. Ancak OnTick'te bir pozisyonun (varlığı/yokluğu) hakkında etkili bir şekilde nasıl bilgi alacağımı anlamıyorum.
 
VHS :
Evet, Artyom, çok teşekkür ederim. Görünüşe göre otomatik düzeltme (veya çarpık eller). Hem özel sınıf hem de kapanış ticaret değil, takip ediyor.
CExpert sınıfında Processing yöntemi önce Direction'a gider ve sinyal sınıfından bir sinyal olup olmadığını kontrol eder. Ve sonra (yalnızca bir SelectPosition konumu varsa) İzi kontrol eder. Sonuç olarak, eğer bir açık pozisyon varsa, sinyal sınıfından bir sinyal alarak, takip eden sınıftan sinyallerin yokluğunda bazen kapanır.
Takip eden sınıftan açık bir pozisyonun varlığı hakkında bilgi almak ve OnTick'ten Ignore'a geçirmek için önceki seçenek işe yaramadı. OnInit'te takip eden nesneyi nasıl hatırlayacağımı ve OnTick'te ondan bilgi almayı öğrendim. Ancak bu sadece pozisyon açıkken çalışır. Ve kapatıldıktan sonra, işleme artık sonuna girmez ve Yoksay yok sayılmaya devam eder. Yani, son dokunuş kalır: pozisyonu kapattıktan sonra OnTick'te bu anı belirleyin ve Ignore değerini "0"a döndürün. Ancak OnTick'te bir pozisyonun (varlığı/yokluğu) hakkında etkili bir şekilde nasıl bilgi alacağımı anlamıyorum.

Her şeyi çok daha kolay yapabileceğinizi düşünüyorum - danışmanda KAPAT eşiğini 100'e ayarlayın ve sinyalin ağırlığını 0,5 verin - bu nedenle 0,5 ağırlıklı bir sinyal ASLA 100 eşiğini aşamaz


Neden: