[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 277

 

Evet kesinlikle. baktım ama göremedim.

Teşekkür ederim.

Bugün fren yapıyorum. Hafta sonları dinlenmelisin.

 
rid >> :

Bunun gibi -



Teşekkürler!!! kullanmaya devam edeceğim...

 


DDFedor



kurtulmak



Teşekkür ederim.

 

Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak, belki başka bir şey eklemeniz gerekir... çok minnettar

 

Yardım. Geceleri ticaret yapacak bir danışman istiyorum. kod yazarım

int start()
{
string Symb;
Symb=Symbol();
string Vremya;
Vremya=TimeToStr(TimeLocal(),TIME_MINUTES);
if(Vremya > 23:00 || Vremya < 06:00 )
{
// тут торговые функции
}
}

hata mesajı veriyor

'||' - koşul bir dize olamaz

Ayrıca, koşul azaltılırsa

if(Saat > 23:00

Çalışacak

ve eğer daha önce

if(Saat < 06:00 )

olmayacak.


Neyin yanlış olduğunu anlamıyorum. Bana zamanı nasıl ayarlayacağımı söyle?


 
morok >> :

Aynı şekilde, kod işe yaramadı, tüm işlemleri 2 mum üzerinde yaptı. ama pozun zaten var olduğunu öğrenmeliydim, artık açmayın... içine açabileceği her şey için tüm depozito zayuzal ((bak bak belki başka bir şey eklemeniz gerekir... çok minnettar

Evet kesinlikle....

f-ve SİPARİŞLERDE sihri ayarlamayı unuttum.

Şimdi her şey yolunda. İşler. Kontrol. Piyasada ikiden fazla zıt yönlü veya birden fazla tek yönlü işlem olamaz.

Herhangi bir türden birden fazla anlaşmaya ihtiyacınız yoksa, NumberOfPositions (c) işlevlerinde anlaşma türünü -1 (eksi bir) ile değiştirmeniz gerekir.

 extern int   Magic = 777 ;
extern int       Ema1 = 14 ;
extern int       Ema2 = 48 ;
double Ema_1 ;
double Ema_2 ;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )
  {
   //int Orders = OrdersTotal(); 
   Ema_1 = iMA ( NULL , 0 , Ema1 , 0 , MODE_SMMA , PRICE_MEDIAN , 0 ) ;
   Ema_2 = iMA ( NULL , 0 , Ema2 , 0 , MODE_SMMA , PRICE_MEDIAN , 0 ) ;   
   int ticket ;
//------------------------------------------------
 if ( NumberOfPositions ( NULL , OP_BUY , Magic ) < 1 & & Ema_1 > Ema_2 ) 
    {
      ticket = OrderSend ( Symbol ( ) , OP_BUY , 0.5 , Ask , 10 , Ask - 850 * Point , Ask + 550 * Point , "kupil" , Magic , 0 , Green ) ;
    } 
//------------------------------------------------------
   if ( NumberOfPositions ( NULL , OP_SELL , Magic ) < 1 & & Ema_1 < Ema_2 ) 
    {
      ticket = OrderSend ( Symbol ( ) , OP_SELL , 0.5 , Bid , 10 , Ask + 850 * Point , Bid - 550 * Point , "kupil" , Magic , 0 , Violet ) ;
    } 
//------------------------------------------------------
   return ( 0 ) ;
  }

//жжжжжжжжж Пользовательские функции жжжжжжж

int NumberOfPositions ( string sy = "" , int op = - 1 , int mn = - 1 ) {
  int i , k = OrdersTotal ( ) , kp = 0 ;

  if ( sy = = "0" ) sy = Symbol ( ) ;
  for ( i = 0 ; i < k ; i + + )                                    {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) )      {
      if ( OrderSymbol ( ) = = sy | | sy = = "" )                   {
        if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
          if ( op < 0 | | OrderType ( ) = = op )                   {
            if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) kp + + ;
          } } } } }
  return ( kp ) ;
}




 
alderru >> :

Lütfen bana iTime işlevinin ne gösterdiğini söyleyin.

Bu 10 basamaklı abra-kadabra nedir? saniye?

Nasıl yıl-ay-gün-saat-dakika'ya dönüştürülürler?

Bunun gibi: çubuk kaydırmayı ayarlayın ve varsayılan olarak tarih ve saati tam olarak alın (zaman=1 veya doğruysa, yalnızca zamanı alırız).

Çok kullanışlı bir özellik, şiddetle tavsiye edilir.

 string Times ( int Sdvig , bool time = 0 )
{ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   string YAER   = TimeYear ( Time [ Sdvig ] ) ;
   string DAY     = TimeDay ( Time [ Sdvig ] ) ;
   string HOUR   = TimeHour ( Time [ Sdvig ] ) ;
   string MINUTE = TimeMinute ( Time [ Sdvig ] ) ;
   int month = TimeMonth ( Time [ Sdvig ] ) ;
   string MONTH ;
   switch ( month )
     { case 1 : MONTH = "янв " ; break ;
     case 2 : MONTH = "фев " ; break ;
     case 3 : MONTH = "март" ; break ;
     case 4 : MONTH = "апр " ; break ;
     case 5 : MONTH = "май " ; break ;
     case 6 : MONTH = "июнь" ; break ;
     case 7 : MONTH = "июль" ; break ;
     case 8 : MONTH = "авг " ; break ;
     case 9 : MONTH = "сен " ; break ;
     case 10 : MONTH = "окт " ; break ;
     case 11 : MONTH = "нояб" ; break ;
     case 12 : MONTH = "дек " ; break ;               
     default : MONTH = "----" ; break ;
     }
 if ( TimeHour ( Time [ Sdvig ] ) < 10 ) HOUR = "0" + HOUR ;      
 if ( MINUTE = = "0" ) MINUTE = "00" ;
 if ( time ) return ( HOUR + ":" + MINUTE ) ;                    
 else return ( YAER + "   " + MONTH + " " + DAY + "   " + HOUR + ":" + MINUTE ) ;
} //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

kurtuldum Teşekkürler.. Tam aradığım şey) Söyleyin zor değilse, bir siparişi açarken diğerini kaplayacak şekilde nasıl yapabilirim? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (

Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.

 extern int    Magic = 777 ;
extern int        Ema1 = 14 ;
extern int        Ema2 = 48 ;
extern int        Ema3 = 100 ;
double Ema_1 ;
double Ema_2 ;
double Ema_3 ;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )
   {
   //int Orders = OrdersTotal(); 
   Ema_1 = iMA ( NULL , 0 , Ema1 , 0 , MODE_SMMA , PRICE_MEDIAN , 0 ) ;
   Ema_2 = iMA ( NULL , 0 , Ema2 , 0 , MODE_SMMA , PRICE_MEDIAN , 0 ) ;
   Ema_3 = iMA ( NULL , 0 , Ema3 , 0 , MODE_SMMA , PRICE_MEDIAN , 0 ) ;      
   int ticket ;
//------------------------------------------------
 if ( NumberOfPositions ( NULL , OP_BUY , Magic ) < 1 & & Ema_1 > Ema_2 & & Ema_2 > Ema_3 ) 
     {
      ticket = OrderSend ( Symbol ( ) , OP_BUY , 0.1 , Ask , 10 , 0 , 0 , "kupil" , Magic , 0 , Green ) ;
     } 
//------------------------------------------------------
   if ( NumberOfPositions ( NULL , OP_SELL , Magic ) < 1 & & Ema_1 < Ema_2 & & Ema_2 < Ema_3 ) 
     {
      ticket = OrderSend ( Symbol ( ) , OP_SELL , 0.1 , Bid , 10 , 0 , 0 , "kupil" , Magic , 0 , Violet ) ;
     } 
//--------------------------------------------------------
 if ( NumberOfPositions ( NULL , OP_BUY , Magic ) > = 1 & & Ema_1 < Ema_2 ) //--проверяю есть ли ордер BUY и крою его если линии ема пересеклись
     {
      ticket = OrderClose ( OrderTicket ( ) , 0.1 , Bid , 300 , Violet ) ;
     } 
//------------------------------------------------------
 if ( NumberOfPositions ( NULL , OP_SELL , Magic ) > = 1 & & Ema_1 > Ema_2 ) //--проверяю есть ли ордер SEll и крою его если линии ема пересеклись
     {
      ticket = OrderClose ( OrderTicket ( ) , 0.1 , Ask , 300 , Green ) ;
     } 
//------------------------------------------------------
   return ( 0 ) ;
   }

//жжжжжжжжж Пользовательские функции жжжжжжж

int NumberOfPositions ( string sy = "" , int op = - 1 , int mn = - 1 ) {
   int i , k = OrdersTotal ( ) , kp = 0 ;

   if ( sy = = "0" ) sy = Symbol ( ) ;
   for ( i = 0 ; i < k ; i + + )                                      {
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) )        {
       if ( OrderSymbol ( ) = = sy | | sy = = "" )                    {
         if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
           if ( op < 0 | | OrderType ( ) = = op )                    {
             if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) kp + + ;
           } } } } }
   return ( kp ) ;
}
 
rid писал(а) >>

Açık. Tarihte bunun gibi pozisyonlar olup olmadığını belirleyebilirsiniz:

Ancak o zaman kodunuz yalnızca test cihazında çalışır. Çünkü Aksi takdirde, çevrimiçi danışmanı her açtığınızda sihri değiştirmeniz gerekecektir.


Tam olarak, tam olarak ihtiyacınız olan şey!

Bu kodu bu kafese nasıl doğru bir şekilde ekleyeceğimi söyle:

(doğrudan bahis yaparsam, testçi ilk pozisyonun açılışında durur)

 for ( int i = 0 ; i < OrdersTotal ( ) ; i + + )                            {

     if ( ! ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) ) continue ;

//выбираем из истории счета

     if ( OrderSymbol ( ) ! = Symbol ( ) ) continue ;     

     if ( OrderMagicNumber ( ) = = Magic )                              {

              позиции = true ;

                                                             } }



//Открытие позиции:



bool Open_Buy ( ) {

   bool res = false ; 

if ( условие_1 )        {

             if ( советник еще не открывал позиций с Магическим номером )      {

                    res = true ;      } }

else      {

     if ( условие_1 )        { 

   if ( условие_2 опирается на данные прошлого ордера )        { 

   res = true ;      } } }

return ( res ) ;

}
 
morok >> :

kurtuldum Teşekkürler.. Tam aradığım şey) Söyle bana, zor değilse nasıl yapabilirim ki, bir siparişi açarken diğerini kapsıyor? ikinci seviyeyi değiştirmeye çalıştı ama işe yaramadıysa (

Logiano her şeyi yapmış gibi görünüyor, ancak test sırasında siparişi hemen açıp kapatıyor.

Bir keresinde burada pozisyonların kapatılmasıyla ilgilenmiştim -

https://www.mql5.com/ru/forum/105913

 //==================Закрытие позиций ============================
 
//----------------------------------------------------------------------
  for ( int v = 0 ; v < OrdersTotal ( ) ; v + + )                             {       
      if ( OrderSelect ( v , SELECT_BY_POS , MODE_TRADES ) )               {           
        if ( OrderSymbol ( ) = = Symbol ( ) & & OrderMagicNumber ( ) = = Magic )      { 
//-----------------------------------------------------                  
if ( OrderType ( ) = = OP_BUY ) { // если открыта бай-позиция                                   
  if ( вот здесь вставляй свои условия закрытия )  {
    OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 3 , Вlack ) ; // закрываем позицию
                                 }       
                               }  
 //--------------------------------------------------------
if ( OrderType ( ) = = OP_SELL ) { // если открыта селл-позиция 
 if ( вот здесь вставляй свои условия закрытия )    {
   OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 3 , Yellow ) ; // закрываем позицию
                     }       
                   }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
//------------конец блока закрытия позиций-----------------

Bu bloğu BAŞLAT işlevinin içine yerleştirin - Ema_1, Ema_2, Ema_3'ü hesapladıktan hemen sonra, en baştan yapabilirsiniz
Ve görünüşe göre, AÇILIŞ FİYATI EA'nın işini yapmak gerekiyor, aksi takdirde MA geçişi neredeyse her tikte açılış pozisyonlarını sürekli olarak kapatacaktır.

Ve bunu yapma şekliniz - çevrimiçi düzgün çalışmayacak, çünkü. danışman, başka bir danışman veya kılavuz tarafından açılmış olanlar da dahil olmak üzere tüm pozisyonları kapatacaktır.

Ama daha da kolay, nasıl yapılacağını zaten yazdım. Pozisyonları açarken NumberOfPositions(NULL,OP_BUY,Magic) ve NumberOfPositions(NULL,OP_SELL,Magic) yerine, sadece

NumberOfPositions(NULL,-1,Büyü)

ve o zaman piyasada her zaman birden fazla pozisyon olmayacaktır. Kapatma blokları yok.

Neden: