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

 
STARIJ:
escreva um script e após cada declaração exiba as informações + GetLastError() com Alert() - veja o script de exemplo acima
Como fazer isso se eu tiver um erro em meu código? Alerta() não vai me ajudar se o roteiro não funcionar!
 
Lowech:
Como posso fazer isso se eu tiver um erro em meu código? Alerta() não vai me ajudar se o roteiro não funcionar!

jogue fora tudo menos a primeira linha do roteiro e adicione Alerta. Depois adicione gradualmente - aprenda a programar e a depurar

 
LRA:
Isso foi rápido. Como você vai procurar por barras? Em loop ou usando a estrutura de tempo?

EUR USD

//+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//| если первая пятница месяца была бычьей, а             |
//| 2-й понедельник медвежий - открываем сделку на продажу|
//+-------------------------------------------------------+
#property strict
void OnStart()
{
  int День=Day(), ДеньН=DayOfWeek();
  Alert("----------------------");
  int ДеньНачалаМесяца = (ДеньН-День+36) % 7;

// Если день начала месяца = 6, то число первой пятницы равно 7. Иначе 6 - день начала месяца
  int ЧислоПервойПятницы = ДеньНачалаМесяца==6?7:6-ДеньНачалаМесяца;

// Если день начала месяца < 2, то число второго понедельника равно 9 - день начала месяца. Иначе 16 - день начала месяца
  int ЧислоВторогоПонедл = (ДеньНачалаМесяца<2?9:16)-ДеньНачалаМесяца;
  Alert("ЧислоПервойПятницы = ", ЧислоПервойПятницы, "  ЧислоВторогоПонедл = ", ЧислоВторогоПонедл);

  if(ЧислоВторогоПонедл>=День)
  {
    Alert("Надо подождать числа ", ЧислоВторогоПонедл+1);
    return;   // Отключил до числа, следующего за вторым понедельником
  }

  int Продавать=0;
  for(int Бар=0;;Бар++)  //  Ищем на D1 номера баров для заданных чисел месяца
  {
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоВторогоПонедл)
    {
      if(iClose(NULL,PERIOD_D1,Бар)<iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
      break;
    }
    if(TimeDay(iTime(NULL,PERIOD_D1,Бар))==ЧислоПервойПятницы)
      if(iClose(NULL,PERIOD_D1,Бар)>iOpen(NULL,PERIOD_D1,Бар)) Продавать++;
  }
  if(Продавать==2) bool x=OrderSend(_Symbol, OP_SELL, 0.1, Bid, 7, 0, 0);
}
 
LRA:

deixe cair tudo do roteiro, exceto a primeira linha e acrescente Alerta. Depois acrescente-o gradualmente - você aprenderá a programar e a depurar

Não funcionou ( mas obrigado por sua ajuda.
 
int 1 = OrderHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. Preciso de ajuda, preciso fechar o pedido de venda e então o próximo pedido só pode ser de compra aberta, quero usar o histórico do pedido para encontrar o último pedido fechado e saber seu tipo, mas não posso fazê-lo (quem sabe o que estou fazendo errado, me diga) se eu não souber a resposta, o que me ajudaria a fazer o código funcionar, por favor não escreva!
 
Lowech:
int 1 = OrderHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
int tip=OrderType();
Afternoon. Preciso de ajuda, preciso fechar o pedido de venda e então o próximo pedido só pode ser aberto, quero usar o histórico do pedido para encontrar o último pedido fechado e saber seu tipo, mas não posso (quem sabe o que estou fazendo errado, me diga) se eu não souber a resposta, o que me ajudaria a fazer o código funcionar, por favor não escreva!
Quando tentamos traduzir - exibe uma mensagem de erro: 1' - nome esperado. O nome da variável é necessário ao invés do número 1
 

Boa noite, abaixo está o código, escrevi um contador de ticks, minha idéia é que os ticks são contados em cada barra do laço, em cada nova barra o contador é zerado, quando inicio o indicador diz nos comentários que na barra anterior 1 ticks e os ticks atuais começam a contar de

Se eu tentar usar um duende mágico diferente, não sei por que tentei usá-lo, mas não sei por que tentei usá-lo. Talvez eu tenha escrito errado?

#property indicator_chart_window
double old_price;
double count_plus=0,count_minus=0,sum=0,psum=0;
bool Fun_New_Bar=false;
datetime Prev_Time=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

  double price;
  int i=0;
  int limit; 
  double delta; 
limit=rates_total-prev_calculated;
if(prev_calculated<1) limit=rates_total-1;
for(i=limit; i>=0; i--)  
{
 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];
      psum=sum;
      count_plus=0;
      count_minus=0;
      sum=0;                         
      Fun_New_Bar=false;                            
     }
    } 
  if(old_price==0) old_price=close[i];
   
    price = close[i];
    delta = price - old_price;
     
     //-- считаем "верхние" тики 
    if(delta>=0) {
      count_plus++;
               }
      
     //-- считаем "нижние" тики
    if(delta<0) {
      count_minus++;
        }
    sum=count_minus+count_plus;   
        //----
    old_price=price;
    
  Comment(StringFormat("Выводим цены\ncount_minus = %G\ncount_plus = %G\nsum = %G\npsum = %G",count_minus,count_plus,sum,psum));
}

   return(rates_total);
  }
 
PokrovMT5:

Boa noite, abaixo está o código, escrevi um contador de ticks, minha idéia é que os ticks são contados em cada barra do laço, em cada nova barra o contador é zerado, quando inicio o indicador diz nos comentários que na barra anterior 1 ticks e os ticks atuais começam a contar de

Se eu tentar usar um duende mágico diferente, não sei por que tentei usá-lo, mas não sei por que tentei usá-lo. Talvez eu tenha escrito errado?

Se eu entender o problema e questionar corretamente, os carrapatos não são salvos no histórico. Dê uma olhada no meu indicador.

 
Alexey Viktorov:

Se eu entendi o problema e a pergunta corretamente, isso não economiza carrapatos na história. Veja meu indicador.


O link não funciona, ele diz que não há página

 
PokrovMT5:

Boa noite, abaixo está o código, escrevi um contador de ticks, minha idéia é que os ticks são contados em cada barra do laço, em cada nova barra o contador é zerado, quando inicio o indicador diz nos comentários que na barra anterior 1 ticks e os ticks atuais começam a contar de

Se eu tentar usar um duende mágico diferente, não sei por que tentei usá-lo, mas não sei por que tentei usá-lo. Talvez eu tenha escrito errado?

taxas de retorno_total-1 ou 0

Razão: