NormalFiyat Hatası! Herkese iyi günler. Normal bir kenar boşluğunu mql4'ten mql5'e yeniden işlemek NormalPrice hatası veriyor. Köpeğin nereye gömüldüğünü anlamaya yardımcı olun.
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
CPositionInfo o_position; //класс для управления открытыми позициями
CTrade o_trade;
CSymbolInfo o_symbol;
COrderInfo o_order;
//+------------------------------------------------------------------+//| Переменные вводимые при запуске параметры |//+------------------------------------------------------------------+inputdouble StartLot = 0.1 ;
inputint Indent = 30 ;
inputint Step = 10 ;
inputdouble ProfitClose = 20 ;
inputint MagicNumber = 12345 ;
inputint Slippage = 30 ;
//+------------------------------------------------------------------+//| Изменяемые параметры в программе |//+------------------------------------------------------------------+int dStep;
int dIndent;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
dStep = Step;
dIndent = Indent;
if (!o_symbol.Name( Symbol ()))
return ( INIT_FAILED );
RefreshRates ();
o_trade.SetExpertMagicNumber(MagicNumber);
//Проверка режимов открытия ордеров через функциюif (IsFillingTypeAllowed (o_symbol.Name(), SYMBOL_FILLING_FOK ))
{
o_trade.SetTypeFilling( ORDER_FILLING_FOK );
}
elseif (IsFillingTypeAllowed (o_symbol.Name(), SYMBOL_FILLING_IOC ))
{
o_trade.SetTypeFilling( ORDER_FILLING_IOC );
}
else
{
o_trade.SetTypeFilling( ORDER_FILLING_RETURN );
}
o_trade.SetDeviationInPoints(Slippage);
if (o_symbol. Digits () == 3 || o_symbol. Digits () == 5 )
{
dStep *= 10 ;
dIndent *= 10 ;
}
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
datetime lpos_time = 0 ;
double lpos_price_open = 0.0 ;
double lpos_volume = 0.0 ;
ENUM_POSITION_TYPE lpos_type = - 1 ;
int pos_count = 0 ;
double sum_profit = 0 ;
//счечик открытых позицийfor ( int i = PositionsTotal () - 1 ; i>= 0 ; i--)
{
if (o_position.SelectByIndex(i))
{
if (o_position. Symbol () == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
if (o_position. Time () > lpos_time) //если время позиции больше чем время последней позиции
{
lpos_time = o_position. Time ();
lpos_price_open = o_position.PriceOpen();
lpos_volume = o_position. Volume ();
lpos_type = o_position.PositionType();
}
pos_count++;
sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit();
}
}
}
//счетчик количества отложенных ордеровint stop_count = 0 ;
for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--) //OrderTotal считает только отложенные ордера
{
if (o_order.SelectByIndex(i))
{
if (o_order. Symbol () == o_symbol.Name() && o_order.Magic() == MagicNumber)
stop_count++;
}
}
//Функция проверки котировокif (! RefreshRates ())
return ;
//if (sum_profit > ProfitClose)
{
CloseAll();
return ;
}
//if (pos_count> 0 )
{
if (lpos_type == POSITION_TYPE_BUY && o_symbol. Bid () < lpos_price_open - dStep * o_symbol. Point ())
{
o_trade.Sell(lpos_volume * 2 , o_symbol.Name());
}
if (lpos_type == POSITION_TYPE_SELL && o_symbol. Ask () < lpos_price_open + dStep * o_symbol. Point ())
{
o_trade.Buy(lpos_volume * 2 , o_symbol.Name());
}
o_trade.SellStop(StartLot, o_symbol. Bid () - dIndent * o_symbol. Point ());
o_trade.BuyStop(StartLot, o_symbol. Ask () + dIndent * o_symbol. Point ());
return ;
}
if (pos_count > 0 && stop_count > 0 )
DeleteStopOrders();
}
//Функция проверки котировокboolRefreshRates ()
{
if (!o_symbol. RefreshRates ())
return ( false );
if (o_symbol. Ask () == 0 || o_symbol. Bid () == 0 )
return ( false );
return ( true );
}
//+------------------------------------------------------------------+bool IsFillingTypeAllowed ( string symbol, int fill_type)
{
int filling = ( int ) SymbolInfoInteger (symbol, SYMBOL_FILLING_MODE ); //запрашиваем режим открытияreturn (filling && fill_type);
}
//+------------------------------------------------------------------+void CloseAll()
{
for ( int index = PositionsTotal ()- 1 ; index >= 0 ; index--)
{
if (o_position.SelectByIndex(index))
{
if (o_position. Symbol () == o_symbol.Name() && o_position.Magic() == MagicNumber)
{
o_trade.PositionClose(o_position.Ticket());
}
}
}
}
//+Функция удаления стоп ордеровvoid DeleteStopOrders()
{
for ( int i = OrdersTotal ()- 1 ; i>- 0 ; i--)
{
if (o_order.SelectByIndex(i))
if (o_order. Symbol () == o_symbol.Name() && o_order.Magic() == MagicNumber)
o_trade. OrderDelete (o_order.Ticket());
}
}
Evgeniy Kazeikin : Soru konu başlığında olmayabilir ama ben onu böyle yaratmanın mantığını göremiyorum. burada soracağım. Sinyal güvenilirliği neye dayanır?
Karmaşık bir formüle göre hesaplanan beş veya altı bileşen vardır, ardından karşılık gelen renkle bir ölçek çizilir.
Test cihazının yukarıdaki hatalarına ek olarak (çok para birimli bir Expert Advisor'ı test ediyorum), diğer sembollerin test cihazında görüntülenmesini istemiyor ve yine 4001 numaralı çok sayıda senkronizasyon dışı hata hata veriyor. kayıt.
Yine, 1981 yapısında her şey hatasız çalıştı. 1983'te - sorun.
Senkronizasyon kontrol fonksiyonu:
//+------------------------------------------------------------------+//| Проверка синхронизации данных |//+------------------------------------------------------------------+bool CheckSync( conststring &usingSymbols[], // Список используемых символовconstENUM_TIMEFRAMES timeframe // Рабочий ТФ
)
{
//--- Цикл по символамfor ( int i= 0 ; i<_symbolsSize; i++)
{
//--- Проверяем синхронизацию i-го символаif (! SymbolIsSynchronized (usingSymbols[i]) || // Если нет синх. данных терминала и сервера или..
! SeriesInfoInteger (usingSymbols[i],timeframe, SERIES_SYNCHRONIZED )) // ..не синх. данные по символу/периоду на данный момент
{
//---Print ( __FUNCTION__ , ": ВНИМАНИЕ! Синхронизация по '" +usingSymbols[i]+ "' ТФ " + EnumToString (timeframe)+ " отсутствует!" );
Print ( __FUNCTION__ , ": error = " , GetLastError ());
//--- Возвращаем ложьreturn ( false );
}
}
//--- Все символы синхронизованыreturn ( true );
}
Senkronizasyon, CopyTime() işlevi tarafından her sembol için her dakika veri talebi tarafından desteklenir. ResetLastError(), senkronizasyon kontrol işlevlerini çağırmadan önce 4001 hata numarasını sıfırlamaz.
Merhaba, 8 Kasım'daki MT5 güncellemesinden sonra, strateji test cihazında artık bu script kullanılarak yatay çizgiler çizilmiyordu. Ve yorum görüntülenmiyor.
Merhaba, 8 Kasım'daki MT5 güncellemesinden sonra, strateji test cihazında artık bu script kullanılarak yatay çizgiler çizilmiyordu. Lütfen nasıl düzelteceğimi söyle.
Test cihazının yukarıdaki hatalarına ek olarak (çok para birimli bir Expert Advisor'ı test ediyorum), diğer sembollerin test cihazında görüntülenmesini istemiyor ve yine 4001 numaralı çok sayıda senkronizasyon dışı hata hata veriyor. kayıt.
Yine, 1981 yapısında her şey hatasız çalıştı. 1983'te - sorun.
Senkronizasyon kontrol fonksiyonu:
Senkronizasyon, CopyTime() işlevi tarafından her sembol için her dakika veri talebi tarafından desteklenir. ResetLastError(), senkronizasyon kontrol işlevlerini çağırmadan önce 4001 hata numarasını sıfırlamaz.
Merak ediyorum, 1983 yapısında bu sorunu yaşayan başka biri var mı? Çoklu para birimi test cihazı kahve demlemeyi reddetti , tek para birimi test cihazına dönüşmüş gibi görünüyor. Farklı semboller için çubuklar almaya çalışıyorum - hangisini talep ettiğimden bağımsız olarak , test cihazı ayarlarında ayarlanmış olanı döndürüyor.
aBarsCHFJPY[0], aBarsEURUSD[0], aBarsUSDCHF[0] değerlerinde hata ayıklamanın altına bakıyorum ve bunların tamamen aynı olduğunu (ve hangilerinin test cihazı ayarlarında seçilen sembole bağlı olduğunu) görüyorum. Test cihazının tarihini değiştirmek hiçbir şeyi etkilemez. Olduğu söyleniyor, karakter özellikleri doğru görünüyor. 1966'yı inşa etmeye geri döndüm - orada her şey yolunda.
NormalFiyat Hatası! Herkese iyi günler. Normal bir kenar boşluğunu mql4'ten mql5'e yeniden işlemek NormalPrice hatası veriyor. Köpeğin nereye gömüldüğünü anlamaya yardımcı olun.
Sinyal güvenilirliği neye dayanır?
Soru konu başlığında olmayabilir ama ben onu böyle yaratmanın mantığını göremiyorum. burada soracağım.
Sinyal güvenilirliği neye dayanır?
Test cihazının yukarıdaki hatalarına ek olarak (çok para birimli bir Expert Advisor'ı test ediyorum), diğer sembollerin test cihazında görüntülenmesini istemiyor ve yine 4001 numaralı çok sayıda senkronizasyon dışı hata hata veriyor. kayıt.
Yine, 1981 yapısında her şey hatasız çalıştı. 1983'te - sorun.
Senkronizasyon kontrol fonksiyonu:
Senkronizasyon, CopyTime() işlevi tarafından her sembol için her dakika veri talebi tarafından desteklenir. ResetLastError(), senkronizasyon kontrol işlevlerini çağırmadan önce 4001 hata numarasını sıfırlamaz.
Merhaba, 8 Kasım'daki MT5 güncellemesinden sonra, strateji test cihazında artık bu script kullanılarak yatay çizgiler çizilmiyordu. Ve yorum görüntülenmiyor.
Nasıl düzelteceğimi söyle.
Hata 4001.
Merhaba, 8 Kasım'daki MT5 güncellemesinden sonra, strateji test cihazında artık bu script kullanılarak yatay çizgiler çizilmiyordu. Lütfen nasıl düzelteceğimi söyle.
Hata 4001.onaylıyorum.
Terminal ve sistem:
Örnek: Günlük aralık EA , OBJ_HLINE nesneleri ile çalışır. Hata test cihazı:
Test cihazının yukarıdaki hatalarına ek olarak (çok para birimli bir Expert Advisor'ı test ediyorum), diğer sembollerin test cihazında görüntülenmesini istemiyor ve yine 4001 numaralı çok sayıda senkronizasyon dışı hata hata veriyor. kayıt.
Yine, 1981 yapısında her şey hatasız çalıştı. 1983'te - sorun.
Senkronizasyon kontrol fonksiyonu:
Senkronizasyon, CopyTime() işlevi tarafından her sembol için her dakika veri talebi tarafından desteklenir. ResetLastError(), senkronizasyon kontrol işlevlerini çağırmadan önce 4001 hata numarasını sıfırlamaz.
Bu hata zaten düzeltildi.
onaylıyorum.
Terminal ve sistem:
Örnek: Günlük aralık EA , OBJ_HLINE nesneleri ile çalışır. Hata test cihazı:
Bir sonraki derlemede düzeltilecektir.
1984 MQ demo sunucusu oluşturun
Merak ediyorum, 1983 yapısında bu sorunu yaşayan başka biri var mı? Çoklu para birimi test cihazı kahve demlemeyi reddetti , tek para birimi test cihazına dönüşmüş gibi görünüyor. Farklı semboller için çubuklar almaya çalışıyorum - hangisini talep ettiğimden bağımsız olarak , test cihazı ayarlarında ayarlanmış olanı döndürüyor.
İşte hata yaptığım basit bir Uzman Danışman.
aBarsCHFJPY[0], aBarsEURUSD[0], aBarsUSDCHF[0] değerlerinde hata ayıklamanın altına bakıyorum ve bunların tamamen aynı olduğunu (ve hangilerinin test cihazı ayarlarında seçilen sembole bağlı olduğunu) görüyorum. Test cihazının tarihini değiştirmek hiçbir şeyi etkilemez. Olduğu söyleniyor, karakter özellikleri doğru görünüyor. 1966'yı inşa etmeye geri döndüm - orada her şey yolunda.