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

 

Danışmanın çalışma bloğuna saat başı dakika nasıl eklenir?

 //input parametrs
input uchar                 InpStartHour            = 1 ;           // Start hour
input uchar                 InpEndHour              = 23 ;           // End hour

//---------------------------

void OnTick ()
  { 
   MqlDateTime STimeCurrent;
   TimeToStruct ( TimeCurrent (),STimeCurrent);
  
   if (STimeCurrent.hour<InpStartHour || STimeCurrent.hour>InpEndHour)
       return ;
   }

 
Vladimir Baskakov :

Danışmanın çalışma bloğuna saat başı dakika nasıl eklenir?

Zamanında Yüksek Düşük Stratejisi 2 :

bool TimeControl() - zamanı kontrol etmekten sorumlu fonksiyon. İki durumda çalışabilir: bir gün içinde her iki tarih veya iki günde bir tarihlerin geçişi.

 //--- input parameters
***
input bool      InpTimeControl       = true ;         // Use time control
input uchar     InpStartHour         = 10 ;           // Start Hour 
input uchar     InpStartMinute       = 01 ;           // Start Minute 
input uchar     InpEndHour           = 15 ;           // End Hour 
input uchar     InpEndMinute         = 02 ;           // End Minute 
***
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if (!TimeControl())
       return ;
  }
//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl( void )
  {
   if (!InpTimeControl)
       return ( true );
   MqlDateTime STimeCurrent;
   datetime time_current= TimeCurrent ();
   if (time_current== D'1970.01.01 00:00' )
       return ( false );
   TimeToStruct (time_current,STimeCurrent);
   if ((InpStartHour* 60 * 60 +InpStartMinute* 60 )<(InpEndHour* 60 * 60 +InpEndMinute* 60 )) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
       if ((STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 >=InpStartHour* 60 * 60 +InpStartMinute* 60 ) && 
         (STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 <InpEndHour* 60 * 60 +InpEndMinute* 60 ))
         return ( true );
     }
   else if ((InpStartHour* 60 * 60 +InpStartMinute* 60 )>(InpEndHour* 60 * 60 +InpEndMinute* 60 )) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
       if (STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 >=InpStartHour* 60 * 60 +InpStartMinute* 60 || 
         STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 <InpEndHour* 60 * 60 +InpEndMinute* 60 )
         return ( true );
     }
   else
       return ( false );
//---
   return ( false );
  }
 

söyle bana

MQL5'te pozisyonun yarısını kapatmanız gerekiyor, ancak pozisyonun yarısının minimum lottan az olması durumunda bir kontrol yapın, ardından tüm hacmi kapatın, değil mi?

 double volume= MathMax ( PositionGetDouble ( POSITION_VOLUME )/ 2 , SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN )/ AccountInfoInteger ( ACCOUNT_LEVERAGE ));
 
Evgeny Dyuka :

söyle bana

MQL5'te pozisyonun yarısını kapatmanız gerekiyor, ancak pozisyonun yarısının minimum lottan az olması durumunda bir kontrol yapın, ardından tüm hacmi kapatın, değil mi?

Belki bölmeden önce kontrol etmek daha kolaydır, parti minimum 2x'ten azsa, terminale eziyet etmeye gerek yoktur?

 

Expert Advisor'ın piyasa için testini geçemiyorum hata veriyor ama raporda hata yok

nasıl olunur?


 
Evgeny Dyuka :

Expert Advisor'ın piyasa için testini geçemiyorum hata veriyor ama raporda hata yok

nasıl olunur?


Lütfen daha sonra tekrar deneyiniz.
 

Bir emrin kapanış fiyatı nasıl alınır (anlaşmalar, pozisyonlar - herhangi bir şey)?

Siparişler için yalnızca ORDER_PRICE_OPEN mevcuttur, ORDER_PRICE_CLOSE mevcut değildir.

Pozisyonlarda ayrıca yalnızca POSITION_PRICE_OPEN vardır.

Anlaşmalar genellikle neyin soyut olduğunu anlamaz: DEAL_PRICE.

Forumda google arattım ve bulamadım.

 
secret :

Bir emrin kapanış fiyatı nasıl alınır (anlaşmalar, pozisyonlar - herhangi bir şey)?

Siparişler için yalnızca ORDER_PRICE_OPEN mevcuttur, ORDER_PRICE_CLOSE mevcut değildir.

Pozisyonlarda ayrıca yalnızca POSITION_PRICE_OPEN vardır.

Anlaşmalar genellikle neyin soyut olduğunu anlamaz: DEAL_PRICE.

Forumda google arattım ve bulamadım.

MQL5'te anlamayı ve çalışmayı kolaylaştırmak için:

1. ***

2. Kapanış fiyatına ihtiyacınız varsa, işlem geçmişine bakmadan yapamazsınız. HistorySelect , bir ticaret geçmişi istemekten sorumludur

3. Bir dosyaya veya "Uzmanlar" sekmesine bilgi çıkışı ile geçmişle çalışmaya bir örnek, Geçmiş Anlaşmalar ve Siparişler kodundadır.

4. Ayrıca, bunun ne tür bir anlaşma olduğunu anlamak için bilmeniz gerekir.

ENUM_DEAL_ENTRY - İşlemin yönü - piyasaya giriş, piyasadan çıkış veya geri dönüş

ENUM_DEAL_ENTRY

tanımlayıcı

Tanım

DEAL_ENTRY_IN

Market girişi

DEAL_ENTRY_OUT

Pazar çıkışı

DEAL_ENTRY_INOUT

tersine çevirme

DEAL_ENTRY_OUT_BY

Zıt pozisyonla kapanış


ENUM_DEAL_TYPE - Anlaşma türü

ENUM_DEAL_TYPE

tanımlayıcı

Tanım

DEAL_TYPE_BUY

Satın almak

DEAL_TYPE_SELL Satış

***



Bu doğru, temel bilgiler.

 
Vladimir Karputov :

Cevabınız için teşekkürler, hem belgelere hem de örneğinize baktım, ancak yine de MT4'te OrderClosePrice() benzeri bir parametrenin nasıl alınacağını bulamadım.

 
secret :

Cevabınız için teşekkürler, hem belgelere hem de örneğinize baktım, ancak yine de MT4'te OrderClosePrice() benzeri bir parametrenin nasıl alınacağını bulamadım.

alternatif olarak https://www.mql5.com/en/code/16006 adresini açın

ve @fxsaber'ın uygulamasını görün

veya sadece belirtilen kitaplığı bağlayın ve danışman kodunu MT4'ten MT5'e aktarın, vakaların% 99'unda hiçbir şeyi değiştirmek zorunda kalmazsınız, her şey MT4'teki gibi çalışır

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...