MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 763

 
Alexey Viktorov :

OnTick()'te düğmenin tıklanmasını kontrol edin. OnTick() içindeki test edici - kontrol çalışıyorsa, koşullu olarak yapılabilir, ancak gerçek hayatta bu kontrolün bloğu yürütülmez ve OnChartEvent() içinde kontrol olur.

Bu nasıl? OnTick()'e hiçbir olay parametresi iletilmez.

 
Ilya Prozumentov :

Bu nasıl? OnTick()'e hiçbir olay parametresi iletilmez.

Ama bir düğmeye basmak kontrol edilir

 if ( ObjectGetInteger ( 0 , "name" , OBJPROP_STATE ) == true )
  {
   // Делаем что надо по нажатию кнопки и возвращаем прежнее её состояние
   ObjectSetInteger ( 0 , "name" , OBJPROP_STATE , false );
  }


OnChartEvent()'teki tam olarak aynı kontrol, tek farkla, kontrolün her tick'te değil, sadece basıldığı anda gerçekleştirilir.
 
Alexey Viktorov :

Ama düğmeye basma kontrol ediliyor


OnChartEvent()'teki tam olarak aynı kontrol, tek farkla, kontrolün her tick'te değil, sadece basıldığı anda gerçekleştirilir.

Çıkış anında değil mi? Bir nesneye yapılan tıklama, yalnızca nesnenin içinde basılı tutulduğunda sayılır. Bir nesneye tıklarsanız, düğmeyi basılı tutarken imleci ondan hareket ettirirseniz ve ardından serbest bırakırsanız, nesneye yapılan tıklama kaydedilecek mi?

Ancak henüz denemedim.

 
Artyom Trishkin :

Çıkış anında değil mi? Bir nesneye yapılan tıklama, yalnızca nesnenin içinde basılı tutulduğunda sayılır. Bir nesneye tıklarsanız, düğmeyi basılı tutarken imleci ondan hareket ettirirseniz ve ardından serbest bırakırsanız, nesneye yapılan tıklama kaydedilecek mi?

Ancak henüz denemedim.

Ben de denemedim, bu yüzden kesin bir şey söyleyemem. Ama baskı altında gibi görünüyor. Hatta bir yerde bunun tartışıldığı bir konu vardı. Hafızam tamamen değişmediyse, olayı fare düğmesine basıp bırakmaya bölmek bile istediler.

 
Ghabo :

OnChartEvent(), test cihazında çalışmıyor.

Lütfen test cihazında çalışabilecek bir düğme gösterin. Örneğin hangi bayrağın kaldırılacağına tıklayın ticaret = doğru; tekrar basın? takas=yanlış;


İlya Prozumentov :

Bu nasıl? OnTick()'e hiçbir olay parametresi iletilmez.

https://www.mql5.com/ru/forum/171668#comment_10574757

Демо счет работающий в выходные дни (Есть ли сие чудо)
Демо счет работающий в выходные дни (Есть ли сие чудо)
  • 2017.03.04
  • www.mql5.com
Доброго времени, очень увлекся разработкой на mql, но к сожалению позволить себе это могу лишь в выходные дни‌, но в выходные дни проблема с отладк...
 

EquityChartModeller göstergesinin kodunu ayrıştırıyorum.

2 kullanıcı işlevi vardır:

 ///////////////////////////////////////////////////////////////////////////
void SetPositions( string name, int number)                                           // 69 SetPositions(Portfolio_Formula_A,1)
  {
   BlocksLastN=BlocksTotal;                                                         //
   SeparateBlocks(name);                                                             // Разбиваем строку на блоки
   for ( int i=BlocksLastN;i<BlocksTotal;i++)                                         // Перебираем блоки формулы
     {
      Total++;                                                                       // Увеличиваем кол-во инструментов ++;
       ArrayResize (Lots,Total);                                                       // Устанавливаем размер массива Lots размером Total;
       ArrayResize (Instrument,Total);                                                 // Устанавливаем размер массива Instrument размером Total;
       ArrayResize (OpenPrice,Total);                                                 // Устанавливаем размер массива OpenPrice размером Total;
       ArrayResize (ClosePrice,Total);                                                 // Устанавливаем размер массива ClosePrice размером Total;
       ArrayResize (Index,Total);                                                     // Устанавливаем размер массива Index размером Total;
       int length= StringLen (Block[i]);                                               // Определяем кол-во символов в блоке;
       int p=length- 1 ;                                                               // Для перебора создаем переменную меньше на единицу;
       while (p>= 0 )                                                                   // До тех пор пока есть символ
        {
         string X= StringSubstr (Block[i],p, 1 );                                       // определяем символ;
         if (X== "+" ||X== "-" ) break ;                                                   // если дошли до знака то прекращаем;
         if (p== 0 ) break                                                             // Если дошли до первого символа то прекращаем;
         else p--;                                                                   // Иначе переходим к следующему символу 
        }
      Index[Total- 1 ]=number;
      Instrument[Total- 1 ]= StringSubstr (Block[i], 0 ,p);                               // Запоминаем элемент массива Instrument - название инструмента;
       if (p== 0 ) Lots[Total- 1 ]= 1 ;
       else Lots[Total- 1 ]= StrToDouble ( StringSubstr (Block[i],p,length-p));             // Запоминаем элемент массива Lots - направление и размер лота;
       if ( MarketInfo (Instrument[Total- 1 ], MODE_POINT )== 0 )                             // Если размера пункта инструмента нет
        {Missing= StringConcatenate (Missing, " " ,Instrument[Total- 1 ]);Error= true ;}     // Запоминаем потерявшийся инструмент "Название инструмента ERROR"
     }
  }
///////////////////////////////////////////////////////////////////////////                     // Функция разбиения строки формулы на блоки
void SeparateBlocks( string text) // 218 SeparateBlocks(name); 
  {
   string fragment= "" ;                                                                           // инструмент с направлением и лотом (до порбела)
   int length= StringLen (text);                                                                   // Возвращает число символов в строке (Portfolio_Formula_A)
   for ( int position= 0 ;position<length;position++)                                               // Перебор символов строки
     {
       int sym= StringGetChar (text,position);                                                     // Возвращает значение символа, расположенного в указанной позиции строки
       if (sym!= 32 &&sym!= 9 &&sym!= 10 &&sym!= 13 ) fragment=fragment+ StringSubstr (text,position, 1 );     // Если не пробел, не таб, не перевод строки, не возврат каретки - добавляем символ фрагменту
       if (sym== 32 ||sym== 9 ||sym== 10 ||sym== 13 ||position==length- 1 )                                 // Если пробел или таб или перевод строки или возврат каретки или последний символ строки формулы
         if ( StringLen (fragment)> 0 )                                                               // Если у фрагмента есть символы 
           {
            BlocksTotal++; ArrayResize (Block,BlocksTotal);                                       // Кол-во блоков++; Изменяем размер массива Block;
            Block[BlocksTotal- 1 ]=fragment;fragment= "" ;
           }                                                                                     // Запоминаем фрагмент в массиве; обнуляем фрагмент для след. итерации цикла
     }
  }

Nerede sarı ile vurgulandığını anlamıyorum. Portföy formülü şöyle görünüyorsa: "USDSEK-4 USDCAD+9 EURJPY-5 AUDNZD-5 EURAUD-1 GBPJPY+6 USDNOK-2", while(p>=0) döngüsünün yinelenmesi if(p)'ye nasıl ulaşabilir? ==0 ) eğer sadece işaretine ulaştıktan sonra kesilirse if(X=="+"||X=="-") break; ??

Ve daha aşağıda, eğer hepsi aynıysa if(p==0) o zaman lot neden 1'e eşit - Lot[Toplam-1]=1; ??

Gösterge burada: https://www.mql5.com/ru/code/10962

Equity Chart Modeller
Equity Chart Modeller
  • www.mql5.com
Данный индикатор создан на базе одной из версий известного индикатора Virtual Equity (автор: Xupypr) и был адаптирован для целей портфельного моделирования и парного трейдинга. Индикатор предназначен для быстрого анализа графиков изменения стоимости портфелей/синтетиков непосредственно перед открытием позиций. Есть два основных сценария...
 
Sergey :

EquityChartModeller göstergesinin kodunu ayrıştırıyorum.

2 kullanıcı işlevi vardır:

...


Gösterge burada: https://www.mql5.com/ru/code/10962

Kodu doğru yapıştırın :


 
Artyom Trishkin :

Kodu doğru yapıştırın :


düzeltildi

 
iyi günler, senaryoyu bir grafiğe nasıl çevireceğim konusunda yardım istiyorum
 
Sergey :

düzeltildi

Ve işlemek için bir stilist ? Ctrl+, (İngilizce düzeninde virgül)

seçemiyorum. Sadece yardıma ihtiyacınız var, bu da size bir çöplükte değil, uygun bir biçimde bilgi verileceği anlamına geliyor.