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

 
Iurii Tokman:

O código precisa ser inserido Alt+S
e onde está a função ?
como foi compilado ? sem erros ?

Seu código tem trabalho com ordens pendentes e a função trabalha com posições - precisa de alguns ajustes

 
Vitaly Muzichenko:

Seu código funciona com ordens pendentes, enquanto a função funciona com posições - precisamos fazer alguns ajustes

Exatamente correto, ele só funciona com pedidos de limite de venda e de compra. O que você precisa corrigir?

 
sibiriyak73:

Absolutamente correto, apenas ordens de limite de venda e de compra estão sendo trabalhadas. O que precisa ser consertado?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает флаг торгов сегодня.                                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isTradeToDay(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  k=OrdersTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()<=6) { 
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (TimeDay  (OrderOpenTime())==Day()
              &&  TimeMonth(OrderOpenTime())==Month()
              &&  TimeYear (OrderOpenTime())==Year()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 
Vitaly Muzichenko:

Esta função é para comprar ou para comprar e vender?

Devo manter os 6 tipos de pedidos destacados em amarelo?

Compilado sem erros, mas não abre pedidos

 
sibiriyak73:

Esta função é para comprar ou para comprar e vender?

Devo manter os 6 tipos de pedidos destacados em amarelo?

Compila corretamente, mas não abre ordens

Isto é para todos os tipos. Deve funcionar se você o usar corretamente


P.S. Tente analisar logicamente por que pode não funcionar e o que o impede de fazer isso.

 

E provavelmente é melhor inserir a função uma vez, não importa que tipo é ou esteve no mercado de qualquer forma

if(Hour()==Nac && !isTradeToDay(Symbol()))
 {
   if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))
   {
     int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //Здесь открываем
   }

   if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))
   {
     int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //Здесь открываем
   }
 }
 
Feliz Ano Novo Touros para todos! Crescimento em alta para todos!)

Você pode me dizer como calcular o valor do ponto do dia anterior (ou hora) entre o preço mais baixo e o mais alto.
 
Порт-моне тв:
Feliz Ano Novo Touros para todos! Crescimento em alta para todos!)

Você pode me dizer como calcular o valor do ponto do dia anterior (ou hora) entre o preço mais baixo e o mais alto.
( High[1] - Low[1] ) / Point()
 
Olá a todos!

Você pode me dizer o que este código significa ou, mais precisamente, como ele funciona, em princípio? Neste caso, é utilizada a substituição macro, e é a condição principal para abrir pedidos. PS. A variável global não é modificada em nenhum lugar.

#define  MARKET_WATCH          (0)

bool  Gl_Var_MarketWatch    =  MARKET_WATCH;  // глобальная переменная

if(Gl_Var_MarketWatch) ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,0,0,co,mn,0,clOpen);
      else ticket=OrderSend(symbol_name,op,ll,pp,MaxSlippage,sl,tp,co,mn,0,clOpen);
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
Макроподстановка (#define) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression может...
 
Tom Seljakin:
Olá a todos!

Você pode me dizer o que este código significa ou, mais precisamente, como ele funciona em princípio? Neste caso, é utilizada a substituição macro, e é a condição principal para abrir pedidos. PS. A variável global não é modificada em nenhum lugar.

talvez seja

MARKET_WATCH,                               // окна "Обзор рынка"
Razão: