-Alexey- : Neden, "Başlat" düğmesine bastığımda, test cihazı ilk depozito seviyesinden değil, son testin bittiği seviyeden test yapıyor. 4-ke'de böyle bir sorun yok. İlk depozito seviyesinden teste nasıl başlanır ?
Parabolik durdurma ile ortadaki Expert Advisor'ı oluşturuyorum. Testi açılış fiyatlarında çalıştırıyorum, "iptal"e tıklayın. İkinci kez çalıştırıyorum - açıklanan durum ortaya çıkıyor (aynı zamanda bakiye ve özkaynak grafiği yeniden çizilmez, ancak devam eder). Ustadan olmayan uzmanlarla her şey yolunda.
Вы хотите быстро проверить торговую идею, не тратя времени на программирование? Выберите в "Мастере MQL5" нужный тип торговых сигналов, подключите модули сопровождения позиций и управления капиталом - на этом вся работа закончена. Создайте свои реализации модулей или закажите их через сервис "Работа" - и комбинируйте новые модули с уже существующими.
Çoklu para birimi test modunda, iki cihazda yeni bir çubuğun görünmesini beklediğimizde, test cihazı yanlış davranıyor.
Birkaç açıklama. isNewBar işlevinde, ana sembolde yeni bir çubuk göründüğünde, başka bir finansal enstrümanda yeni bir çubuğun görünmesini döngüde bekleriz.
Kodu ekliyorum.
//в тестере баг в режиме мультивалютного тестирования//позиция открывается если на двух инструментах появился новый бар #include <Trade\Trade.mqh>#include <Trade\OrderInfo.mqh>#include <Trade\PositionInfo.mqh>//--- input parametersinputint Per= 10 ; //период средней inputstring Instrum1= "EURUSD" ; //первый инструментinputstring Instrum2= "GBPUSD" ; //второй инструмент//-------------------------------------------------------
CTrade trade; //торговые функции
COrderInfo orderinfo; //информация об ордере
CPositionInfo posinfo; //информация о позицииint hiMA ; //хэндл индикатора intOnInit ()
{
hiMA= iMA ( _Symbol , _Period ,Per, 0 , MODE_SMA , PRICE_OPEN ) ;
if (hiMA < INVALID_HANDLE ) return (- 1 ) ;
return ( 0 );
}
//====================================================================voidOnDeinit ( constint reason)
{
IndicatorRelease (hiMA) ;
}
//=====================================================================voidOnTick ()
{
if (!isNewBar(Instrum2)) return ;
//Print(" Это новый бар ");double Ma[ 1 ] ; //показания индикатора CopyBuffer (hiMA, 0 , 0 , 1 ,Ma) ;
MqlTick price; // будет использоваться для получения текущих/последних котировок ценыbool possel=posinfo.Select(Instrum1) ;
SymbolInfoTick (Instrum1,price) ;
if (possel && price.bid > Ma[ 0 ] && posinfo.PositionType() == POSITION_TYPE_SELL )
{ //цена выше средней закрываем короткую позу
trade.PositionClose(Instrum1) ; return ;
}
if ( !possel && price.bid > Ma[ 0 ])
{ //цена выше средней нет поз открываем длинную позу
trade.Buy( 0.1 ,Instrum1, 0 , 0 , 0 , NULL ) ; return ;
}
if ( possel && price.ask < Ma[ 0 ] && posinfo.PositionType() == POSITION_TYPE_BUY )
{ //цена ниже средней закрываем длинную позу
trade.PositionClose(Instrum1) ; return ;
}
if (!possel && price.ask < Ma[ 0 ])
{ // цена ниже средней нет поз открываем короткую позу
trade.Sell( 0.1 ,Instrum1, 0 , 0 , 0 , NULL ) ;
}
return ;
}
//=======================================================================bool isNewBar( string other_symbol)
{ //возвращает труе если новый бар на двух инструментахstaticdatetime last_bar_time= 0 ;
int cntsleep ;
if (last_bar_time== 0 )
{ //--- это первый вызов, запишем время открытия и выйдем
last_bar_time=( datetime ) SeriesInfoInteger ( _Symbol , Period (), SERIES_LASTBAR_DATE );
return ( false );
}
datetime curr_time=( datetime ) SeriesInfoInteger ( Symbol (), Period (), SERIES_LASTBAR_DATE );
if (curr_time!=last_bar_time)
{ //время открытия не совпадает это новый бар
last_bar_time=curr_time;
cntsleep= 0 ;
while (!(curr_time == ( datetime ) SeriesInfoInteger (other_symbol, Period (), SERIES_LASTBAR_DATE )))
{ // ждем появления нового бара на втором инструменте Sleep ( 5000 );
if (cntsleep > 10 ) return ( false ) ; // недождались
cntsleep++ ;
}
return ( true ) ;
}
return ( false ) ;
}
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
Tam olarak neyi hata olarak görüyorsun, özellikle açıkla lütfen. Testin ayrıntılarını, elde edilen sonucu veya beklenen sonucu vermediniz.
Ayrıca MetaTrader 5 Test Temelleri makalesine dikkatinizi çekmek isterim. Kene oluşturma mekanizmasının ve temel kavramların bir açıklamasını içerir.
Her şey basit.
Optimizasyon için EA'yı çalıştırıyoruz ve aşağıdaki sonucu görüyoruz.
Örneğin 4. geçişi seçiyoruz, danışmanı çalıştırıyoruz, tüm işlemlerle normal çalışmasını sağlıyoruz, işte rapor.
Bir his var. Açık bir çubukta açılmadıysa, çoklu para birimi optimizasyon modundaki test cihazının bir anlaşmayı bir çubuğa bağlayamaması.
Döngüyü isNewBar işlevinde yorumlarsanız, mantıksal olarak, başka bir enstrümanda yeni bir çubuğun görünmesini beklemeyin, o zaman her şey çalışır. Terminal sürüm 5 yapı 642.
Oradan makaleler, kodlar okudum, herhangi bir hata görmüyorum. Kendimi bilsem de gidip tekrar okuyacağım.
-Alexey- : Parabolik durdurma ile ortadaki Expert Advisor'ı oluşturuyorum. Testi açılış fiyatlarında çalıştırıyorum, "iptal"e tıklayın. İkinci kez çalıştırıyorum - açıklanan durum ortaya çıkıyor (aynı zamanda bakiye ve özkaynak grafiği yeniden çizilmez, ancak devam eder). Ustadan olmayan uzmanlarla her şey yolunda.
İşte bir kod parçası. trpar2=false olduğunda, giriş parametreleri int grusdchf=100 olacak şekilde nasıl yapılır; girdi int grusjpy=100; optimize edilmemiş
İşte bir kod parçası. trpar2=false olduğunda giriş parametrelerinin int grusdchf=100; girdi int grusjpy=100; optimize edilmemiş
inputbool trpar2= true ;
inputint grusdchf= 100 ;
inputint grusdjpy= 100 ;
if (trpair2== false ) // если false то всегда 100
{
x_grusdchf= 100 ;
x_grusdjpy= 100 ;
}
else// если true то значения с перебора
{
x_grusdchf=grusdchf;
x_grusdjpy=grusdjpy;
}
Böyle bir ihtiyaçla karşı karşıya kalınır.Çarpık ve zalim, ancak doğru sonuç çıkıyor.Her üç girişte de onay kutuları etkinleştirilir ve ardından false ise engellenir.
Neden, "Başlat" düğmesine bastığımda, test cihazı ilk depozito seviyesinden değil, son testin bittiği seviyeden test yapıyor. 4-ke'de böyle bir sorun yok. İlk depozito seviyesinden teste nasıl başlanır ?
Tarif ettiğiniz durumu yeniden oluşturamayız.
Daha fazla ayrıntı alalım
Tarif ettiğiniz durumu yeniden oluşturamayız.
Daha fazla ayrıntı alalım
Bu bir bug gibi görünüyor.
Çoklu para birimi test modunda, iki cihazda yeni bir çubuğun görünmesini beklediğimizde, test cihazı yanlış davranıyor.
Birkaç açıklama. isNewBar işlevinde, ana sembolde yeni bir çubuk göründüğünde, başka bir finansal enstrümanda yeni bir çubuğun görünmesini döngüde bekleriz.
Kodu ekliyorum.
Bu bir bug gibi görünüyor.
Çoklu para birimi test modunda, iki cihazda yeni bir çubuğun görünmesini beklediğimizde, test cihazı yanlış davranıyor.
Tam olarak neyi hata olarak görüyorsun, özellikle açıkla lütfen. Testin ayrıntılarını, elde edilen sonucu veya beklenen sonucu vermediniz.
Ayrıca MetaTrader 5 Test Temelleri makalesine dikkatinizi çekmek isterim. Kene oluşturma mekanizmasının ve temel kavramların bir açıklamasını içerir.
Tam olarak neyi hata olarak görüyorsun, özellikle açıkla lütfen. Testin ayrıntılarını, elde edilen sonucu veya beklenen sonucu vermediniz.
Ayrıca MetaTrader 5 Test Temelleri makalesine dikkatinizi çekmek isterim. Kene oluşturma mekanizmasının ve temel kavramların bir açıklamasını içerir.
Her şey basit.
Optimizasyon için EA'yı çalıştırıyoruz ve aşağıdaki sonucu görüyoruz.
Örneğin 4. geçişi seçiyoruz, danışmanı çalıştırıyoruz, tüm işlemlerle normal çalışmasını sağlıyoruz, işte rapor.
Bir his var. Açık bir çubukta açılmadıysa, çoklu para birimi optimizasyon modundaki test cihazının bir anlaşmayı bir çubuğa bağlayamaması.
Döngüyü isNewBar işlevinde yorumlarsanız, mantıksal olarak, başka bir enstrümanda yeni bir çubuğun görünmesini beklemeyin, o zaman her şey çalışır. Terminal sürüm 5 yapı 642.
Oradan makaleler, kodlar okudum, herhangi bir hata görmüyorum. Kendimi bilsem de gidip tekrar okuyacağım.
İyi tatiller.
Parabolik durdurma ile ortadaki Expert Advisor'ı oluşturuyorum. Testi açılış fiyatlarında çalıştırıyorum, "iptal"e tıklayın. İkinci kez çalıştırıyorum - açıklanan durum ortaya çıkıyor (aynı zamanda bakiye ve özkaynak grafiği yeniden çizilmez, ancak devam eder). Ustadan olmayan uzmanlarla her şey yolunda.
Hizmet masasında bir uygulama oluşturun;
İşte bir kod parçası. trpar2=false olduğunda, giriş parametreleri int grusdchf=100 olacak şekilde nasıl yapılır; girdi int grusjpy=100; optimize edilmemiş
İşte bir kod parçası. trpar2=false olduğunda giriş parametrelerinin int grusdchf=100; girdi int grusjpy=100; optimize edilmemiş
Test cihazında bu parametrelerin yanındaki onay kutularını işaretlemeyin. Veya soruyu netleştirin, aksi takdirde bir belirsizlik görüyorum. :)
Soru:
İşleve nesnelere bir dizi işaretçi iletmeniz gerekir. Referans olarak, elbette (bir dizi).
Hangi sözdizimi kullanılır?
şüpheleniyor muyum? Yoksa başka bir şeye mi ihtiyacınız var?
İşte bir kod parçası. trpar2=false olduğunda giriş parametrelerinin int grusdchf=100; girdi int grusjpy=100; optimize edilmemiş