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

 
Alexandr Sokolov:
Onde eu descubro o tempo de expiração do pedido no testador de estratégia? A aba das colunas não a tem
Como você define o tempo de expiração?
 
MakarFX:
Como você define o tempo de expiração?
void Open_Order(ENUM_ORDER_TYPE  Type,
                double           price,
                double           sl_price,
                double           tp_price,
                datetime         close)
  {
   
   MqlTradeRequest  request;
   MqlTradeResult   result;
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action        = TRADE_ACTION_PENDING;
   request.magic         = id_number;
   request.symbol        = _Symbol;
   request.volume        = volume;
   request.price         = price;
   request.sl            = sl_price;
   request.tp            = tp_price;
   request.deviation     = slippage;
   request.type          = Type;
   request.type_filling  = ORDER_FILLING_FOK;
   request.type_time     = ORDER_TIME_SPECIFIED;
   request.expiration    = close;
   
   if(!OrderSend(request,result)) Print("Error - ",result.retcode);
   
  }


 
Alexandr Sokolov:


Acrescente em um comentário sobre o mandado, não vejo outras opções(
 
MakarFX:
Adicione ao comentário do pedido, não vejo nenhuma outra opção(

Obrigado

 
Este é meu primeiro comentário sobre o fórum e não estou particularmente familiarizado com a comunidade, portanto não me atire muitos tomates em cima. Ao ponto. Quando eu estava escrevendo minha EA, me deparei com o problema de que as OrdensTotal() funcionam (o que faz sentido) para todas as ordens abertas e no caso de estabelecer condições para "uma ordem fechada, a próxima aberta" fiquei surpreso ao descobrir que mesmo que eu estabeleça masters em condições e código duplicado, duas ou mais EAs em gráficos abertos em minha conta não permitem que um ao outro trabalhem simultaneamente (até que uma ordem seja fechada, outra não será aberta). Procurei em muitos lugares sobre o assunto - consegui muitas soluções e como entendo é elementar, mas em todos os casos, nada funcionou. Que condição devo estabelecer ao abrir e/ou fechar "se... (...)" para unificar OrdensTotal apenas para uma EA específica que está anexada e a outra (suas OrdensTotal) não estaria relacionada de forma alguma e manteria sua própria contagem de todas as ordens. Obrigado.
 
Порт-моне тв:
Este é meu primeiro comentário sobre o fórum, não estou particularmente familiarizado com a comunidade, portanto não me atire tomates em cima. Ao ponto. Quando eu estava escrevendo minha EA, me deparei com o problema de que o OrdersTotal() funciona (o que faz sentido) para todas as ordens abertas e fiquei surpreso ao descobrir que mesmo que eu colocasse um mestre em condições e copiasse o código, dois ou mais EAs em gráficos abertos ao mesmo tempo não permitiriam um ao outro trabalhar (até que uma ordem fosse fechada, a próxima não seria aberta). Procurei em muitos lugares sobre o assunto - consegui muitas soluções e como entendo é elementar, mas em todos os casos, nada funcionou. Que condição devo estabelecer ao abrir e/ou fechar "se... (...)" para unificar OrdensTotal apenas para uma EA específica que é anexada, e a outra (sua OrdensTotal) não estaria relacionada de forma alguma e manteria sua própria contagem de todas as ordens. Obrigado.

Anexe seu código e você será apontado os erros

 
//+------------------------------------------------------------------+
//| sova_2bars.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp.
#link da propriedade "https://www.mql5.com"
#propriedade versão "1.00"
#propriedade rigorosa

magia int externa = 6477;
Lote duplo externo = 0,01;
Escorregão externo int = 3;
Exterior int TakeProfit = 1600;
StopLoss int externo = 800;
Experação int externa = 0;

duplo Openone, // preço de abertura da primeira vela
Opentwo, // preço de abertura da segunda vela
Closeone, //fechar o preço da primeira vela
Closetwo, // a cena da segunda vela
Preço mínimo do Lowone, //first candle's
Preço da vela baixa, //primeira vela
Três baixas, // o cenário do mínimo da terceira vela
Abrir três, // preço aberto de uma terceira vela
Fechar três, // preço fechado da terceira vela
FecharOrdem, //fechar pedido
Preço alto, // preço máximo da primeira vela
Duplo, //o preço máximo da segunda vela
Highhree, //o preço máximo da segunda vela
Alto-quatro, //o preço é o máximo da segunda vela
Highfive, // preço de uma segunda vela, no máximo
Highsix, // preço da segunda vela máxima.
Preço máximo da segunda vela
Altura elevada, // preço de uma segunda vela, no máximo
Baixo de quatro, // o preço mínimo da quarta vela
Baixo-cinco, //primeiro preço de uma quinta vela
Lowsix, // o cenário do mínimo de uma sexta vela
Lowseven, // o cenário de um mínimo de uma sétima vela
Oitava vela, // o cenário do mínimo da oitava vela
Closefour, //o preço de fechamento da quarta vela
Openfour,
Baixo15,
Baixo25,
SLbuy, TPbuy, SLsell, TPsell, // preço de abertura da quarta vela
OrderOpenPrice;
int ticket, ticketclose;

//+------------------------------------------------------------------+
//| Função de iniciação de especialistas |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
//--- determinação dos preços das barras necessárias
Openone = NormalizeDuplo(iOpen(Symbol(), Period(), 0), Dígitos);
Highone = NormalizeDouble(iHigh(Símbolo(), Period(), 0), Dígitos);
Hightwo = NormalizeDouble(iHigh(Símbolo(), Período(), 1), Dígitos);
Highthree = NormalizeDouble(iHigh(Símbolo(), Period(), 2), Dígitos);
Highfour = NormalizeDouble(iHigh(Símbolo(), Period(), 3), Dígitos);
Highfive = NormalizeDouble(iHigh(Símbolo(), Period(), 4), Dígitos);
Highsix = NormalizeDouble(iHigh(Símbolo(), Período(), 5), Dígitos);
Highseven = NormalizeDouble(iHigh(Símbolo(), Period(), 6), Dígitos);
Altura = NormalizeDuplo(iHigh(Símbolo(), Período(), 7), Dígitos);
Opentwo = NormalizeDuplo(iOpen(Symbol(), Period(), 1), Dígitos);
Openthree = NormalizeDouble(iOpen(Symbol(), Period(), 2), Dígitos);
Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Dígitos);
Closeone = NormalizeDouble(iClose(Símbolo(), Período(), 0), Dígitos);
Closetwo = NormalizeDouble(iClose(Símbolo(), Período(), 1), Dígitos);
Closethree = NormalizeDouble(iClose(Símbolo(), Período(), 2), Dígitos);
Closefour = NormalizeDouble(iClose(Símbolo(), Período(), 3), Dígitos);
Lowone = NormalizeDouble(iLow(Símbolo(), Período(), 0), Dígitos);
Lowtwo = NormalizeDouble(iLow(Símbolo(), Período(), 1), Dígitos);
Lowthree = NormalizeDouble(iLow(Símbolo(), Período(), 2), Dígitos);
Lowfour = NormalizeDouble(iLow(Símbolo(), Período(), 3), Dígitos);
Lowfive = NormalizeDouble(iLow(Símbolo(), Período(), 4), Dígitos);
Lowsix = NormalizeDouble(iLow(Símbolo(), Período(), 5), Dígitos);
Lowseven = NormalizeDouble(iLow(Símbolo(), Período(), 6), Dígitos);
Low15 = NormalizeDouble(iLow(Símbolo(), Período(), 14), Dígitos);
Low25 = NormalizeDouble(iLow(Símbolo(), Período(), 24), Dígitos);

//----индикатор - условия--------------------------------------


duplo BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
duplo SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
duplo LowerBBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1);
duplo UpperBB = iBands(_Símbolo,_Periodo,17,1,0,PRICE_CLOSE,MODE_UPPER,1);
duplo MiddleBBB = iBands(_Símbolo,_Periodo,17,1,0,PREÇO_PREÇO,MODE_MAIN,1);
Rolamentos duplos = iBearsPower(_Símbolo,_Periodo, 5, PREÇO_CLOSE,0);
duplo Bulls = iBullsPower(_Símbolo,_Periodo, 5, PREÇO_CLOSE,0);
duplo Parab = iSAR(_Símbolo,_Periodo,0.002, 1, 0);

SLbuy = NormalizeDouble(Ask - StopLoss*Point, 5);
TPbuy = NormalizeDouble(Ask + TakeProfit*Point, 5);
SLsell = NormalizeDouble(Bid + StopLoss*Point, 5);
TPsell = NormalizeDouble(Bid - TakeProfit*Point, 5);

//-------------функции---------------------------------------

se ( Pergunte>0 && Lance >0)
{

se (OrdensTotal()<1)
se (Fechar[1]>Abrir[1])
if(Rolamentos < -0.00035 && MiddleBBB > Perguntar)
{
ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "open buy order", Magic, 0, Blue)
}
if(OrdersTotal()==1)
if(Bulls > 0.00035 && MiddleBBB < Pergunte && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Pergunte)
CloseBuyPositions1();
}





//---- fim da função
}
//---------------------------------------------------------------------
void CloseBuyPositions1()
{
for(int i=OrdensTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
CurrencyPair=OrderSymbol();
if(_Símbolo==CurrencyPair)
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL);
}
}
}




 
 int OrderOfSymbol=CounterOrderTradeType(-1);
 
//-------------функции---------------------------------------

if ( Ask>0 && Bid >0)
   {

 if (OrderOfSymbol<1)
    if (Close[1]>Open[1])
    if(Bears < -0.00035 && MiddleBB > Ask)
         {
    ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue);
         }
         
   
if (OrderOfSymbol==1)
   if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
    CloseBuyPositions1();
   } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
   {
   int cnt=0;
   //----
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==false) continue;
      if(OrderSymbol()!=_Symbol) continue;
      if(order_type == OrderType() || order_type == -1) cnt++;
      }
   //----
   return(cnt);
   }
 
Порт-моне тв:
//+------------------------------------------------------------------+
//| sova_2bars.mq4 |
//| Copyright 2020, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+

OrdensTotal() retorna o valor total de todas as posições e ordens no Metatrader 4

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == iMagicNumber)
            if(OrderSymbol() == Symbol())
              {

               }

Desta forma você pode separar os pedidos de um MedgX e um símbolo...

 

@MakarFX,thank you.... Eu recebo estes erros ao compilar

CounterOrderTradeType' - função não definida teste para muitas expt trade.mq4 48 19

CounterOrderTradeType' - declarações de função são permitidas apenas em âmbito global, namespace ou classe teste para muitas expt trade.mq4 141 5


MakarFX
MakarFX
  • www.mql5.com
Добавил тему Окно модификации Доброго времени суток. В терминале, если я дважды щелкаю мышью на линию ордера, то открывается окно модификации. Но если на линии находится цена открытия одного ордера и тейк профит другого, то открывается последний измененный ордер. Уважаемые Профи Добавил тему Нужен индикатор. Кто может написать такое? Я уже...
Razão: