MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1232

 
Kendi açtığım konuyu forumdan nasıl silebilirim?
 
Сергей Таболин :
Kendi açtığım konuyu forumdan nasıl silebilirim?

Mümkün değil. Konu nedir?

 
Artyom Trishkin :

Mümkün değil. Konu nedir?

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

MQ5::Вопрос по свечному индикатору.
MQ5::Вопрос по свечному индикатору.
  • 2020.08.04
  • www.mql5.com
Привет всем! Пока меня окончательно и пожизненно не забанили, хочу успеть задать вопрос по индикатору...
 

Teşekkürler )))

 

Tünaydın! Bir işlevi zorlamaya çalışıyorum

 //-------------------------------------------------------------------------------
//                      Функция модификации позиции,безуыток, трейлинг-стоп 
//-------------------------------------------------------------------------------+ 
                  
bool Modi_Traili( int select, int pool=MODE_TRADES, ulong magic=- 1 ) 
{ 
//   double Profit_On =OrderProfit();                  // Профит открытой позиции             
   double Price_Open = 0 ;                         // Цена открытой позиции
   string sym = Symbol (),er;
   int i,cnt= 0 , k= OrdersTotal (),op=- 1 ,mn=- 1 ;
   double Market_Pi= 0 , oop= 0 , point= 0 , pp= 0 ;
   bool loop = false ;
//----------------------------------
     if (sym== "" ) sym= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_TICKET, MODE_TRADES)) {
       if ((OrderSymbol()==sym || sym== "" ) && (op< 0 || OrderType()==op)) {
         if (OrderType()==OP_BUY && (mn< 0 || OrderMagicNumber()==mn)){             
           int   Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice();                                           
            Market_Pi=MarketInfo(OrderSymbol(), MODE_ASK);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
             if (point== 0 ) if ( StringFind (sym, "JPY" )< 0 ) point= 0.0001 ; else point= 0.01 ;
             if (point== 0 ) if ( StringFind (sym, "XAU" )< 0 ) point= 0.0001 ; else point= 0.001 ;
             double Sorri= MathRound ( MathAbs (Market_Pi-Price_Open)/point);   
               Print ( "Ticket==" ,Ticket, "Sorri = " ,Sorri, "Price_Open = " ,Price_Open, "mi = " ,Market_Pi);
             if (Sorri >Deta && OrderProfit()> 0 )
            {
//            Print("Ticket==",Ticket,"Sorri = ",Sorri,"Price_Open = ",Price_Open,"mi = ",Market_Pi);
 //--------------------------------------------------------------------------------------------------
     while (!loop)                               // Цикл модификации  
     {     
     double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
     double SL= NormalizeDouble (Ask+( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
           Alert ( "М-  -  -я " ,Ticket, ". Ждём ответ.." );
           bool Ans=OrderModify(Ticket,Price_Open,SL,TP, 0 );     //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans== true )                       // Получилось :)
              {
               Alert ( "Ордер " ,Ticket,TP, " модифицирован:)" );
               break ;                           // Из цикла модифи.
              }
             //--------------------------------------------------- 7 --------------------
             int Error= GetLastError ();           // Не получилось :(
             switch (Error)                       // Преодолимые ошибки
              {
               case 0   : loop = true ; break ; 
      
       case 4   : er=( "Торговый сервер занят" );
       case 135 : er=( "Цена изменилась" );
       case 137 : er=( "Брокер занят" );
       case 138 : er=( "Новые цены" );
       case 146 : er=( "Подсистема торговли занята. Пробуем ещё.." );
        Message(er);
         Sleep ( 2 );                         // Простое решение
        RefreshRates();                     // Обновим данные
           continue ;
       case 136 : er=( "Нет цен" );
       Message(er);
           while (RefreshRates()== false )         // До нового тика
           Sleep ( 5 );                         // Задержка в цикле
           cnt++; 
           continue ;
       
         default :er= StringFormat ( "Ошибка: %d" ,Error);             // Другие варианты
        Message(er);
        loop = true ;                   // Выход из while
         break ;                             // Выход из switch
          }
//--------------------------------------------------------------------------------          
        } // Окончание while
       }
      }   // Окончание if
    
         if (OrderType()==OP_SELL &&(mn< 0 || OrderMagicNumber()==mn))
        {
             int Ticket=OrderTicket(); 
            Price_Open = OrderOpenPrice(); 
            Market_Pi=MarketInfo(OrderSymbol(), MODE_BID);
            point=MarketInfo(OrderSymbol(), MODE_POINT);
             if (point== 0 ) if ( StringFind (sym, "JPY" )< 0 ) point= 0.0001 ; else point= 0.01 ;
             if (point== 0 ) if ( StringFind (sym, "XAU" )< 0 ) point= 0.0001 ; else point= 0.001 ;
               double Sorri= MathRound ( MathAbs (Price_Open-Market_Pi)/point);     //+MarketInfo(OrderSymbol(), MODE_SPREAD);
             if (Sorri >Deta && OrderProfit()> 0 )
            {
             Print ( "So = " ,Sorri, "Price_Open = " ,Price_Open, "Mi = " ,Market_Pi);
             Comment (Ticket);
             while (!loop)                               // Цикл модификации  
     {     
     double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
     double SL= NormalizeDouble (Bid-( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
           Alert ( "Мод------я " ,Ticket, ". Ждём ответ.." );
           bool Ans=OrderModify(Ticket,Price_Open,SL,TP, 0 );     //Модифи его!
//--------------------------------------------------------------------------------
   if (Ans== true )                       // Получилось :)
              {
               Alert ( "Ордер " ,Ticket,TP, " модифицирован:)" );
               break ;                           // Из цикла модифи.
              }
             //--------------------------------------------------- 7 --------------------
             int Error= GetLastError ();           // Не получилось :(
             switch (Error)                       // Преодолимые ошибки
              {
               case 0   : loop = true ; break ; 
      
       case 4   : er=( "Торговый сервер занят" );
       case 135 : er=( "Цена изменилась" );
       case 137 : er=( "Брокер занят" );
       case 138 : er=( "Новые цены" );
       case 146 : er=( "Подсистема торговли занята. Пробуем ещё.." );
        Message(er);
         Sleep ( 2 );                         // Простое решение
        RefreshRates();                     // Обновим данные
           continue ;
       case 136 : er=( "Нет цен" );
       Message(er);
           while (RefreshRates()== false )         // До нового тика
           Sleep ( 5 );                         // Задержка в цикле
           cnt++; 
           continue ;
       
         default :er= StringFormat ( "Ошибка: %d" ,Error);             // Другие варианты
        Message(er);
        loop = true ;                   // Выход из while
         break ;                             // Выход из switc}
        }
                      
            }
          } //
       }
      }
      }
     } //--------------------------Выход из цикла for
  
   return ( true );
}

cari fiyat açılış fiyatını aşarsa, stop'u başabaş noktasına taşıyın.

Deta 

puan. 4051 hatası alıyorum. Tüm tank inşası dosyada (gerekirse) WMA göstergesi kullanılıyor. Benim değil, umarım kırılmamıştır.

Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Технические индикаторы требуют для своих расчетов указания значений цен и/или значений объемов, на которых они будут считаться. Существуют 7 предопределенных идентификаторов перечисления ENUM_APPLIED_PRICE, для указания нужной ценовой базы расчетов. Если технический индикатор для своих расчетов использует ценовые данные, тип которых задается...
Dosyalar:
v5mz03.mq4  52 kb
WMA.mq4  10 kb
 
Galim_V :

Tünaydın! Bir işlevi zorlamaya çalışıyorum

cari fiyat açılış fiyatını aşarsa, stop'u başabaş noktasına taşıyın.

puan. 4051 hatası alıyorum. Tüm tank inşası dosyada (gerekirse) WMA göstergesi kullanılıyor. Benim değil, umarım kırılmamıştır.

Geçersiz fonksiyon parametresi. Hazırlıksız, minimum durdurma emirleri için bir çekiniz yok. Ekle, piyasa için bu zorunlu bir kontrol.

......

double TP = NormalizeDouble (Ask+TProfit* Point , Digits );  
double SL= NormalizeDouble (Bid-( 2 +MarketInfo(OrderSymbol(), MODE_SPREAD )/point), Digits ); 
TP=New_Stop(TP);
SL=New_Stop(SL);
......
double New_Stop( double Parametr) // Проверка стоп-прик.
  {
   double Min_Dist=MarketInfo( Symbol (),MODE_STOPLEVEL); // Миним. дистанция
   if (Parametr<Min_Dist) // Если меньше допуст.
     {
      Parametr=Min_Dist;                         // Установим допуст.
       Alert ( "Увеличена дистанция стоп-приказа или цены открытия отложенных ордеров." );
     }
   return (Parametr);                             // Возврат значения
  }
 
Valeriy Yastremskiy :

Geçersiz fonksiyon parametresi. Hazırlıksız, minimum durdurma emirleri için bir çekiniz yok. Ekle, piyasa için bu zorunlu bir kontrol.

Teşekkür ederim! Bir bakacağım.

 

gösterge formüllere dayanıyorsa ve =iMA(Symbol(), Period() ,....

hesaplamayı nereden yapıyorsun?

 
Hepinize iyi günler. Böyle bir durumla bir demo hesabında (gerçek hayatta değil)) karşı karşıya kaldı. Bazı pozisyonlar, sözde pozitif olan belirli bir toplam kâr seviyesine ulaşıldığında danışman tarafından kapatıldı, tüm pozisyonlar iyi bir eksideyken, olay sunucuda 2-50'de gerçekleşti (pozisyon transferi gibi görünmüyor). Uzman Danışman (benim tarafımdan yapılmıştır) tüm açık pozisyonlar için toplam karı hesaplar ve belirtilen değerle karşılaştırır, yani küçük bir hareket olsa da penceredeki çubukların resminin bununla hiçbir ilgisi yok gibi görünüyor. kar sağlayan tarafa. EA bir zamanlayıcı üzerinde çalışıyor, 100ms ayarlandı. Bir komisyoncu kullanma fikrini dışlamıyorum, çünkü başka bir komisyoncu benzer bir Uzman Danışmana sahip, aynı ayarlara sahip, ancak fiyat keneleri üzerinde çalışıyor, sessizce kırmızıda "durdu". Hesapta bir rezerv vardı, danışman kâr başarı bloğundan kapatıldığını duyurdu.   Neyin yanlış gitmiş olabileceğine dair bir fikri olan var mı?
 
Evgeny Vlasov :
Hepinize iyi günler. Böyle bir durumla bir demo hesabında (gerçek hayatta değil))) karşı karşıya kaldı. Bazı pozisyonlar, sözde pozitif olan belirli bir toplam kâr seviyesine ulaşıldığında danışman tarafından kapatıldı, tüm pozisyonlar iyi bir eksideyken, olay sunucuda 2-50'de gerçekleşti (pozisyon transferi gibi görünmüyor). Uzman Danışman (benim tarafımdan yapılmıştır) tüm açık pozisyonlar için toplam karı hesaplar ve belirtilen değerle karşılaştırır, yani küçük bir hareket olsa da penceredeki çubukların resminin bununla hiçbir ilgisi yok gibi görünüyor. kar sağlayan tarafa. EA bir zamanlayıcı üzerinde çalışıyor, 100ms ayarlandı. Bir komisyoncu kullanma fikrini dışlamıyorum, çünkü başka bir komisyoncu benzer bir Uzman Danışmana sahip, aynı ayarlara sahip, ancak fiyat keneleri üzerinde çalışıyor, sessizce kırmızıda "durdu". Hesapta bir rezerv vardı, danışman kâr başarı bloğundan kapatıldığını duyurdu.   Neyin yanlış gitmiş olabileceğine dair bir fikri olan var mı?

Bu sizin için telepatlarla ilgili bir dalda)))) Burada bir yerdeydi)

Ve bir konuda... HZ. Kod yok, pazar türü yok, hiçbir şey yok ... Kesinlikle - telepatlara)))

Neden: