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

 
trader781 :
Artyom yukarıdaki kodu attım
Neresi? İşte yanıtladığım yayınınızın bağlantısı: . Takma adınızın yanında stokta var.

Yukarıda attığınız kodun aynı bağlantısını kopyalayın ve herhangi bir katılımcının mesajına atıfta bulunduğunuzda mesajınıza yapıştırın. Ve sonra, nerede olduğunu ve neyle ilgili olduğunu bilmeden onu aramayı düşünüyorsun, çok mu istiyorsun?
 
Artyom Trishkin :
Neresi? İşte yanıtladığım yazınızın bağlantısı: . Takma adınızın yanında stokta var.

Yukarıda attığınız kodun aynı bağlantısını kopyalayın ve herhangi bir katılımcının mesajına atıfta bulunduğunuzda mesajınıza yapıştırın. Ve sonra, nerede olduğunu ve neyle ilgili olduğunu bilmeden onu aramayı düşünüyorsun, çok mu istiyorsun?

https://www.mql5.com/ru/forum/160683/page109

1082 mesajı

Bu kaynakta nasıl olduğunu bilmiyorum, ancak genellikle moderatör, düzenlemeler de dahil olmak üzere herhangi bir kullanıcının tüm mesajlarını görür.

Mesaja böyle bir bağlantı nasıl yapılır hiçbir fikrim yok.

 
trader781 :

https://www.mql5.com/ru/forum/160683/page109

1082 mesajı

Bu kaynakta nasıl olduğunu bilmiyorum, ancak genellikle moderatör, düzenlemeler de dahil olmak üzere herhangi bir kullanıcının tüm mesajlarını görür.

Mesaja böyle bir bağlantı nasıl yapılır hiçbir fikrim yok.

BURAYA EKLE :

 
trader781 :

https://www.mql5.com/ru/forum/160683/page109

1082 mesajı

Hayır, indirmek istemiyorsun.

SRC düğmesini kullanarak buraya kod olarak ekleyin. Ardından, indirip terminalin doğru klasörüne yerleştirmeden koda güvenle bakabilirsiniz - neden size yardımcı olabilecekler için hayatı zorlaştırıyorsunuz?
 
Artyom Trishkin :
Hayır, indirmek istemiyorsun.

SRC düğmesini kullanarak buraya kod olarak ekleyin. O zaman, kodu indirip terminalin doğru klasörüne yerleştirmek zorunda kalmadan güvenle bakabilirsiniz - neden size yardım edebilecek kişilerin hayatını zorlaştırıyorsunuz?

Lütfen, sadece terminalime indirmeden nasıl kontrol edeceğimi anlamıyorum. Lütfen sayfayı tıkayan kod parçalarını buraya atmanın avantajının ne olduğunu da açıklayın.

//+------------------------------------------------------------------+
//|                                                     Close_MA.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern bool Uslovie1= false ; //Uslovie 4 6+50 MA

extern bool OpenOrders= false ; //+---Открыть ордер

extern double Lots= 0.01 ; //Oбьем открываемого ордера

extern const string Настройки_работы_советника= "" ;

extern int Period1= 6 ; //Период 1МА
extern ENUM_APPLIED_PRICE PRICE1= PRICE_MEDIAN ;             // 1МА По цене

extern int Period2= 50 ; //Период 2МА
extern ENUM_APPLIED_PRICE PRICE2= PRICE_MEDIAN ;             // 2МА По цене

extern int Period3= 1000 ; //Период 3МА
extern ENUM_APPLIED_PRICE PRICE3= PRICE_MEDIAN ;             // 3МА По цене

extern uint X= 1 ;                                           // отклонение от ма, пунктов
extern bool PlaySound = false ;
extern int M= 1000 ;                                         // миллисекунды в Sleep
extern int R;                                               // раз повторения музыки
extern int count= 0 ;  
extern int Step= 500 ;                                       // счетчик тиков 500макс.
int    i;                                                   // исходный счетчик ордеров
int    p= 0 ;                                                 // внутренняя для playSound
bool   y = false ;                                           // для удобства сравнений условий 1,2,3,4,5,6  
bool   dummy;                                               // для выхода функций в переменную
int    ticket = 0 ;                                           // тикет открываемого ордера
int Magic = 222 ;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+



int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
  }

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+



//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ()
  {
     {
       if ( Bars < 801 || ( IsTradeAllowed ()== false )) //--- Проверим достаточна ли в истории баров для анализа и разрешение торговли
         return ;
     }
//+----------------------------------------------------------------

   double ma1= NormalizeDouble ( iMA ( NULL , 0 ,Period1, 0 , MODE_SMA ,PRICE1, 0 ), 5 );

   double ma2= NormalizeDouble ( iMA ( NULL , 0 ,Period2, 0 , MODE_SMA ,PRICE1, 0 ), 5 );   //три заданных параметра ма

   double ma3= NormalizeDouble ( iMA ( NULL , 0 ,Period3, 0 , MODE_SMA ,PRICE1, 0 ), 5 );
//+-----------------------------------------------------------------  Открытие ордеров


                               //+----Купить


       {
         if ( MathAbs ( Bid -ma3)< 1000 * Point () && (myOrdersTotal()== false ))  
           {
            ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray ); //+------отправка 1 ордера
            HLineCreate();  
           }
         else if (( Ask >=(FindLastOrderOpenPrice()+(Step* _Point )))&& myOrdersTotal()) //+------------если ордер в плюс
              {
            ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
            HLineMove();
              }
         else if (( Ask <=(FindLastOrderOpenPrice()-(Step* _Point )))&& myOrdersTotal()) //+------------если ордер вплюс
              {
            ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrLightGray );
            HLineMove();
              }
         else if (ticket== 0 )
           {
             return ;
           }          
     /*          
                               //+----Продать

         if(MathAbs(Bid-ma3)>1000*Point() && (myOrdersTotal()==false))
           {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);//+------отправка 1 ордера
            HLineCreate1();  
           }
         else if ((Ask>=(FindLastOrderOpenPrice()+(Step*_Point)))&& myOrdersTotal())//+------------если ордер в минус
              {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
            HLineMove1();
              }
         else if ((Ask<=(FindLastOrderOpenPrice()-(Step*_Point)))&& myOrdersTotal())//+------------если ордер вплюс
              {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,50,0,0,"",Magic,0,clrLightGray);
            HLineMove1();
              }
         else if(ticket==0)
           {
            return;
           }       */
    
       }
      
    
      
//+------------------------------------------------------------------Условия
   if (Uslovie1== true ) //Bid+ma800
     {
       if (( Bid >=ma3-X* Point && Bid <ma3) || ( Bid <=ma3+X* Point && Bid >ma3))
        {
           {y= true ;}
        }
     }
//+------------------------------------------------------------------закрыть покупки или продажи

   if ((y== true ) && (myOrdersTotal()== true )) //продажа
     {
      dummy=( OrderClose ( OrderTicket (), OrderLots (), Ask , 0 ,White));
     }
   if ((y== true ) && (myOrdersTotal()== false ))
     {
        dummy= false ;
        HLineDelete();
        HLineDelete1();
     //  ExpertRemove();  
     }

  }
//+------------------------------------------------------------------+
bool myOrdersTotal() //если ордера есть
  {
   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) //   цикл будет работать пока не останется ордеров
     {
       if ((( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))== true ) && OrderSymbol ()== Symbol () && ( OrderType ()< 2 ))
        {
         return true ;
        }
     }
   return false ;
  }
//-------------------------------------------------------------------
double FindLastOrderOpenPrice()
  {
   double oldorderopenprice= 0 ;
   int     oldticket= 0 ;
   ticket= 0 ;
   for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) //   цикл будет работать пока не останется ордеров
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && OrderSymbol ()== Symbol () && ( OrderMagicNumber ()==Magic)
         && ( OrderType ()== OP_BUY || OrderType ()== OP_SELL ))
        {
         oldticket= OrderTicket ();
         if (oldticket>=ticket)
           {
            ticket=oldticket;
            oldorderopenprice= OrderOpenPrice ();
           }
        }
     }
   return (oldorderopenprice);
  }
//-------------------------------------------------------------------  





//+------------------------------------------------------ часть Buy      bool HLineCreate();

                            
bool HLineCreate( const long             chart_ID= 0 ,           // ID графика
                 const string           name= "Buy" ,           // имя линии
                 const int              sub_window= 0 ,         // номер подокна
                 double                 price1= 0 ,             // цена линии
                 const color            clr= clrAzure ,         // цвет линии
                 const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
                 const int              width= 3 ,             // толщина линии
                 const bool             back= false ,           // на заднем плане
                 const bool             selection= true ,       // выделить для перемещений
                 const bool             hidden= false ,         // скрыт в списке объектов
                 const long             z_order= 0 )           // приоритет на нажатие мышью                
    {
   if (!price1)
      price1=FindLastOrderOpenPrice();
   ResetLastError ();
   if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price1))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
           //--- установим цвет линии
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
       ChartRedraw ();
     }
   return ( true );
  }          
//+------------------------------------------------------------------+          HLineMove();
bool HLineMove( const long    chart_ID= 0 ,         // ID графика
               const string name= "Buy" , // имя линии
               double        price1= 0 )           // цена линии
  {
   if (!price1)
      price1=FindLastOrderOpenPrice();
   ResetLastError ();  
   if (! ObjectMove (chart_ID,name, 0 , 0 ,price1))
     {
       Print ( __FUNCTION__ ,
             ": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
   return ( true );
  }
//+------------------------------------------------------------------+         bool HLineDelete();
bool HLineDelete( const long    chart_ID= 0 ,   // ID графика
                 const string name= "Buy" ) // имя линии
  {
   ResetLastError ();
   if (! ObjectDelete (chart_ID,name))
     {
       Print ( __FUNCTION__ ,
             ": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
   return ( true );
  }        
//+-----------------------------------------------------------------+      





   //+-----------часть SELL                    bool HLineCreate1
  
  
  
  
   //+------------------------------------------------------    
//+------------------------------------------------------                     bool HLineCreate1();
bool HLineCreate1( const long            chart_ID= 0 ,           // ID графика
                 const string           name= "Sell" ,   // имя линии
                 const int              sub_window= 0 ,         // номер подокна
                 double                 price2= 0 ,             // цена линии
                 const color            clr= clrRed ,         // цвет линии
                 const ENUM_LINE_STYLE style= STYLE_DASHDOT , // стиль линии
                 const int              width= 2 ,             // толщина линии
                 const bool             back= false ,           // на заднем плане
                 const bool             selection= true ,       // выделить для перемещений
                 const bool             hidden= false ,         // скрыт в списке объектов
                 const long             z_order= 0 )           // приоритет на нажатие мышью                
    {
   if (!price2)
      price2=FindLastOrderOpenPrice();
   ResetLastError ();
   if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price2))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
           //--- установим цвет линии
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
       ChartRedraw ();
     }
   return ( true );
  }          
//+------------------------------------------------------------------+          HLineMove1();
bool HLineMove1( const long    chart_ID= 0 ,         // ID графика
               const string name= "Sell" ,         // имя линии
               double        price2= 0 )             // цена линии
  {
   if (!price2)
      price2=FindLastOrderOpenPrice();
   ResetLastError ();  
   if (! ObjectMove (chart_ID,name, 0 , 0 ,price2))
     {
       Print ( __FUNCTION__ ,
             ": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
   return ( true );
  }
//+------------------------------------------------------------------+         bool HLineDelete1();
bool HLineDelete1( const long    chart_ID= 0 ,   // ID графика
                 const string name= "Sell" ) // имя линии
  {
   ResetLastError ();
   if (! ObjectDelete (chart_ID,name))
     {
       Print ( __FUNCTION__ ,
             ": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
   return ( true );
  }        

 
Artyom Trishkin :
BURAYA EKLE :
Artyom, bu özellikle yetenekli videolar için mi?
 
Vitaly Muzichenko :
Artyom, bu özellikle yetenekli videolar için mi?
İyi evet.
 
trader781 :

Lütfen, sadece terminalime indirmeden nasıl kontrol edeceğimi anlamıyorum. Lütfen sayfayı tıkayan kod parçalarını buraya atmanın avantajının ne olduğunu da açıklayın.

trader781 , koddaki asıl soru nedir?

Kod parçacıklarının avantajı, örneğin, forumdan bir kod parçasını kopyalayıp dosyaya yapıştırmanız gereken bir test dosyam olması. Aksi takdirde, kod dosyanızı indirmeniz, ardından bir klasör içinde bir klasör açmanız ve dosyanızı yapıştırmanız, ardından silmeniz gerekir. Farkı Hisset?

 
trader781 :

Lütfen, sadece terminalime indirmeden nasıl kontrol edeceğimi anlamıyorum. Lütfen sayfayı tıkayan kod parçalarını buraya atmanın avantajının ne olduğunu da açıklayın.

Senin bölümün...

Genel olarak, insanların iddia ettiğiniz hatayı yeniden oluşturmak için minimum düzeyde kod oluşturması yaygındır.

Ancak, koda bakılırsa, ne yaptığını gerçekten anlamıyorsunuz.

Onlara iletilebilecek işlevlerde parametreleriniz var. Özellikle, çizginin rengi. Ama hepsini varsayılan değerlerle yaptınız ve kendinize “fonksiyonun içinde ne var, hangi parametreleri alıyor?” sorusunu sormayın, bunun yerine bu terminalin berbat olduğunu söylemeye başlıyorsunuz. Normal yani...

Satırı oluşturan işlevden tüm varsayılan parametreleri kaldırın - derleyici , işlevi çağırırken bunları ayarlamak için neye ihtiyacınız olduğunu düşünmeye zorlar - bu, kendi eğitiminiz için gereklidir. Ve yinelenen işlevleri kaldırın - adın sonuna 1 girilenler - farklı parametrelere sahip bir işlev kullanın.
 
Vitaly Muzichenko :

trader781 , koddaki asıl soru nedir?

Kod parçacıklarının avantajı, örneğin, forumdan bir kod parçasını kopyalayıp dosyaya yapıştırmanız gereken bir test dosyam olması. Aksi takdirde, kod dosyanızı indirmeniz, ardından bir klasör içinde bir klasör açmanız ve dosyanızı yapıştırmanız, ardından silmeniz gerekir. Farkı Hisset?

tamam anladım

Artyom Trishkin :
Senin bölümün...

Şu anda bunun kabul edilebilir bir formdan uzak olduğunu anlıyorum, ancak bir satın alma durumunda, sakince beyaz vermesine rağmen neden belirtilen rengin belirli bir kesikli çizgisini alamadığım gösterilebilir. ya da sadece yeşil.

İyi

çift OP = 5.00000

TP = (OP/100);

Yazdır("TP= ",TP);

2017.02.09 21:36:03.650 2015.01.05 04:00:00 martin H1-1 USDJPY,H1: TP= 0,5

5'i 100'e bölerken 0,5 olacağından anlamıyorum