Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1341

 
siparişi gönderdikten sonra ret kodunun ne yazdığını görün
 
Fast235 # :
siparişi gönderdikten sonra ret kodunun ne yazdığını görün

Teşekkür ederim.

10018

TRADE_RETCODE_MARKET_CLOSED

piyasa kapalı

Yani komisyoncu ile ilgili bir sorun var.

 

Merhaba, lütfen çok fazla tekme atmayın)
Danışman var. Birkaç döviz çiftinde, endeks 1'e sahip çubuk aynı yöne (yükseliş veya düşüş) sahipse, içinde bir pozisyon açma işlevini uygulamak istiyorum.
Bunu iclose ve iopen aracılığıyla uygulamaya çalışıyorum.

Все происходит в bool-ой функцие.
Хотел реализовать конструкцию следующего вида:
if (( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;
else if (( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;

Но ничего не получилось, и открываются позиции при любой комбинации баров с индексом 1 .


Но работает следующая конструкция.

if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;

Тут советник правильно находит комбинацию из баров. Но таким способом можно искать либо комбинации из бычьих баров, либо медвежьих.


Ибо код такого вида не работает.
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
{

   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

else if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
{

   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

И такого тоже)
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
{
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))
 return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
 return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}

else if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
{
if ( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))
 return false ;
   if ( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))
   return false ;
     if ( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 ))
     return false ;
}


Gibi   Nihayet   Aynı anda düşüş ve yükseliş çubuklarının kombinasyonlarını aramak doğru mu? Bir kez daha lütfen terliklerle sert vurmayın)

 
Scarick # :

Merhaba, lütfen çok fazla tekme atmayın)
Danışman var. Birkaç döviz çiftinde, endeks 1'e sahip çubuk aynı yöne (yükseliş veya düşüş) sahipse, içinde bir pozisyon açma işlevini uygulamak istiyorum.
Bunu iclose ve iopen aracılığıyla uygulamaya çalışıyorum.

 if (( iOpen ( NULL , PERIOD_CURRENT , 1 )> iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )> iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )> iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;
else if (( iOpen ( NULL , PERIOD_CURRENT , 1 )< iClose ( NULL , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURGBP" , PERIOD_CURRENT , 1 )< iClose ( "EURGBP" , PERIOD_CURRENT , 1 ))&&( iOpen ( "EURJPY" , PERIOD_CURRENT , 1 )< iClose ( "EURJPY" , PERIOD_CURRENT , 1 )))
return false ;

Gibi   Nihayet   Aynı anda düşüş ve yükseliş çubuklarının kombinasyonlarını aramak doğru mu? Bir kez daha lütfen terliklerle sert vurmayın)

CopyRates ile çalışın ve ne kadar sipariş ettiğinizi ve ne kadar aldığınızı kontrol ettiğinizden emin olun. İşte bir örnek:

   MqlRates rates_current[],rates_eurgbp[],rates_eurjpy[];
   ArraySetAsSeries (rates_current, true );
   ArraySetAsSeries (rates_eurgbp, true );
   ArraySetAsSeries (rates_eurjpy, true );
   int start_pos= 0 ,count= 3 ;
   if ( CopyRates ( Symbol (), Period (),start_pos,count,rates_current) !=count )
       return ;
   if ( CopyRates ( "EURGBP" , Period (),start_pos,count,rates_eurgbp) !=count )
       return ;
   if ( CopyRates ( "EURJPY" , Period (),start_pos,count,rates_eurjpy) !=count )
       return ;
//---
   bool signal_buy= false ,signal_sell= false ;
   if ((rates_current[ 1 ].open>rates_current[ 1 ].close) && (rates_eurgbp[ 1 ].open>rates_eurgbp[ 1 ].close) && (rates_eurjpy[ 1 ].open>rates_eurjpy[ 1 ].close))
     {
      signal_buy= true ;
      signal_sell= false ;
     }
   else
     {
       if ((rates_current[ 1 ].open<rates_current[ 1 ].close) && (rates_eurgbp[ 1 ].open<rates_eurgbp[ 1 ].close) && (rates_eurjpy[ 1 ].open<rates_eurjpy[ 1 ].close))
        {
         signal_buy= false ;
         signal_sell= true ;
        }
     }
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Merhaba!

Durum.

Uzman Danışman, diyelim ki, hareketler üzerine yazılmıştır . Test cihazında test etmeyi bitirdiğinizde, kullanılan hareketler (kullanılan parametrelerle) pencerede görünür. Önemli değil.

Soru.

Ve aynı danışmanı piyasaya yüklediğinizde ve kullanıcı demoyu indirdiğinde - test tamamlandıktan sonra onlar da görünecek mi? Yoksa mql'nin bu konuda bir tür gizlilik politikası var mı?


Конечно, можно самому заморочиться и проверить. Но те кто, заливал продукты, поймут, что лучше просто спросить)  

 
Anton Iudakov # :

Merhaba!

Durum.

Uzman Danışman, diyelim ki, hareketler üzerine yazılmıştır . Test cihazında test etmeyi bitirdiğinizde, kullanılan hareketler (kullanılan parametrelerle) pencerede görünür. Önemli değil.

Soru.

Ve aynı danışmanı piyasaya yüklediğinizde ve kullanıcı demoyu indirdiğinde - test tamamlandıktan sonra onlar da görünecek mi? Yoksa mql'nin bu konuda bir tür gizlilik politikası var mı?


Elbette sormak daha kolay, ancak piyasaya danışman yükleyen herkes indirdikten sonra kontrol etmedi.

Ama aslında, danışman dosyasının nereden alındığının farkı nedir? Geliştirici için eşit olarak çalışacak ve piyasada şifreli olacak ...

 
Anton Iudakov # :

Merhaba!

Durum.

Uzman Danışman, diyelim ki, hareketler üzerine yazılmıştır . Test cihazında test etmeyi bitirdiğinizde, kullanılan hareketler (kullanılan parametrelerle) pencerede görünür. Önemli değil.

Soru.

Ve aynı danışmanı piyasaya yüklediğinizde ve kullanıcı demoyu indirdiğinde - test tamamlandıktan sonra onlar da görünecek mi? Yoksa mql'nin bu konuda bir tür gizlilik politikası var mı?


 TesterHideIndicators
 
lütfen söyle sonra nasıl   MQL5'te bir Expert Advisor'ı test ederken, fareyi okların üzerine getirdiğinizde bir açılır pencerede istatistiklerinizden herhangi birini görüntüleyin?
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями - вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Каждый советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых стратегий, чтобы получить о нем максимально полное представление.
 

Göstergeyi düzeltmeye yardımcı olun. Belirtilen değerden fiyat adımı/gridini çizer. Sorun şu ki, onu kaldırdığımda grafikte çizgiler kalıyor. Ayrıca grafiğe aynı türden ikinci bir gösterge ekleyemiyorum. Genel olarak nasıl çizelgeden tamamen çıkartılır ve aynı göstergeyi farklı değerlerle çizelge üzerine atabilirsiniz.

 #property link        " https://www.forexsystems.biz "
#property version    "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots    0
//--- входные параметры 
input int count = 500 ;       //количество линий вверх вниз от цены
input int step  = 100 ;     //шаг линий 
input double pr = 1.1 ;   //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
   Comment ( "" );
   
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine( const string name= "HLine" , double price= 0 )
  {
//--- создадим горизонтальную линию 
   if (! ObjectCreate ( 0 ,name, OBJ_HLINE , 0 , 0 ,price))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- установим цвет линии 
   ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrDodgerBlue );
   ObjectSetInteger ( 0 ,name, OBJPROP_WIDTH , 2 );
   return ( true );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for ( int i= 0 ;i<=count;i++)
     {
      HLine( "HLine" +( string )i,price+step*i* _Point );
      HLine( "HLine" +( string )(i+count+ 1 ),price-step*i* _Point );
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+


 
Green handsome # :

Göstergeyi düzeltmeye yardımcı olun. Belirtilen değerden fiyat adımı/ızgarası çizer. Sorun şu ki, onu kaldırdığımda grafikte çizgiler kalıyor. Ayrıca grafiğe aynı türden ikinci bir gösterge ekleyemiyorum. Genel olarak nasıl çizelgeden tamamen çıkartılır ve aynı göstergeyi farklı değerlerle çizelge üzerine atabilirsiniz.

OnDeinit'te yapmanız gereken ObjectsDeleteAll - önekle sil (sizin durumunuzda önek "HLine" dir)

 int    ObjectsDeleteAll (
   long            chart_id,   // идентификатор графика
   const string      prefix,   // префикс имени объекта
   int        sub_window=- 1 ,   // индекс окна
   int       object_type=- 1      // тип объекта для удаления
   );

Документация по MQL5: Графические объекты / ObjectsDeleteAll
Документация по MQL5: Графические объекты / ObjectsDeleteAll
  • www.mql5.com
ObjectsDeleteAll - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5