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

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

@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


corrigir o destaque amarelo


 //+------------------------------------------------------------------+
//|                                                   sova_2bars.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int Magic = 64777;
extern double Lot = 0.01;
extern int Slippage = 3;
extern int TakeProfit = 1600;
extern int StopLoss = 800;
extern int Experation = 0; 

int OrderOfSymbol;
//+------------------------------------------------------------------+
....
 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  { 
  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);
   }
 
MakarFX:

Corrija o que você destacou em amarelo.


Percebi que se tratava destes segmentos e tentei redefinir as variáveis, não ajudou. Estou em mql4 (não estou familiarizado com 5, se houver alguma diferença), então estou pedindo ajuda novamente
 
Порт-моне тв:
Percebi que se tratava destes segmentos e tentei redefinir as variáveis, não ajudou. Estou em mql4 (não estou familiarizado com mql5, se houver alguma diferença), então, por favor, me ajude novamente.
Dê-me o código que você tem, eu verei o que está errado.
 
MakarFX:
Dê-me o código que você tem, eu verei o que está errado.
//+------------------------------------------------------------------+
//| 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;
int OrderOfSymbol;

//+------------------------------------------------------------------+
//| Função de iniciação de especialista |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada |
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função tick expert |
//+------------------------------------------------------------------+
nulo OnTick()
{
OrderOfSymbol=CounterOrderTradeType(-1);
//--- 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(Perguntar>LowerBB)
{
ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "open buy order", Magic, 0, Blue)
}
if(OrdersTotal()==1)
if(Bid>UpperBB)
CloseBuyPositions1();
}

//+------------------------------------------------------------------+
//| Contagem de pedidos |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
{
int cnt=0;
//----
for(int pos=OrdensTotal()-1;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==falso) continua;
if(OrderSymbol()!=_Symbol) continue;
if(order_type == OrderType() || order_type == -1) cnt++;
}
//----
retorno(cnt);
}


//---- fim da função
}
//---------------------------------------------------------------------
void CloseBuyPositions1()
{
for(int i = OrderTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Magic)
if(OrderSymbol() == Símbolo())
{


if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL);
}
}
}




Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Порт-моне тв:

o parêntese errado ...pegar.

 //+------------------------------------------------------------------+
//|                                                   sova_2bars.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern int Magic = 64777;
extern double Lot = 0.01;
extern int Slippage = 3;
extern int TakeProfit = 1600;
extern int StopLoss = 800;
extern int Experation = 0;

double Openone,    //цена открытия первой свечи
Opentwo,    //цена открытия второй свечи
Closeone,   //цена закрытия первой свечи
Closetwo,   //цена закрытия второй свечи
Lowone,     //цена минимальная первой свечи
Lowtwo,     //цена минимальная второй свечи
Lowthree,   //цена минимальная третьей свечи
Openthree,  //цена открытия третьей свечи
Closethree, //цена закрытия третьей свечи
CloseOrder, //закрыть ордер
Highone,    //цена максимальная первой свечи
Hightwo,    //цена максимальная второй свечи
Highthree,    //цена максимальная второй свечи
Highfour,    //цена максимальная второй свечи
Highfive,    //цена максимальная второй свечи
Highsix,    //цена максимальная второй свечи
Highseven,    //цена максимальная второй свечи
Higheight,    //цена максимальная второй свечи
Lowfour,    //цена минимальная четвертой свечи
Lowfive,    //цена минимальная пятой свечи
Lowsix,    //цена минимальная шестой свечи
Lowseven,    //цена минимальная седьмой свечи
Loweight,    //цена минимальная восьмой свечи
Closefour,  //цена закрытия четвертой свечи
Openfour,
Low15,
Low25, 
SLbuy, TPbuy,  SLsell, TPsell,   //цена открытия четвертой свечи
OrderOpenPrice;
int ticket, ticketclose; 
int OrderOfSymbol;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  OrderOfSymbol=CounterOrderTradeType(-1); 
//--- определение цен необходимых баров
   Openone = NormalizeDouble(iOpen(Symbol(), Period(), 0), Digits);
   Highone = NormalizeDouble(iHigh(Symbol(), Period(), 0), Digits);
   Hightwo = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits);
   Highthree = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits);
   Highfour = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits);
   Highfive  = NormalizeDouble(iHigh(Symbol(), Period(), 4), Digits);
   Highsix  = NormalizeDouble(iHigh(Symbol(), Period(), 5), Digits);
   Highseven = NormalizeDouble(iHigh(Symbol(), Period(), 6), Digits);
   Higheight = NormalizeDouble(iHigh(Symbol(), Period(), 7), Digits);
   Opentwo = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
   Openthree = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
   Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits);
   Closeone = NormalizeDouble(iClose(Symbol(), Period(), 0), Digits);
   Closetwo = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits);
   Closethree = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits);
   Closefour = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits);
   Lowone = NormalizeDouble(iLow(Symbol(), Period(), 0), Digits);
   Lowtwo = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits);
   Lowthree = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits);
   Lowfour = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits);
   Lowfive = NormalizeDouble(iLow(Symbol(), Period(), 4), Digits);
   Lowsix = NormalizeDouble(iLow(Symbol(), Period(), 5), Digits);
   Lowseven = NormalizeDouble(iLow(Symbol(), Period(), 6), Digits);
   Low15 = NormalizeDouble(iLow(Symbol(), Period(), 14), Digits);
   Low25 = NormalizeDouble(iLow(Symbol(), Period(), 24), Digits);

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


double BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
double SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
double LowerBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1);
double UpperBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_UPPER,1);
double MiddleBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_MAIN,1);
double Bears = iBearsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Bulls = iBullsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Parab = iSAR(_Symbol,_Period,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);


//-------------функции---------------------------------------
            
if ( Ask>0 && Bid >0)
   {

 if (OrdersTotal()<1)
    if (Close[1]>Open[1])
    if(Ask>LowerBB)
         {
    ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue);
         }
         
   
if (OrdersTotal()==1)
   if(Bid>UpperBB)
    CloseBuyPositions1();
   }
}
//----конец функции
//---------------------------------------------------------------------
void CloseBuyPositions1()
      {
      
       for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == Magic)
            if(OrderSymbol() == Symbol())
              {


          
          if(OrderType()==OP_BUY)
             {
              if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)){Print("Order Close");}
             }
          }
       } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
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);
   }   
       
 
Порт-моне тв:

Isso é o que eu não entendo.

if ( Ask>0 && Bid >0)

por quê?

 
MakarFX:

Isso é o que eu não entendo.

por quê?

Faço isso para não ter que escrever funções adicionais com todos os parênteses e depois experimentar os indicadores nesta função, alterando este valor comum-entendido
 
Порт-моне тв:
para evitar ter que escrever funções adicionais com todos os parênteses, acrescento também uma geral, e depois experimento com os indicadores desta função

Eu faria isso

//-------------функции---------------------------------------
            
 if (OrderOfSymbol<1)
    if (Close[1]>Open[1])
      if(Ask>LowerBB)
         {
         if(OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue)){Print("Buy Order Open");}
         }
         
   for(int pos=0;pos<OrdersTotal();pos++)
      if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES))
         if(OrderSymbol()==_Symbol)
            if(Bid>UpperBB)
               CloseBuyPositions1();
   }
//----конец функции
 
MakarFX:

Мне вот это не понятно

зачем?


O problema não está resolvido, ordem aberta em um gráfico, no segundo não quer, conta OrderTotal aparentemente novamente em todos (se alguma coisa o mágico mudou, mesmo compilou um assessor separado)

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

O problema não está resolvido, ordem aberta em um gráfico, no segundo não quer, conta OrderTotal aparentemente novamente em todos (se alguma coisa o mágico mudou, mesmo compilou um assessor separado)

Colocar a função do meu posto. Funciona para mim
Razão: