오류, 버그, 질문 - 페이지 1464

 

경고는 오류를 의미하지 않습니다.

이 오류는 데이터 유형 불일치로 인해 발생합니다.

ObjectGet은 두 배를 반환합니다.

그리고 당신은 가치를 할당

날짜 시간

이렇게 시도

 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   

 
예, 감사합니다. 이미 스스로 알아냈고 해냈지만 Line_Buy 라인을 넘을 때 내 고문이 여전히 주문을 올바르게 열지 않습니다. Line_Sell은 이미 모든 것을 확인했고 모든 것이 올바른 것 같지만 주문은 교차하는 순간, 누가 나에게 말해줄 수 있니?
 //+------------------------------------------------------------------+
//|                                                      фрактал.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);
  }

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

 

친애하는 MQL4 개발자 여러분!

어젯밤 흥미로운 문제가 발생했습니다. 터미널 화면에서 막대가 그리드 선과 일치하지 않습니다.

막대가 아니라 양초 - 같은 것입니다. 모든 시간 프레임. 터미널을 삭제하고 개인 계정에서 새 터미널을 다운로드했습니다.

- 똑같다. 나는 Alpari의 컨설턴트에게 전화를 걸어 이미 설치된 터미널을 받아 시작했습니다.

최대. Kaspersky는 "위협이 없다"고 모든 것이 정상이라고 말합니다. 4개의 그리드 기간에 대해 5개의 막대 기간이 있습니다.

막대 기간은 그리드 기간의 0.75와 같습니다. 그것을 고치는 방법?

파일:
qq3.jpg  161 kb
 
realgentleman :

친애하는 MQL4 개발자 여러분!

어젯밤 흥미로운 문제가 발생했습니다. 터미널 화면에서 막대가 그리드 선과 일치하지 않습니다.

막대가 아니라 양초 - 같은 것입니다. 모든 시간 프레임. 터미널을 삭제하고 개인 계정에서 새 터미널을 다운로드했습니다.

- 똑같다. 나는 Alpari의 컨설턴트에게 전화를 걸어 이미 설치된 터미널을 받아 시작했습니다.

최대. Kaspersky는 모든 것이 정상이며 "위협은 없습니다."라고 말합니다. 4개의 그리드 기간에 대해 5개의 막대 기간이 있습니다.

막대 기간은 그리드 기간의 0.75와 같습니다. 그것을 고치는 방법?

터미널 빌드, OS, 비트 심도는 무엇입니까?

어떤 심볼과 서버에서 재생되나요?

모니터 설정이 어떻게 되세요?

차트 설정 을 변경하셨습니까?

 
누군가가 디스크에 쓰고 MQL4/MQL5를 읽을 때 어떤 유형의 txt 또는 csv 파일이 더 빠른지 확인하거나 알아차렸을까요?
 

가상 머신의 Linux 시스템에서 mt4에는 프록시 설정 이 필요합니다. 거기에 무엇을 입력해야 할지 모르겠고 모든 것이 작동하며 NAT를 통해 연결됩니다.

다른 모든 프로그램은 프록시 없이 작동하고 조용히 네트워크로 이동합니다... 어떻게 해야 하나요? mt4를 설치하는 방법...

 
Vladimir Pastushak :

가상 머신의 Linux 시스템에서 mt4에는 프록시 설정 이 필요합니다. 거기에 무엇을 입력해야 할지 모르겠고 모든 것이 작동하며 NAT를 통해 연결됩니다.

다른 모든 프로그램은 프록시 없이 작동하고 조용히 네트워크로 이동합니다... 어떻게 해야 하나요? mt4를 설치하는 방법...

가상 머신 설정에서 네트워크 어댑터에 대해 브리지된 옵션을 사용할 수 있습니까?
[삭제]  

메일(스카이프)을 삽입할 수 있게 하는 방법

#속성링크

(메일인 경우 클릭 시 링크가 비활성화됨)

 
Vasyl Nosal :

메일(스카이프)을 삽입할 수 있게 하는 방법

#속성링크

(메일인 경우 클릭 시 링크가 비활성화됨)

이제 나는 그것을 가지고 그것을 시도 :

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

작동 ;)

 
Stanislav Korotky :
가상 머신 설정에서 네트워크 어댑터에 대해 브리지된 옵션을 사용할 수 있습니까?
아니 그런거 없다...