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

 
Порт-моне тв #:

Tenho apenas uma pequena preocupação. Todas as ordens estão fechando de vez em quando (ou seja, todas e sempre!), mas às vezes, se eu abrir 3-4 ordens, apenas 2 ou 1 delas podem fechar. Eu acho que há um i-check especial, talvez você tenha uma pista.

Não descure os parênteses, tente isto

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseBuyPositions1()
  {
   int pos=OrdersTotal()-1;
   for(int i=pos; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            if(OrderClose(OrderTicket(), OrderLots(), Bid, 0, NULL))
              {
               Print("Order Close");
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseSellPositions2()
  {
   int pos=OrdersTotal()-1;
   for(int i=pos; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_SELL)
           {
            if(OrderClose(OrderTicket(), OrderLots(), Ask, 0, NULL))
              {
               Print("Order Close");
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 
Como obter extremos de ZZ no formato D' 2021.01.05
ao longo de vários anos?
 
Vladimir Baskakov #:
Como obter extremos de ZZ no formato D' 2021.01.05
dentro de alguns anos?
if(ZZ[i]!=EMPTY_VALUE) string iDate=TimeToString(time[i],TIME_DATE|TIME_MINUTES);
 
Tretyakov Rostyslav #:
Sem roteiro?
 
Vladimir Baskakov #:
Sem roteiro?
Não
 
Olá a todos. Alguém pode ajudar a editar a EA. Preciso remover a função de abertura de pedidos, para que a EA não abra os pedidos por si só, mas apenas trabalhe com pedidos abertos manualmente. Muito obrigado de antemão.
Arquivos anexados:
 
Vladimir Baskakov #:
Sem roteiro?

Tomamos um zig-zag e no OnCalculace verificamos seu buffer para valores geralmente maiores que 0 (significa que o buffer armazena um valor extremo, baixo ou alto). Fazemos loop através do buffer usando o

int OnCalculate( const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const datetime& time[],     // Time 
                 const double& open[],       // Open 
                 const double& high[],       // High 
                 const double& low[],        // Low 
                 const double& close[],      // Close 
                 const long& tick_volume[],  // Tick Volume 
                 const long& volume[],       // Real Volume 
                 const int& spread[]         // Spread 
) {
 // код зиг-зага
 ...
 if (prev_calculated > 0) // дальнейший код сработает только один раз
   return (rates_total);
 // обработка значений зиг-зага
 for (int i = rates_total - 1; i >= 0; i--) {
   if (zigZag[i] > 0) { // найден экстремум
     // сохраняем time[i] в любую удобную форму для дальнейшей работы
   }
 }
 return (rates_total);
}

o laço acima (da direita para a esquerda) é destinado à MQL5

para MQL4, o laço será da esquerda para a direita

for (int i = 0; i < rates_total; i++)

Os exemplos acima dão novos valores de tempo em primeiro lugar. Para obter primeiro os valores seniores no tempo, use o ArraySetAsSeries ou inverta a direção do laço.

Os dados podem ser recuperados do script usando iCustom, CopyTime ou iTime, bem como iBars (em vez de taxas_total).

 
Tretyakov Rostyslav #:

Devo estar entendendo mal alguma coisa.

se eu mudar a função em

void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.
   
// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {

// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     } 
       DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
       DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2)));
       TrailingOrders();
  }

e depois parar e levar são imediatamente deslocados um número infinito de vezes

Sevocê não usa TrailingOrders(); então nada se desloca.

Minha tarefa não era criar um movimento de reboque, mas sim parar e retirar uma/duas vezes.

Hoje tenho "inventado" coisas o dia todo, até agora nada funciona.

 
законопослушный гражданин #:

Devo estar entendendo mal alguma coisa.

se eu mudar a função em

e depois parar e levar são imediatamente deslocados um número infinito de vezes

Sevocê não usa TrailingOrders(); então nada se desloca.

Minha tarefa não era criar um movimento de reboque, mas sim parar e retirar uma/duas vezes.

Eu tenho "inventado" coisas o dia todo, até agora nada funciona.

A parada de reboque deve funcionar se o preço se mover na direção do TP, e não deve fazer nada se o preço cair para trás. O nível SL deve ir somente na direção do TP e não retroceder.

 
Mihail Matkovskij #:

O bordo de fuga deve ser acionado se o preço se mover na direção do TP e não fazer nada se o preço recuar. O nível SL só deve ir na direção do TP e não deve retroceder.

Eu sei

Eu escrevi.

há um número infinito de paradas e tomadas de posição instantaneamente

2021.12.23 21:07:51.634 2021.12.21 21 21:12:20 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:20 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71288 tp: 0.72038 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:18 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:18 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71268 tp: 0.72018 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:16 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:16 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71248 tp: 0.71998 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:15 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:15 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71228 tp: 0.71978 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:13 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:13 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71208 tp: 0.71958 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:11 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:11 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71188 tp: 0.71938 ok

2021.12.23 21:07:51.634 2021.12.21 12:12:10 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:10 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71168 tp: 0.71918 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:08 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:08 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71148 tp: 0.71898 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:06 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:06 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71128 tp: 0.71878 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:05 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:05 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71108 tp: 0.71858 ok

2021.12.23 21:07:51.634 2021.12.21 21 12:12:00 111 AUDUSD,M15: Modificar a ordem de compra com sucesso!

2021.12.23 21:07:51.634 2021.12.21 21 21:12:00 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71088 tp: 0.71838 ok

2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: Modificação do pedido de compra bem sucedida!

2021.12.23 21:07:51.634 2021.12.21 12:11:53 111 AUDUSD,M15: modificar #2 comprar 0.02 AUDUSD a 0.71028 sl: 0.71068 tp: 0.71818

2021.12.23 21:07:51.634 2021.12.21 12:11:52 111 AUDUSD,M15: Modificar a ordem de compra com sucesso!


Razão: