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

 
Taras Slobodyanik :

yani bir tatil mi yoksa ticaret yasağı mı tanımlamanız gerekiyor?
27'sinde ticarete izin verildi

tatilse, tatilleri/hafta sonlarını algılamak için bir haber ayrıştırıcısına ihtiyacınız vardır.

Belirli bir sembolün hangi nedenle takas edilmediği önemli değil, sadece takas edilmediğini görmeniz gerekiyor. Ve üzgünüm, henüz ayrıştırıcıyı anlayacak kadar olgun değilim. Bu nedir ve kodda nasıl yazılır?

 
novichok2018 :

Merhaba!

Alıntı ipucu için Alexey Viktorov'a tekrar teşekkürler - her şey çalışıyor. AMA: bu Pazartesi günü bir durum ortaya çıktı - Almanlar ticaret yaptı ve İngilizler bir gün izin aldı. Ve Euro'da bir pozisyon açma koşulunda, sterlin eski değerlerinin kullanıldığı ortaya çıktı. Bu nedenle istek: bana o gün her iki sembolün de işlem gördüğü kodda nasıl bir kontrol ayarlayacağımı söyle?

Teşekkür ederim.

 #include <Trade\AccountInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- объект для работы со счетом
CAccountInfo account;
//--- получим номер счета, на котором запущен советник
   long login=account.Login();
   Print ( "Login=" ,login);
//--- выясним тип счета
   ENUM_ACCOUNT_TRADE_MODE account_type=account.TradeMode();
//--- если счет оказался реальным, прекращаем работу эксперта немедленно!
   if (account_type== ACCOUNT_TRADE_MODE_REAL )
     {
       MessageBox ( "Работа на реальном счете запрещена, выходим" , "Эксперт запущен на реальном счете!" );
       return (- 1 );
     }
//--- выведем тип счета    
   Print ( "Тип счета: " , EnumToString (account_type));
//--- выясним, можно ли вообще торговать на данном счете
   if (account.TradeAllowed())
       Print ( "Торговля на данном счете разрешена" );
   else
       Print ( "Торговля на счете запрещена: возможно, вход был совершен по инвест-паролю" );
//--- выясним, разрешено ли торговать на счете с помощью эксперта
   if (account.TradeExpert())
       Print ( "Автоматическая торговля на счете разрешена" );
   else
       Print ( "Запрещена автоматическая торговля с помощью экспертов и скриптов" );
//--- допустимое количество ордеров задано или нет
   int orders_limit=account.LimitOrders();
   if (orders_limit!= 0 ) Print ( "Максимально допустимое количество действующих отложенных ордеров: " ,orders_limit);
//--- выведем имя компании и сервера
   Print (account.Company(), ": server " ,account.Server());
//--- напоследок выведем баланс и текущую прибыль на счете
   Print ( "Balance=" ,account.Balance(), "  Profit=" ,account.Profit(), "   Equity=" ,account.Equity());
   Print ( __FUNCTION__ , "  completed" ); //---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---

  }

Kaynak https://www.mql5.com/ru/articles/481

Торговые операции на MQL5 - это просто
Торговые операции на MQL5 - это просто
  • www.mql5.com
Почти все трейдеры приходят на рынок для того, чтобы заработать денег, хотя есть и доля тех, кому важен не сам торговый результат, а участие в процессе, драйв. Впрочем, получить удовольствие от процесса можно не только торгуя вручную, но и занимаясь разработкой автоматических торговых систем. Ведь создание торгового робота может быть таким же...
 
Sergey Voytsekhovsky :

Kaynak https://www.mql5.com/ru/articles/481

Burada ne diyeceğimi bilmiyorum. Tabii ki teşekkür ederim, ama bence kesinlikle sorunun konusu değil. Ve neden " hesabın gerçek olduğu ortaya çıktıysa uzmanın işini derhal durduruyoruz! "? Bir şey anlamadığımı kabul ediyorum.

 
novichok2018 :

Burada ne diyeceğimi bilmiyorum. Tabii ki teşekkür ederim, ama bence kesinlikle sorunun konusu değil. Ve neden " hesabın gerçek olduğu ortaya çıktıysa uzmanın işini derhal durduruyoruz! "?

Bu makaleden bir örnek koddur, makale ticaret için değil, deneysel kodla ilgilidir, ancak işlevler aynıdır. Makale eski, ancak yeni başlayanlar için bu kadar.

Ve aradığınız gibi hafta sonları kodla hesaplanamaz. Ticaret o zaman açıktı, sadece İngilizler ticaret yapmıyordu, normal kotasyon yoktu. Alıntılar için "normallik" işaretleri belirlemeye çalışın ve varlıklarını kontrol edin. Örneğin, tik dalgalanmasını, fiyat güncellemelerinin sıklığını veya beğenmediğiniz her şeyi yayın. Fantezi için uçuş.

 
novichok2018 :

Burada ne diyeceğimi bilmiyorum. Tabii ki teşekkür ederim, ama bence kesinlikle sorunun konusu değil.

Hafta sonu boyunca , hesabın özelliklerinden öğrenmek genellikle en kolayıdır, elbette IMHO, hesap kısıtlamaları olacaktır. Bu yüzden yukarıdaki kod bloğunu örnek olarak verdim.

 //--- выясним, можно ли вообще торговать на данном счете
   if (account.TradeAllowed())
       Print ( "Торговля на данном счете разрешена" );

Ve ulusal bayramlarda karakter kısıtlamaları mümkündür. Aslında habere bakıyorsunuz, şöyle bir şey var:

 #include<Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- объект для получения свойств символа
CSymbolInfo symbol_info;
//--- зададим имя символа, для которого будем получать информацию
   symbol_info.Name( _Symbol );
//--- получим текущие котировки и выведем
   symbol_info.RefreshRates();
   Print (symbol_info.Name(), " (" ,symbol_info.Description(), ")" ,
         "  Bid=" ,symbol_info.Bid(), "   Ask=" ,symbol_info.Ask());
//--- получим значения минимальных отступов для торговых операций
   Print ( "StopsLevel=" ,symbol_info.StopsLevel(), " pips, FreezeLevel=" ,
         symbol_info.FreezeLevel(), " pips" );
//--- получим количество знаков после запятой и размер пункта
   Print ( "Digits=" ,symbol_info. Digits (),
         ", Point=" , DoubleToString (symbol_info. Point (),symbol_info. Digits ()));
//--- информация о спреде
   Print ( "SpreadFloat=" ,symbol_info.SpreadFloat(), ", Spread(текущий)=" ,
         symbol_info.Spread(), " pips" );
//--- запросим тип исполнения ордеров, нет ли ограничений
   Print ( "Ограничения на торговые операции: " , EnumToString (symbol_info.TradeMode()),
         " (" ,symbol_info.TradeModeDescription(), ")" );
//--- выясним режим заключения сделок
   Print ( "Режим исполнения сделок: " , EnumToString (symbol_info.TradeExecution()),
         " (" ,symbol_info.TradeExecutionDescription(), ")" );
//--- выясним способ вычисления стоимости контрактов
   Print ( "Вычисление стоимости контракта: " , EnumToString (symbol_info.TradeCalcMode()),
         " (" ,symbol_info.TradeCalcModeDescription(), ")" );
//--- размер контрактов
   Print ( "Размер стандартного контракта: " ,symbol_info.ContractSize(),
         " (" ,symbol_info.CurrencyBase(), ")" );
//--- минимальный, максимальный размеры объема в торговых операциях
   Print ( "Volume info: LotsMin=" ,symbol_info.LotsMin(), "  LotsMax=" ,symbol_info.LotsMax(),
         "  LotsStep=" ,symbol_info.LotsStep());
//--- 
   Print ( __FUNCTION__ , "  completed" );
//---
   return ( 0 );
  }
 
novichok2018 :

Belirli bir sembolün hangi nedenle takas edilmediği önemli değil, sadece takas edilmediğini görmeniz gerekiyor. Ve üzgünüm, henüz ayrıştırıcıyı anlayacak kadar olgun değilim. Bu nedir ve kodda nasıl yazılır?

"Ticaret yok" ne anlama geliyor?
ticarete izin verilir - istediğiniz kadar ticaret yapın)

Ayrıştırıcı - bu, haberleri içeren bir dosya indirmeniz, ardından ayrıştırmanız (ayrıştırma) - ve tatil gününü belirlemeniz gerektiği anlamına gelir.

 
Taras Slobodyanik :

ticarete izin verilir - istediğiniz kadar ticaret yapın)

Ticarete izin verilir, yalnızca açık artırmalar yapılmaz - tatilleri vardır.

Ama bir çözüm bulmuş gibiyim:

 if ( SeriesInfoInteger ( "EURUSD" , PERIOD_H1 , SERIES_LASTBAR_DATE )== SeriesInfoInteger ( "GBPUSD" , PERIOD_H1 , SERIES_LASTBAR_DATE ))

ve daha sonra 27'sinde pozisyon açılmadı.

Bence bu iyi bir çözüm. Birisi tuzaklar görürse, bilmekten minnettar olacağım. Herkese teşekkürler.

 
novichok2018 :

Ticarete izin verilir, sadece müzayede yapılmaz - tatilleri vardır.

Nasıl olduğunu hayal edemiyorum, ticarete izin verilirse ticaret yapılır
(tatillerde ve hafta sonları bile)

Brokerlerden gelen haberlere baktım - 27'sinde, birinin poundu sınırladığını görmedim

 
Taras Slobodyanik :

Nasıl olduğunu hayal edemiyorum, ticarete izin verilirse ticaret yapılır
(tatillerde ve hafta sonları bile)

Brokerlerden gelen haberlere baktım - 27'sinde, birinin poundu sınırladığını görmedim

Gerçekten ilgilendiğim şey pound değil, FTSE100 endeksiydi. Bu şekilde basitleştirdim: euro'dan beri, pound'a izin verin))). Yani 27. endekste veri yok.

 
Kafası karışmış. Tüm komisyonları, takasları vb. dikkate alarak MT4'te açık bir siparişte (gecikme değil) gerçek bir kâr (zarar) nasıl elde edilir. (yani pozisyonu kapattıktan sonra ne elde edeceğiz)? OrderProfit() + OrderSwap() + OrderCommission() veya sadece OrderProfit() veya başka bir şey? Sipariş kapandıktan sonra en azından bir şeyler kazanmak istiyorum.
Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...