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.
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?
Çı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.
///////////////////////////////////////////////////////////////////////////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
Данный индикатор создан на базе одной из версий известного индикатора Virtual Equity (автор: Xupypr) и был адаптирован для целей портфельного моделирования и парного трейдинга. Индикатор предназначен для быстрого анализа графиков изменения стоимости портфелей/синтетиков непосредственно перед открытием позиций. Есть два основных сценария...
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.
Bu nasıl? OnTick()'e hiçbir olay parametresi iletilmez.
Ama bir düğmeye basmak kontrol edilir
OnChartEvent()'teki tam olarak aynı kontrol, tek farkla, kontrolün her tick'te değil, sadece basıldığı anda gerçekleştirilir.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.
Çı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.
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ış;
Bu nasıl? OnTick()'e hiçbir olay parametresi iletilmez.
https://www.mql5.com/ru/forum/171668#comment_10574757
EquityChartModeller göstergesinin kodunu ayrıştırıyorum.
2 kullanıcı işlevi vardır:
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
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 :
Kodu doğru yapıştırın :
düzeltildi
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.