Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 118

 
trader781:
Artyom, eu joguei o código acima.
Onde? Aqui está o link para o seu correio ao qual estou respondendo: . Está no estoque ao lado de seu apelido.

Copie o mesmo link para seu código que você jogou acima e cole-o em seu post quando se referir a qualquer um dos posts dos participantes . Ou você acha que quer encontrá-la sem saber onde ela está e do que se trata tão mal?
 
Artyom Trishkin:
Onde? Aqui está um link para o seu posto, ao qual estou respondendo: . Está na área de estoque ao lado de seu apelido.

Copie o mesmo link para seu código que você jogou acima e cole-o em sua mensagem quando estiver se referindo a uma mensagem de qualquer um dos participantes . Ou você acha que quer encontrá-la sem saber onde ela está e do que se trata tão mal?

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

1082 mensagem

Eu simplesmente não sei sobre este recurso, mas normalmente um moderador vê todos os posts de qualquer usuário, incluindo as edições.

Como fazer tal ligação com um posto não tenho idéia.

 
trader781:

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

1082 mensagem

Eu simplesmente não sei sobre este recurso, mas normalmente um moderador vê todos os posts de qualquer usuário, incluindo as edições.

Como fazer tal ligação com um posto não tenho idéia.

AQUIÉ ONDE VAI:

 
trader781:

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

1082 mensagem

Não, não tenho nenhum desejo de carregá-lo eu mesmo.

Anexe aqui como código, usando o botão SRC. Então você pode olhar o código com segurança sem ter que baixá-lo e colocá-lo na pasta do terminal correto - por que tornar a vida difícil para aqueles que podem ajudá-lo?
 
Artyom Trishkin :
Não, você não quer baixar.

Anexe aqui como um código usando o botão SRC. Então você pode olhar o código com segurança sem precisar baixar e colocá-lo na pasta certa do terminal - por que dificultar a vida de quem pode ajudá-lo?

Por favor, só não entendo como verificá-lo sem baixá-lo no meu terminal. Por favor, explique também qual é a vantagem de lançar aqui pedaços de código que entopem a página.

//+------------------------------------------------------------------+
//|                                                     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:
COLOCÁ-LO AQUI:
Artyom, isto é para o vídeo particularmente talentoso?
 
Vitaly Muzichenko:
Artyom, isso é para o vídeo particularmente talentoso?
Sim, é.
 
trader781:

Por favor, só que eu não entendo como verificá-lo sem carregá-lo em meu terminal. Explique também qual é a vantagem de atirar pedaços de código entupindo a página aqui.

comerciante781, qual é a sua pergunta sobre código?

A vantagem de pedaços de código é que, por exemplo, eu tenho um arquivo de teste onde eu apenas copio um pedaço de código do fórum e o colo no arquivo. Caso contrário, você tem que baixar seu arquivo com o código, depois abrir uma pasta na pasta e colar seu arquivo, depois disso você tem que apagá-lo. Você sente a diferença?

 
trader781:

Por favor, só que eu não entendo como verificá-lo sem carregá-lo em meu terminal. Por favor, explique também qual é a vantagem de jogar pedaços de código aqui, entupindo a página.

Maldito inferno...

Na verdade, as pessoas geralmente fazem um código mínimo para reproduzir o erro que você alega.

Mas, a julgar pelo código, você não entende realmente o que ele faz.

Você tem parâmetros em suas funções que podem ser passados a eles. Em particular, a cor da linha. Mas você os fez todos com valores padrão e não pergunta "o que está dentro da minha função, que parâmetros recebe", mas você começa a dizer que o terminal falha. Tudo bem...

Remova todos os parâmetros padrão da função que cria a linha - o compilador fará você pensar em defini-los ao chamar a função - isto é necessário para sua própria educação. E remover funções duplicadas - aquelas em que você coloca 1 no final do nome - usar uma função com parâmetros diferentes.
 
Vitaly Muzichenko:

comerciante781, qual é exatamente a pergunta sobre o código?

A vantagem dos pedaços de código é que, por exemplo, tenho um arquivo de teste onde só tenho que copiar um pedaço de código do fórum e colá-lo no arquivo. Caso contrário, você tem que baixar seu arquivo com o código, depois abrir uma pasta na pasta e colar seu arquivo, depois disso você tem que apagá-lo. Sente a diferença?

ok, eu entendo

Artyom Trishkin:
Maldita divisão ...

Entendo que tudo isso está longe de ser aceitável no momento, mas você pode me mostrar por que no caso de uma compra não consigo obter uma determinadalinha tracejada de uma determinada cor, embora branca ou apenas verde, ela irá dar discretamente.

e

duplo OP = 5.00000

TP = (OP/100);

Imprimir("TP= ",TP);

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

não entendo desde quando você divide 5 por 100 é 0,5