エラー、バグ、質問 - ページ 1464

 

警告はエラーを意味するものではありません。

このエラーは、データ型の 不一致によるものです

ObjectGet は double を返します。

に値を割り当てる。

時分

やってみる

 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   

 
しかし、私のExpert Advisorは、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開発者の皆様へ

昨夜は面白い故障がありました。端末画面では、バーとグリッド線が一致しない。

バーの代わりにローソク足を使っても、同じことが起こります。すべてのタイムフレームを使用しています。端末をアンインストールし、個人のキャビネットから新しい端末をダウンロードしました。

- も同じです。アルパリのコンサルタントに電話して、すでにインストールされている端末をもらって起動しても、同じでした。

も同じです。カスペルスキーは「脅威はない」とすべて問題なしとしています。4グリッド期間に対して5期間のバーがある、つまり

の場合、バーの周期はグリッド周期の0.75に相当する。これはどうしたら直るのでしょうか?

ファイル:
qq3.jpg  161 kb
 
realgentleman:

MQL4開発者の皆様へ

昨夜は面白い故障がありました。端末画面では、バーとグリッド線が一致しない。

バーの代わりにローソク足を使っても、同じことが起こります。すべてのタイムフレームを使用しています。端末をアンインストールし、個人のキャビネットから新しい端末をダウンロードしました。

- も同じです。アルパリのコンサルタントに電話して、すでにインストールされている端末をもらって起動しても、同じでした。

も同じです。カスペルスキーは「脅威はない」とすべて問題なしとしています。4グリッド期間に対して5期間のバーがある、つまり

の場合、バーの周期はグリッド周期の0.75に相当する。これはどうしたら直るのでしょうか?

お使いの端末のメーカー、OS、ビットレートは?

どのシンボルで、どのサーバーで再生しているのか?

モニターの設定はどうなっていますか?

グラフィックの設定を 変更しましたか?

 
MQL4/MQL5でディスクへの書き込みと読み込みを行う場合、txtとcsvのどちらのファイルタイプが速く動作するか確認した方、気づいた方はいらっしゃいますか?
 

Linuxシステムの仮想マシンでは、mt4はプロキシ設定を 必要としますが、そこに何を入力すればいいのかわかりません。

他のプログラムはすべてプロキシなしで動作し、問題なくオンラインになるのですが・・・。どうすればいいの?mt4のインストール方法 ...

 
Vladimir Pastushak:

Linuxシステムの仮想マシンでは、mt4はプロキシ設定を 必要としますが、そこに何を入力すればいいのかわかりません。

他のプログラムはすべてプロキシなしで動作し、問題なくオンラインになるのですが・・・。どうすればいいの?mt4のインストール方法 ...

仮想マシンの設定で、ネットワークアダプターにbridgedオプションがあるか?
 

にメール(skype)を挿入できるようにするにはどうしたらいいのでしょうか?

#プロパティリンク

(メールだけの場合、クリックしてもリンクは無効です)。

 
Vasyl Nosal:

にメール(skype)を挿入できるようにするにはどうしたらいいのでしょうか?

#プロパティリンク

(メールだけの場合、クリックしてもリンクは無効です)

今、私はそれを手に取り、試してみました。

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

それは機能する ;)

 
Stanislav Korotky:
仮想マシンの設定で、ネットワークアダプターにブリッジが使用可能か?
までもない