[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 126

 
agat8430:


Então me diga como editar o código para que ele não pareça invadido se você entender o que estou dizendo. É a minha primeira vez no fórum, e obtive uma bela resposta.

"Gente genial tem uma resposta genial".


Tornar os nomes das variáveis "legíveis".
 
hoz:


Não, não sem uma parada. Acabei de colocar um pedaço dele. Aqui está minha função de Breakeven:

A linha mostra claramente que se a parada calculada for igual à que você já tem, não haverá modificação! Certo? Então o cheque estava inicialmente lá? Mas o erro 1 estava constantemente aparecendo, até que eu tinha entrado em outra condição no início, antes da função de modificação:

É por isso que.... é isso que eu quero entender. Acho que descrevi tudo minuciosamente.

Esta função serve para todas as modificações, tais como ajuste de SL e TP, posições móveis e arrasto de ordens com tentativas e verificações de erros.

E o início só precisa prescrever aseleção de posição, condições e avisos. Aqui está a função:

void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(5000); RefreshRates(); ModifyCnt++;
} } }
É um pequeno, mas é um grande!
 
borilunad:

Para os recém-chegados, antes de tudo:

Navegador do fórum e respostas às perguntas mais freqüentes. Leitura altamente recomendada!( 1 2 3 4 5 6 ) 51 18.02.2011 FAQ


Obrigado! Com certeza o lerá .

O mundo não está sem gente boa.

 
hoz:

Dê às variáveis um nome "legível".


Quero modificar não todas as ordens abertas, mas apenas a ordem inicial e a última ordem T/P. Ajude-me. Aqui está o código

 /* Так и до бана не далеко */
 

Olá a todos, estou tomando valores indicadores em uma janela separada de uma barra já formada (isto é, barra 1) que eu conto uma vez na barra 0 em seu primeiro tick. Tudo funciona rápida e corretamente.Mas se eu desligar o computador e depois de algum tempo para ligar o computador, os indicadores continuam a funcionar corretamente, mas seus valores no momento em que o computador estava desligado, há apenas um lugar vazio. ou seja, há valores indicadores antes e depois de ligar o computador. Mas basta alternar de TF para TF - todos os valores "faltantes" aparecem. Osindicadores são padrão - CCI, AO, etc. Os códigos foram retirados dos fóruns, estou anexando-os, por favor explique onde estou errado e o que não entendo.



      Код №1
        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);
 
  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }
//--------------------------------------------------------------------  



        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}


      
          Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------             
   
    Last=New;
   }     
//----
   return(0);
  }
//+------------------------------------------------------------------+




       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
borilunad:

Eu tenho uma função para todas as modificações, tais como ajuste SL e TP, transferência para B/S, posições de arrasto e ordens com tentativas e verificações de erros.

Só preciso prescrever a seleção de posição, condições e avisos no início. Aqui está a função:

Pequeno, mas inteligente!


Uau :) Obrigado. Vou ter que dar uma olhada!
 
agat8430:


Quero modificar não todos os pedidos abertos, mas apenas o início e o último pedido no T/P. Quero fazer uma EA para mim mesmo.

Na verdade, devemos "filtrar" todas as ordens fechadas, sem contar o mágico e o símbolo, é claro. Em seguida, você deve selecionar a ordem inicial e a última ordem para modificar.

A OrderSelect (g_pos_300, SELECT_BY_POS, MODE_TRADES); - esta é a última encomenda.

E a OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - esta será a primeira encomenda.

Este é um ramo com perguntas sobre o idioma, e eu respondi à sua pergunta. Os bots não estão engajados no redesenho aqui. Mas você pode encontrar tudo acima para incluí-lo no Expert Advisor com o mínimo de compreensão do idioma. A esperança que ajudou...

 
agat8430:


Quero que ele modifique não todas as ordens abertas, mas apenas a ordem inicial e a última ordem T/P. Quero que ele modifique não todas as ordens abertas, mas apenas a última ordem T/P.

Para pegar os itens certos, use as "Características Úteis" de Kim para quase todas as ocasiões possíveis!

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

 
hoz:

Em geral, as ordens fechadas devem ser "rastreadas", sem contar o mágico e o símbolo, é claro. Em seguida, selecione a ordem inicial e a última ordem para modificar.

A OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - esta é a última encomenda.

E a OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - esta será a primeira encomenda.

Este é um ramo com perguntas sobre o idioma, e eu respondi à sua pergunta. Os bots não estão engajados no redesenho aqui. Mas você pode encontrar tudo para incluí-lo no Expert Advisor se você tiver um mínimo de compreensão do idioma. A esperança que ajudou...

Desculpe, não vai funcionar! Não o primeiro, não o último!
 
MK07:

Tomo os valores dos indicadores em uma janela separada de uma barra já formada (isto é, da barra nº 1) que conto uma vez na barra nº 0 em seu primeiro tick. tudo funciona rápida e corretamente. mas se eu desligar o computador e depois de algum tempo para ligar novamente, os indicadores continuam a funcionar corretamente, mas seus valores no momento em que o computador estava desligado não existem.Os códigos são indicadores padrão - CCI, AO, etc. Eu os tirei dos fóruns, eles estão anexados.

Código #1

        ------


int start()
  {  
              
//--------------------------------------------------------------------
   Fun_New_Bar();                               // Обращение к ф-ии
   if (New_Bar==false)                          // Если бар не новый..
      return;                                   // ..то уходим
//--------------------------------------------------------------------    
        
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------
   return(0);

  }
   
//+------------------------------------------------------------------+  
void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
  }

//--------------------------------------------------------------------  

        Код №2
        ------


int start()
{  
     if (NewBar() == true)
  {  
         
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;

   for(int i=0;i<limit;i++)
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
   }     
//-------------------------------           
  }    

   return(0); 
}
   
//+------------------------------------------------------------------+    
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }

}

         Код №3
          ------


//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    New=Time[0]; 
      
     if(Last!=New)     
   {
  
  int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
//-------------------------------      

   { 

       Код №4
       ------


int start()
  {
      if(last>=Time[0]) return;
  
    int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
       
//-------------------------------      
   { 
   
              
      КОД ИНДИКАТОРА
      
                               
        
//-------------------------------              
       
      last=Time[0];      
   } 
//----
   return(0);
  }
//+------------------------------------------------------------------+

Use o botãoSRC na parte superior para colar o código! Ninguém vai mexer assim. Coloquei-o para você. Você pode fazer o mesmo em seu posto.