Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 180

 
Igor Makanu :

evet ve aynı fikre sahibim, ancak yalnızca gösterge arabelleklerinin geçmişi ve sayısı değil - yani. Yine bellek ayırmadayım, MT4 belleği tamamen boşalırsa, o zaman donuklaşmaya başlar - görünüşe göre bellek alanlarını boşaltmaya başlar

Geliştiriciler kesinlikle cevap verebilecek, ancak MetaTrader 4'ten bahsediyoruz ve burada ...

 
Alexander Fedosov :

Ve neden kodda bazı hesaplamalar var?

hesaplamalar yapmayın - orada konu mantıklı değildi, ancak optimize edicinin ne yaptığını kontrol etmek benim için ilginçti, bu yüzden kodu çizdim

kodunuzu şu şekilde ekleyin:

 int handle= INVALID_HANDLE ;
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   handle= FileOpen ( "tst.txt" , FILE_READ | FILE_WRITE | FILE_TXT );
   FileSeek (handle, 0 , SEEK_END );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   if (handle!= INVALID_HANDLE )
     {
       FileWriteString (handle, DoubleToString (Value1), DoubleToString (Value2)+ "\n" );
       FileClose (handle);
     }
  }
//+------------------------------------------------------------------+
void OnTick ()
  {
  }

onlar. sadece optimizasyon parametrelerini dosyaya yazın, eğer donarsa, dosyadaki son geçişi okuyabileceksiniz, parametreler nelerdi ve dosya süresi test cihazının "son nefesinin" zamanı olacak

 
Artyom Trishkin :

Geliştiriciler kesinlikle cevap verebilecek, ancak MetaTrader 4'ten bahsediyoruz ve burada ...

Ve sonra .. hiçbir şey değişmeyecek. Sahip olduklarımızı kullanıyoruz.

 

Tünaydın! Söyleyin bana, ticaret sistemi sadece belirli koşullar altında yeni bir saatlik çubuk açıldığında bir pozisyon açar. Mevcut barda stoploss ile bir pozisyon kapatıldığında, anlaşmanın tekrar açılmadığından emin olmak gerekir. Ben şu şekilde uyguladım:

if (OrdersTotal()==0 && bilet!=-1) // Açık lot yok ama bilet var

{

if (OrderSelect(bilet,SELECT_BY_TICKET)==true)

{

tarihsaat tct=SiparişKapatTime(); // Sipariş kapanış saati

tarihsaat tob=iTime(NULL,PERIOD_H1,0); // Mevcut çubuğun açılış zamanı

if (tob>tct) // Anlaşma, açıldığı mumla aynı mumda kapanırsa yeniden sipariş açılmasına izin vermez

{

AÇIK POZİSYON FONKSİYONU

}


Strateji test cihazında, tekrarlanan pozisyonlar artık açılmadı ve canlı işlem yaparken bir pozisyon açıldı. Bana neyin yanlış olduğunu söyle?))

 
kmerlin :

Tünaydın! Söyleyin bana, ticaret sistemi sadece belirli koşullar altında yeni bir saatlik çubuk açıldığında bir pozisyon açar. Mevcut barda stoploss ile bir pozisyon kapatıldığında, anlaşmanın tekrar açılmadığından emin olmak gerekir. Ben şu şekilde uyguladım:

if (OrdersTotal()==0 && bilet!=-1) // Açık lot yok ama bilet var

{

if (OrderSelect(bilet,SELECT_BY_TICKET)==true)

{

tarihsaat tct=SiparişKapatTime(); // Sipariş kapanış saati

tarihsaat tob=iTime(NULL,PERIOD_H1,0); // Mevcut çubuğun açılış zamanı

if (tob>tct) // Anlaşma, açıldığı mumla aynı mumda kapanırsa yeniden sipariş açılmasına izin vermez

{

AÇIK POZİSYON FONKSİYONU

}


Strateji test cihazında, tekrarlanan pozisyonlar artık açılmadı ve canlı işlem yaparken bir pozisyon açıldı. Bana neyin yanlış olduğunu söyle?))

O?

 
Alexander Fedosov :

O?


tam olarak değil. Sürümün nesi var? ana koşul, mevcut saatlik mumda yeniden giriş olasılığı değildir! Sonuçta, oldukça basit bir durum, bunun nesi yanlış ve neden çalışmıyor?

 
kmerlin :

tam olarak değil. Sürümün nesi var? ana koşul, mevcut muma yeniden giriş olasılığı değildir! Sonuçta, oldukça basit bir durum, bunun nesi yanlış ve neden çalışmıyor?

 if ( OrdersTotal ()== 0 && ticket!=- 1 ) // Открытых лотов нет но тикет существует

{

if ( OrderSelect (ticket,SELECT_BY_TICKET)== true )

{

datetime tct=OrderCloseTime(); // Время закрытия ордера

datetime tob= iTime ( NULL , PERIOD_H1 , 0 ); // Время открытия бара текущего

if (tob>tct) // Не дает открыть повторный ордер если сделка закрылась на той же свече что и открылась

{

ФУНКЦИЯ ОТКРЫТИЯ ПОЗИЦИИ

}

OrderSelect'te hangi bilet seçildi?

 
Alexander Fedosov :

OrderSelect'te hangi bilet seçildi?

Bilet en son iletilir... Bir emir açıldığında yeni emir açılması sisteme göre mümkün değildir ve bekleyen emir de olamaz. Yani son bilet, son durak veya kâr emridir.
 
kmerlin :
Bilet en son iletilir... Bir emir açıldığında yeni emir açılması sisteme göre mümkün değildir ve bekleyen emir de olamaz. Yani son bilet, son durak veya kâr emridir.

Son sipariş biletini nasıl iletirsiniz?

Ve OrdersTotal(), toplam açık ve bekleyen sipariş sayısını iletir.

İşte mevcut zaman çerçevesinin yeni çubuğu.

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool IsNewBar()
  {
   static datetime prevtime= 0 ;
   if (prevtime==Time[ 0 ])
       return ( false );
   else
     {
      prevtime=Time[ 0 ];
       return ( true );
     }
  }
 
Alexander Fedosov :

Son sipariş biletini nasıl iletirsiniz?

Ve OrdersTotal(), toplam açık ve bekleyen sipariş sayısını iletir.

İşte mevcut zaman çerçevesinin yeni çubuğu.

Bilet, global bir değişken olarak bildirilir. Alırken veya satarken, bir bilet aktarılır. Sistemimde birden fazla emir açılamamakta, sadece bir emir ve bekleyen emir de açılamamaktadır. pozisyon açık ya da değil. Bu nedenle, son bilet, anladığım kadarıyla, kârla veya stopla kapatılan bir emirdir.

tamam kafam uğulduyor yarın tekrar düşüneceğim ve tavsiyen

Neden: