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

 
Roman Shiredchenko :

Bu bir şaka değil ve şaka yapmıyorum.

Sapkınlık göndermeden önce resme dikkatlice bakın.

Konu o kadar hacklendi ki, bu tür şeyleri okumak zaten iğrenç ... sonra görselleştirmeleri kayboluyor, sonra optimizasyon ...

Pencereyi daha geniş açın ve mutlu olacaksınız. Hangi pencereye basacağınızı karıştırmayın.

 
ilvic :

Ekran çözünürlüğü sorunu.

çok teşekkür ederim, resimlere bakarak tahmin etmeye başladım ...

 
ilvic :

Ekran çözünürlüğü sorunu.

tekrar teşekkürler. Her şey çalışıyor, sorun metnin boyutunu (yazı tipi) görüntülemekti.


 
İyi günler, gösterge için kodda bir hata bulmama yardım edin, kodda yorumlar var, yazmak istediğim gibi mavi çizmek istemiyorum. Buradaki fikir, son güncellemeden önceki güncelleme yüksek yeşil çizgisine kadar geçen zaman aralığındaki en küçük düşük değeri bulmaktır. Teşekkür ederim.
{

if (prev_calculated< 1 ) limit=rates_total- 1 ;
if (prev_calculated> 0 )limit=rates_total-prev_calculated;
for (i=limit; i>= 0 ; i--)
{
yesterday_weekday = TimeDayOfWeek ( iTime ( Symbol (), 0 ,i+ 1 ))- TimeDayOfWeek ( iTime ( Symbol (), 0 ,i));
if (yesterday_weekday != 0 ) // находим открытие нового дня
{

BH=open[i];BL=open[i]; // переменные ХАЙ ЛОУ  
Closebar=open[i]; // искомая переменная 
NHT=time[i]; // переменная время последнего обновления ХАЙ
PHT=time[i]; // переменная время предпоследнего обновления хай
}
CloseD[i]=Closebar; // буфер отрисовки искомая переменная СИНИЙ ЦВЕТ
HD[i]=BH;   // буфер отрисовки ХАЙ
LD[i]=BL; // буфер отрисовки ЛОУ

if (Fun_New_Bar== false )   // находим закрытие бара                             
    {                                             
     if (Prev_Time== 0 ) 
     {
        Prev_Time=time[i];
        Fun_New_Bar= false ;
     }
   if (Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];

if ( iHigh ( NULL , 0 ,i+ 1 )>BH) // проверяем есть ли обновление Хай
{
C=PHT; // присвоим переменной время предыдущего бара обновления Хай 
NHT= iTime ( NULL , 0 ,i+ 1 ); // находим время обновления Хай
Pshift= iBarShift ( NULL , 0 ,C); // находим индекс бара предыдущего обновления Хай 
P= iLow ( NULL , 0 , iLowest ( NULL , 0 , MODE_LOW ,Pshift,i+ 1 )); // находим наименьшее значение Лоу от обновления Хай настоящего до предыдущего (искомая величина) 
BH= iHigh ( NULL , 0 ,i+ 1 ); // прорисовываем Хай новый
Closebar=P; // прорисовываем искомую величину 
PHT=NHT; // сохраняем время последнего обновления Хай
} 
     
                             
      Fun_New_Bar= false ; // ждем закрытие нового бара                           
     }
     }

Comment ( NHT, C , Pshift ); // проверка

if (low[i]<BL)  BL=low[i]; // в процессе

}
   return (rates_total);
  }


 
Tünaydın! danışman ile yardım! Her adımda işe yarayan ve SL'yi başa baş noktasına getiren düzenli bir son durak yapmanız gerekir!!! Yani: bir emir açılır ve doğru yönde 25 (mecazi olarak) noktadan sonra, SL hemen açılış fiyatına yerleştirilir !!!

Bu kod bende var ama fiyattan sonra çalışıyor ve açılış fiyatında duruyor!!


 bool tkt;
   for ( int i = 0 ; i < OrdersTotal (); i++) 
  {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
       if ( OrderType () == OP_BUY )
      {
       if ( NormalizeDouble ( OrderStopLoss (), Digits ) < NormalizeDouble ( OrderOpenPrice (), Digits ) && 
       NormalizeDouble ( Ask - OrderStopLoss (), Digits ) > NormalizeDouble (TrailingStop * Point , Digits ))
      tkt = OrderModify ( OrderTicket (), 0 , Ask - TrailingStop * Point , OrderTakeProfit (), OrderExpiration (), clrNONE );
       Print ( "Error setting Buy trailing stop: " , GetLastError ());
      }
         
       if ( OrderType () == OP_SELL )
      {
       if ( NormalizeDouble ( OrderStopLoss (), Digits ) > NormalizeDouble ( OrderOpenPrice (), Digits ) && 
       NormalizeDouble ( OrderStopLoss () - Bid , Digits ) > NormalizeDouble (TrailingStop * Point , Digits ))
      tkt = OrderModify ( OrderTicket (), 0 , Bid + TrailingStop * Point , OrderTakeProfit (), OrderExpiration (), clrNONE );
       Print ( "Error setting Sell trailing stop: " , GetLastError ());
      }  
           }
   } 
Bir haftadır kafamı duvara vuruyorum! bana yardım et lütfen!!!
 
ponochka :
Tünaydın! danışman ile yardım! Her adımda işe yarayan ve SL'yi başa baş noktasına getiren düzenli bir son durak yapmanız gerekir!!! Yani: bir emir açılır ve doğru yönde 25 (mecazi olarak) noktadan sonra, SL hemen açılış fiyatına yerleştirilir !!!

Bu kod bende var ama fiyattan sonra çalışıyor ve açılış fiyatında duruyor!!


Bir haftadır kafamı duvara vuruyorum! bana yardım et lütfen!!!

Lütfen, kendim için yazdım ve kullanıyorum.

 //======= Глобальные переменные

extern bool    UseBreakeven       = true ;           //Использование безубытка
extern int     Breakeven          = 20 ;             //Профит безубытка
extern int     ValueBreak         = 3 ;             //Безубыток
extern bool    UseTrailingStop    = true ;           //использование трейлинг стопа
extern int     TrailingStop       = 40 ;             //Величина трала
extern int     TrailingStep       = 3 ;             //Шиг трала 

double SL, TP;

//нннннннннннн Функция перевода в безубыток нннннннннннннннннннннннннннннннннннннннннннн
void BreakevenModify()
{ 
   int     i;
   double sl;
   
   int total = OrdersTotal ();
   
   if (UseBreakeven)
   {
       for (i = total- 1 ; i >= 0 ; i--)
      {
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         { 
             if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) 
            {
               if ( OrderType () == OP_BUY )
               {
                   if ( OrderStopLoss () < OrderOpenPrice () && ( OrderOpenPrice () + Breakeven*point) <= Bid )
                  {   
                     sl = NormalizeDouble ( OrderOpenPrice () + ValueBreak*point, Digits );
                     
                     OrderModifyX( OrderTicket (), OrderOpenPrice (), sl, OrderTakeProfit (), 0 , 0 );
                  } 
               }
            }
         }
      
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         { 
             if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic) 
            { 
               if ( OrderType () == OP_SELL )
               {
                   if ( OrderStopLoss () > OrderOpenPrice () && ( OrderOpenPrice () - Breakeven*point) >= Ask )
                  { 
                     sl = NormalizeDouble ( OrderOpenPrice () - ValueBreak*point, Digits );
                     
                     OrderModifyX( OrderTicket (), OrderOpenPrice (), sl, OrderTakeProfit (), 0 , 0 );
                  } 
               }
            }
         }
      }
   }
}
//нннннннннннн Функция трейлинг стопа ннннннннннннннннннннннннннннннннннннннннннннннннннннн
void TrailingStopLoss()
{   
   int     i;
   double sl;
   
   int total = OrdersTotal ();
   
   if (UseTrailingStop)
   {
       for (i = total- 1 ; i >= 0 ; i--)
      {
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         {
             if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
            {
               if ( OrderType () == OP_BUY ) 
               {
                   if (( OrderOpenPrice () + TakeProfit3*point) <= Bid )
                  {
                     if ( OrderStopLoss () > OrderOpenPrice () && OrderStopLoss () + (TrailingStop + TrailingStep)*point <= Bid )
                     {
                        sl = NormalizeDouble ( OrderStopLoss () + TrailingStep*point, Digits );
                        
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), sl, OrderTakeProfit (), 0 , 0 );
                     } 
                  }  
               }
            }
         }
      
         if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
         {
             if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
            {     
               if ( OrderType () == OP_SELL )
               {
                   if (( OrderOpenPrice () - TakeProfit3*point) >= Ask )
                  {
                     if ( OrderStopLoss () < OrderOpenPrice () && OrderStopLoss () - (TrailingStop + TrailingStep)*point >= Ask )
                     {
                        sl = NormalizeDouble ( OrderStopLoss () - TrailingStep*point, Digits );
                        
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), sl, OrderTakeProfit (), 0 , 0 );
                     } 
                  }  
               } 
            }
         }
      }
   }
}


kendim için tuz ve onları kullanın.

 
Youri Lazurenko :

Lütfen, kendim için yazdım ve kullanıyorum.

bu sadece test için :-)

gerçek hayatta, Bid, Ask'a dayalı trol yapmak çok zordur.

 
Rustam Bikbulatov :
Merhaba millet. Lütfen bana neden dama tahtası deseninde veya hatta bozuk olan birkaç düzine siparişim olduğunu söyle? Ve nasıl düzeltilir? Yakın bir yöntem var mı?

baştan değil sondan kapatmalısın

 for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
veya kendi listenizi yapın ve kapatın
 
Taras Slobodyanik :

baştan değil sondan kapatmalısın

veya kendi listenizi yapın ve kapatın

liste nasıl yapılır?

 
Merhaba millet. Lütfen bana neden dama tahtası deseninde veya hatta bozuk olan birkaç düzine siparişim olduğunu söyle? Ve nasıl düzeltilir? Yakın bir yöntem var mı?
 void CloseOrdB(){  
     for ( int i= 0 ;i< OrdersTotal ();i++){
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )){
     if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()== 456 ){    
if ( OrderClose ( OrderTicket (), OrderLots (), Bid , 3 , clrBlue )){CloseOrdB();}}}} }