Erros, bugs, perguntas - página 1464

 

um aviso não indica um erro.

Este erro é devido a um desajuste do tipo de dados

ObjectGet devolve o dobro

e VOCÊ atribui um valor a

data/hora

experimente isto

 datetime TL_TimeLow2=(datetime)ObjectGet("TL_Support",OBJPROP_TIME2);// устанавливаем вторую координату времени линии поддержки
   datetime TL_TimeLow1=(datetime)ObjectGet("TL_Support",OBJPROP_TIME1); // устанавливаем первую координату времени линии поддержки
   datetime TL_Time1=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME1);      // устанавливаем первую координату времени линии Buy
   datetime TL_Time2=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME2);  // устанавливаем вторую координату времени линии Buy   

 
Sim, obrigado, eu próprio já descobri, mas o meu consultor especializado ainda não abre encomendas quando a Line_Buy e Line_Sell são atravessadas. Já verifiquei tudo, mas as encomendas são abertas e fechadas não no momento da travessia, talvez alguém me diga
//+------------------------------------------------------------------+
//|                                                      фрактал.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
input color Resistance_Color=Red;
input ENUM_LINE_STYLE Resistance_Style;
input int Resistance_Width=1;
input color Support_Color=Red;
input ENUM_LINE_STYLE Support_Style;
input int Support_Width=1;
extern double Lots      = 0.1;
extern int TakeProfit   = 50;
extern int  StopLoss    = 50;
extern int ProfitSeriya = 5;
extern int Profit       = 5;
//extern int Step         = 50;
extern int filtr        =4;
extern int slippage     = 5;
double TP,price,lastlot,Pr,SL;
int ticket,Magic=123,op;
string TL_Support;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"TL_Resistance"); //удаляем линию сопротевления на текущем графике
   ObjectDelete(0,"TL_Support");    //удаляем линию поддержки на текущем графике
   ObjectDelete(0,"TL_Buy");    //удаляем линию поддержки на текущем графике
   ObjectDelete(0,"TL_Sell");    //удаляем линию поддержки на текущем графике
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---объявление переменных
   
   int n,UpperFractal_1=0,UpperFractal_2=0,LowerFractal_1=0,LowerFractal_2=0;
   double UpperPrice_1=0,UpperPrice_2=0,LowerPrice_1=0,LowerPrice_2=0,low_1,high_1 ,Line_Buy=0,Line_Sell=0;
   low_1=iLow(Symbol(),PERIOD_CURRENT,1);
   high_1=iHigh(Symbol(),PERIOD_CURRENT,1);
 
//--- находим индекс бара первого ближайшего верхнего фрактала
   for(n=0; n<(Bars-1);n++)
     {
      if(iFractals(Symbol(),PERIOD_CURRENT,MODE_UPPER,n)!=NULL)
         break;
      UpperFractal_1=n+1;
      UpperPrice_1=iHigh(Symbol(),PERIOD_CURRENT,UpperFractal_1);
      
     }
//--- находим индекс бара второго ближайшего верхнего фрактала
   for(n=UpperFractal_1+1; n<(Bars-1);n++)
     {
      if(iFractals(Symbol(),PERIOD_CURRENT,MODE_UPPER,n)!=NULL)
         break;
      UpperFractal_2=n+1;
      UpperPrice_2=iHigh(Symbol(),PERIOD_CURRENT,UpperFractal_2);
     }
//--- находим индекс бара первого ближайшего нижнего фрактала
   for(n=0; n<(Bars-1);n++)
     {
      if(iFractals(Symbol(),PERIOD_CURRENT,MODE_LOWER,n)!=NULL)
         break;
      LowerFractal_1=n+1;
      LowerPrice_1=iLow(Symbol(),PERIOD_CURRENT,LowerFractal_1);
     }
//--- находим индекс бара второго ближайшего нижнего фрактала
   for(n=LowerFractal_1+1; n<(Bars-1);n++)
     {
      if(iFractals(Symbol(),PERIOD_CURRENT,MODE_LOWER,n)!=NULL)
         break;
      LowerFractal_2=n+1;
      LowerPrice_2=iLow(Symbol(),PERIOD_CURRENT,LowerFractal_2);
     }
     
//-- Этап 1. Определение временного значения экстремума на  таймфрейме:     
//--- определение времени фракталов
   datetime UpFractalTime_1=iTime(Symbol(),PERIOD_CURRENT,UpperFractal_1);
   datetime UpFractalTime_2=iTime(Symbol(),PERIOD_CURRENT,UpperFractal_2);
   datetime LowFractalTime_1=iTime(Symbol(),PERIOD_CURRENT,LowerFractal_1);
   datetime LowFractalTime_2=iTime(Symbol(),PERIOD_CURRENT,LowerFractal_2);
   datetime time=iTime(Symbol(),PERIOD_CURRENT,0);
   datetime time_1=iTime(Symbol(),PERIOD_CURRENT,1);
   datetime time_2=iTime(Symbol(),PERIOD_CURRENT,2);
   

//--- создание линии поддержки

  // ObjectCreate(0,"TL_Support",OBJ_TREND,0,LowFractalTime_2,LowerPrice_2,
              //  LowFractalTime_1,LowerPrice_1);
   ObjectCreate(0,"TL_Buy",OBJ_TREND,0,LowFractalTime_2,LowerPrice_2,
                time_1,high_1);
               
//--- цвета линии поддержки             
   ObjectSet("TL_Buy",OBJPROP_COLOR,clrYellow);                          
   ObjectSet("TL_Support",OBJPROP_COLOR,Support_Color);
  // ObjectSet("TL_Support",OBJPROP_STYLE,Support_Style);
  // ObjectSet("TL_Support",OBJPROP_WIDTH,Support_Width);
//--- создание линии сопротивления
  // ObjectCreate(0,"TL_Resistance",OBJ_TREND,0,UpFractalTime_2,UpperPrice_2,
            //    UpFractalTime_1,UpperPrice_1);
   ObjectCreate(0,"TL_Sell",OBJ_TREND,0,UpFractalTime_2,UpperPrice_2,
                time_1,low_1);
//--- цвета линии сопротивления                
   ObjectSet("TL_Sell",OBJPROP_COLOR,clrYellow);                          
   ObjectSet("TL_Resistance",OBJPROP_COLOR,Resistance_Color);
  // ObjectSet("TL_Resistance",OBJPROP_STYLE,Resistance_Style);
  // ObjectSet("TL_Resistance",OBJPROP_WIDTH,Resistance_Width);
//--- перерисовка линии поддержки
//--- записываем значения временных координат линии поддержки в переменные
  // string TL_Suppor=(string)TL_Support;
   datetime TL_TimeLow2=(datetime)ObjectGet("TL_Support",OBJPROP_TIME2);// устанавливаем вторую координату времени линии поддержки
   datetime TL_TimeLow1=(datetime)ObjectGet("TL_Support",OBJPROP_TIME1); // устанавливаем первую координату времени линии поддержки
   datetime TL_Time1=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME1);      // устанавливаем первую координату времени линии Buy
   datetime TL_Time2=(datetime)ObjectGet("TL_Buy",OBJPROP_TIME2);  // устанавливаем вторую координату времени линии Buy     
//---если координаты линии не совпадают с текущими
   if(TL_TimeLow2!=LowFractalTime_1 && TL_TimeLow1!=LowFractalTime_2)
   /*вторую координату времени линии поддержки не равно второму времени N-точки привязки
    и первая координату времени линии поддержки не равно первому времени N-точки привязки*/
   
     {
      //---удаляем линию
      ObjectDelete(0,"TL_Support");
     }
   if( TL_Time2!=time_1 )
    /*вторую координату времени линии поддержки не равно второму времени N-точки привязки*/
     {
      //---удаляем линию
      ObjectDelete(0,"TL_Buy");
     }  
//--- перерисовка линии сопротивления
//--- записываем значения временных координат линии сопротивления в переменные
   datetime TL_TimeUp2=(datetime)ObjectGet("TL_Resistance",OBJPROP_TIME2);
   datetime TL_TimeUp1=(datetime)ObjectGet("TL_Resistance",OBJPROP_TIME1);
   datetime TL_TimeS1=(datetime)ObjectGet("TL_Sell",OBJPROP_TIME1);
   datetime TL_TimeS2=(datetime)ObjectGet("TL_Sell",OBJPROP_TIME2);
//--- если координаты линии не совпадают с текущими
   if(TL_TimeUp2!=UpFractalTime_1 && TL_TimeUp1!=UpFractalTime_2)
     {
      //--- удаляем линию
      ObjectDelete(0,"TL_Resistance");
     }
    if(TL_TimeS2!=time_1 )
     {
      //--- удаляем линию
     ObjectDelete(0,"TL_Sell");
     }  
//--- контроль загруженности баров в истории
//--- если на M15 не найден хотя бы один бар
   if(UpperFractal_1==-1 || UpperFractal_2==-1
      || LowerFractal_1==-1 || LowerFractal_2==-1)
     {
      Alert("Для корректной работы недостаточно загружена история!");
     }
     
 
   
   Line_Sell=NormalizeDouble(ObjectGetValueByShift("TL_Sell",0),5);
   Line_Buy=NormalizeDouble(ObjectGetValueByShift("TL_Buy",0),5);
   Print( "Line_Buy:  " + DoubleToStr( Line_Buy,5)   +   " ,  Line_Sel: "  + DoubleToStr( Line_Sell,5)   );  
//поверить есть ли открытые ордера Buy. если нет открываем ордер когда цена будет выше линии Buy
   if(CountBuy()==0 && Line_Buy<Ask)       
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,slippage,0,0,"",Magic,0,Blue);
//поверить есть ли открытые ордера Buy. если есть закрываем ордер когда цена будет ниже линии Sell                   
    if(CountBuy()==1&& Line_Sell>Bid )    
           
        {
         for(int i=OrdersTotal()-1; i>=0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                  bool a=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Black);
              }
           }
        }
     
   
  if(CountSell()==0&& Line_Sell>Bid )  
    
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"",Magic,0,Red);
     
   
   if(CountSell()==1&& Line_Buy<Ask)
        
        {
         for(int i=OrdersTotal()-1; i>=0;i--)
           {
            if(OrderSelect(i,SELECT_BY_POS))
              {
               if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)

                  bool x=OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Black);
              }
           }
        }
     

  }
//+------------------------------------------------------------------+



int CountBuy()
  {

   int count=0;
   for(int i= OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountSell()
  {

   int count=0;
   for(int i= OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }

//+------------------------------------------------------------------+

 

Caros programadores da MQL4!

Ontem à noite tive uma avaria interessante. No ecrã do terminal, as barras não coincidem com as linhas da grelha.

Se eu usar castiçais em vez de barras, acontece a mesma coisa. Estou a utilizar todos os prazos. Desinstalei o terminal, descarreguei um novo a partir do meu gabinete pessoal.

- a mesma coisa. Liguei aos nossos consultores Alpari, já tenho o terminal instalado, iniciei-o - a mesma coisa.

a mesma coisa. Kaspersky diz que está tudo bem, "sem ameaças". Existem 5 períodos de barras para 4 períodos de grelha, ou seja

o período de barras é igual a 0,75 do período da grelha. Como é que isto pode ser corrigido?

Arquivos anexados:
qq3.jpg  161 kb
 
realgentleman:

Caros programadores da MQL4!

Ontem à noite tive uma avaria interessante. No ecrã do terminal, as barras não coincidem com as linhas da grelha.

Se eu usar castiçais em vez de barras, acontece a mesma coisa. Estou a utilizar todos os prazos. Desinstalei o terminal, descarreguei um novo a partir do meu gabinete pessoal.

- a mesma coisa. Liguei aos nossos consultores Alpari, já tenho o terminal instalado, iniciei-o - a mesma coisa.

a mesma coisa. Kaspersky diz que está tudo bem, "sem ameaças". Existem 5 períodos de barras para 4 períodos de grelha, ou seja

o período de barras é igual a 0,75 do período da grelha. Como é que isto pode ser corrigido?

Que construção de terminal tem, que SO, taxa de bits?

Em que símbolo e em que servidor está a tocar?

Quais são as suas definições de monitor ?

Alterou asdefinições gráficas?

 
Alguém verificou ou reparou, que tipo de ficheiro txt ou csv funciona mais rapidamente ao escrever em disco e ler MQL4/MQL5?
 

Em sistemas linux em máquinas virtuais mt4 requer configurações proxy, não sei o que entrar lá, tudo funciona e está ligado via NAT

Todos os outros programas funcionam sem procuração e vão online sem problemas... O que fazer ? Como instalar o mt4 ...

 
Vladimir Pastushak:

Em sistemas linux em máquinas virtuais mt4 requer configurações proxy, não sei o que entrar lá, tudo funciona e está ligado via NAT

Todos os outros programas funcionam sem procuração e vão online sem problemas... O que fazer ? Como instalar o mt4 ...

Está disponível a opção "bridged" para adaptador de rede em configurações de máquinas virtuais?
 

Como tornar possível a inserção de correio electrónico (skype) em

#ligação de propriedade

(se apenas por e-mail, a ligação está inactiva quando clicada)

 
Vasyl Nosal:

Como tornar possível a inserção de correio electrónico (skype) em

#ligação de propriedade

(se for apenas correio, a ligação está inactiva quando clicada)

Agora tomei-o e experimentei-o:

#property link      "mailto:мой_адрес@gmail.com"

Funciona ;)

 
Stanislav Korotky:
A ponte está disponível para o adaptador de rede nas configurações da máquina virtual?
não, não tal ...