Hatalar, hatalar, sorular - sayfa 1580

[Silindi]  

Sitenin ana sayfası, metinde HTML karakterlerini görüntüler. Chrome 64 Win 10 64.

 

Derleme Hatası

 template < typename T>
class A {
public :
        A( T t1 ) : t( t1 ) {}
        T operator []( int ) { return t; }
        T t;
};
typedef void (*fn)();
void OnStart ()
{
        A<fn> a( OnStart );
        a.operator[]( 0 )(); //нормально
        a[            0 ](); // error: ')' - expression expected
}
 

ArrayIsSeries() bu komut dosyasında her zaman false döndürür:

 //+------------------------------------------------------------------+
//|                                                     TestCopy.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link        "https://login.mql5.com/ru/users/artmedia70"
#property version    "1.00"
#property strict
#property script_show_inputs

enum enumYN
  {
   enYes= 1 , // Да
   enNo= 0 ,   // Нет
  };

//--- input parameters
input int Search_Period= 10 ;   // Количество копируемых свечей
int searchPeriod=(Search_Period< 1 )? 1 :Search_Period;
input int Delta= 2 ;             // Количество пунктов допуска
int delta=(Delta< 0 )? 0 :Delta;
input enumYN AsSeries=enYes;   // Массив array как таймсерия
MqlRates array[];             // Массив структур для копирования Open, High, Low, Close, Time
  
struct DataCandle             // Структура для хранения всех совпадений
  {
   int number_matched;           // Количество совпадений
   MqlRates reference_candle;     // Данные эталонной свечи
   MqlRates matched_candles[];   // Массив свечей, совпадающих с эталонной по нужному критерию 
  };
  DataCandle dataCandle[];     // Массив структур данных свечей и их совпадений
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   int copy_bars=( int ) fmin (Search_Period, Bars ( Symbol (), Period ()));   // количество копируемых свечей
   int copied= CopyRates ( Symbol (), PERIOD_CURRENT , 1 ,copy_bars,array);   // копируем данные
   if (copied> 0 ) {                                                     // если скопировали
       ArraySetAsSeries (array,AsSeries);                               // задаём массив как таймсерию или нет
       ArrayResize (dataCandle,copied);                                 // задаём размер структуры равным числу скопированных данных
       ZeroMemory (dataCandle);                                         // Обнуляем данные в структуре
       //--- основной цикл по "эталонным" свечам в массиве array. Их параметры будем искать в доп. цикле
       for ( int i= 0 ; i<copy_bars- 1 ; i++) {                             // цикл по скопированным данным от начала до "на один меньше размера массива"
         dataCandle[i].reference_candle.high=array[i].high;           // ищем этот high
         dataCandle[i].reference_candle.low=array[i].low;             // запомнили low для сравнения
         dataCandle[i].reference_candle.time=array[i].time;           // запомнили time для вывода в журнал
         //--- поиск совпадений с эталонной свечой, индексируемой индексом основного цикла i
         int size= 0 ;                                                 // размер массива совпадающих свечей
         ArrayResize (dataCandle[i].matched_candles,size);             // Размер массива совпадений в ноль
         dataCandle[i].number_matched=size;                           // Инициализируем количество совпадений нулём
         //--- теперь ищем совпадения по high свечей в цикле j с high эталонной свечи с индексом i
         for ( int j= 0 ; j<copy_bars; j++) {                             // в цикле от i+1 до copy_bars
             if (j==i) continue ;                                       // пропустим свечу "саму себя"
             //--- если совпадают high эталонной свечи (i) и свечи с индексом j (с допуском на величину Point)
             if ( NormalizeDouble (delta* Point ()- fabs (array[i].high-array[j].high), Digits ())>= 0 ) {
               size++;                                               
               ArrayResize (dataCandle[i].matched_candles,size);             // увеличим размер массива совпадающих свечей
               dataCandle[i].number_matched=size;                           // запишем количество совпадений
               dataCandle[i].matched_candles[size- 1 ].high=array[j].high;   // запишем в массив high совпадающей свечи
               dataCandle[i].matched_candles[size- 1 ].low=array[j].low;     // запишем в массив low совпадающей свечи
               dataCandle[i].matched_candles[size- 1 ].time=array[j].time;   // запишем в массив время совпадающей свечи
               //Print("Время свечи ",i," :",TimeToString(dataCandle[i].reference_candle.time=array[i].time),", high=",DoubleToString(dataCandle[i].reference_candle.high=array[i].high,Digits()),". Совпадение со свечой ",TimeToString(dataCandle[i].matched_candles[size-1].time=array[j].time),", её high ",DoubleToString(dataCandle[i].matched_candles[size-1].high=array[j].high,Digits()),". Совпадений: ",(string)dataCandle[i].number_matched);
               }
            }
         }
      }

   //--- Посмотрим чего понаписали в массивы
   Alert ( "Array is series: " , ArrayIsSeries (array),
         "\ntime array[0]: " , TimeToString (array[ 0 ].time, TIME_DATE | TIME_MINUTES ),
         "\ntime array[" , string (searchPeriod- 1 ), "]: " , TimeToString (array[ ArraySize (array)- 1 ].time, TIME_DATE | TIME_MINUTES ));
   for ( int i= 0 ; i< ArraySize (dataCandle)- 1 ; i++) {
       string refs_txt= "" ;
       string matched_txt= "" ;
      refs_txt= "Свеча " + IntegerToString (i, 2 , '0' )+ ": время " + TimeToString (dataCandle[i].reference_candle.time)+ ", high: " + DoubleToString (dataCandle[i].reference_candle.high, Digits ())+ " имеет совпадений: " +( string )dataCandle[i].number_matched+ " шт. " ;
       if (dataCandle[i].number_matched> 0 ) {
         for ( int j= 0 ; j< ArraySize (dataCandle[i].matched_candles); j++) {
            matched_txt= "Совпадение " + IntegerToString (j+ 1 )+ ": " + TimeToString (dataCandle[i].matched_candles[j].time)+ ", high: " + DoubleToString (dataCandle[i].matched_candles[j].high, Digits ());
            }
         }
       Print (refs_txt,matched_txt);
      }
  }
//+------------------------------------------------------------------+
 
Grafik parametreleri aracılığıyla ÜFE göstergesini ( inç başına piksel ) bulmak mümkün müdür? Panelim için çok faydalı. WinAPI sunmayın.
 
Andrey Voytenko :
Grafik parametreleri aracılığıyla ÜFE göstergesini ( inç başına piksel ) bulmak mümkün müdür? Panelim için çok faydalı. WinAPI sunmayın.

Duyurularda bulunan:

MQL5: İstemci terminal özelliklerinin ENUM_TERMINAL_INFO_INTEGER numaralandırmasına TERMINAL_SCREEN_DPI değeri eklendi — ekranda bilgi görüntüleme çözünürlüğü, yüzeyin doğrusal inç başına nokta sayısı (DPI) olarak ölçülür. Bu parametreyi bilmek, grafik nesnelerinin boyutunu, farklı çözünürlüklerdeki monitörlerde aynı görünecek şekilde ayarlamanıza olanak tanır.

Yardım edecek?
 
Bir makale yazarken, bir resim eklemeye çalışırken , "sadece resimler" filtresi yoktur - kesinlikle tüm dosyalar seçilen klasörde görünür, hatta resimlerle hiç ilgisi olmayanlar bile.
 
Karputov Vladimir :

Duyurularda bulundu: TERMINAL_SCREEN_DPI

Yardım edecek?

Evet, ne gerekli. Sayesinde.
 
Göstergedeki OnChartEvent, siz çizelgeye bir Uzman Danışman yükleyene kadar CHARTEVENT_MOUSE_MOVE çalışmıyor

Lütfen hata ile bana yardım edin

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

HATA!!! Göstergedeki OnChartEvent, siz çizelgeye bir Uzman Danışman yükleyene kadar CHARTEVENT_MOUSE_MOVE çalışmaz.

Vladislav Andruschenko , 2016.05.13 12:29

Göstergedeki OnChartEvent, siz çizelgeye bir Uzman Danışman yükleyene kadar CHARTEVENT_MOUSE_MOVE çalışmıyor

Aslında bir konu.

2016.05.13 13:23:49.434 Windows 7 Ultimate (x64 tabanlı PC), IE 11.00, 8 x Intel Core i7-6700 @ 3.40GHz, RAM: 22784 / 32684 Mb, HDD: 16315 / 1498122 Mb, GMT+02:00

böyle.

bir test göstergesi var

minimum kod:

 void OnChartEvent ( const int id,

                   const long &lparam,

                   const double &dparam,

                   const string &sparam)

  {

   Comment ( " MOVE \n id=" +id+ " \n lparam=" +lparam+ " \n dparam=" +dparam+ " \n sparam=" +sparam
           );


  }

bu nedenle, göstergeyi grafiğe eklerken - yorum, fare imlecinin geçerli konumunu göstermez,

Grafiğe tıklarsanız - son koordinatları görüntüler ve ardından hareket ederken bunları değiştirmez, yani. CHARTEVENT_MOUSE_MOVE parametresi - bu durumda çalışmaz

Sorun aynen şu şekilde çözüldü:

grafiğe herhangi bir uzman eklerken - o zaman gösterge normalde yorumu günceller, yani. imleci izler ve koordinatlarını görüntüler.

Daha sonra Expert Advisor'ı tablodan kaldırsanız bile, gösterge normalde imleç koordinatlarını görüntüler.

Prosedür:

1. yeni bir grafik açın

2. Bir test göstergesi atıyorum

3. Yorum, CHARTEVENT_MOUSE_MOVE bayrağını göstermiyor (id =0)

4. Herhangi bir uzmanı çizelgeye atarım

5. Gösterge normalde CHARTEVENT_MOUSE_MOVE eylemini göstermeye başlar (id =10)


 
Vladislav Andruschenko :
Göstergedeki OnChartEvent, siz çizelgeye bir Uzman Danışman yükleyene kadar CHARTEVENT_MOUSE_MOVE çalışmıyor

Lütfen hata ile bana yardım edin

Geliştiricilerin size soracağı ilk soru - CHART_EVENT_MOUSE_MOVE etkin mi?
 
Alexander Puzanov :
Geliştiricilerin size soracağı ilk soru - CHART_EVENT_MOUSE_MOVE etkin mi?

Teşekkür ederim. Bilmediğim bir şey. ... .. .... ...