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

 
Valeriy Yastremskiy :

Biletle Sipariş Seçimi daha önce yapılır. Sipariş beklemede. Her bir işarette siparişin türünü kontrol etmek dışında, siparişin pazar haline geldiğini almak için hangi talep. Bu sefer loglara kaydediliyor fakat sipariş yapısında bu seferlik alan olmadığı ortaya çıktı yoksa yanılıyor muyum? Sipariş türünü değiştirirken, doğru anladıysam, OrdersTotal() ve OrdersHistoryTotal da değişmiyor.

Gerisi açık görünüyor.)

OrderOpenTime'ı denediniz mi? Gecikme tetiklendiğinde değişip değişmediğini hatırlamıyorum.

Hangi durumlarda her işaretin kontrol edilmesi gerektiğini bilmiyorum (ve anahtar eylemlerden önce veya her 1.5.. dakikada bir değil), ancak MT4'te başka bir yol yok.

MT5 daha rahat. OTT'de işlemi öğrenirsiniz, listelerle çalışmanız gerekiyorsa OT'de işlersiniz.

 
datetime some_time= TimeCurrent ();

extern string Symbol3 = "" ; //Инструмент (""текущий по умолчанию)

extern double P= 15 ;       //Таймфрейм

int start()

{

//Инициализация переменных

bool   FractalsUp= false ;

bool   FractalsDown= false ;

int    FractalsUpPrice= 0 ;

int    FractalsDownPrice= 0 ;

int    FractalsLimit= 100 ;

double EMA= iMA ( NULL ,P, 5 , 3 , MODE_EMA , PRICE_CLOSE , 0 );

   //Цикл сканирования последних свечей FractalsLimit, начиная с самых старых и заканчивая самыми последними.

   for ( int i=FractalsLimit; i>= 0 ; i--)

{

       //Если на свече есть фрактал, значение будет больше нуля и будет равно самой высокой или самой низкой цене.

       double fu= iFractals ( NULL , 0 ,MODE_UPPER,i);

       double fl= iFractals ( NULL , 0 ,MODE_LOWER,i);

       //Если есть верхний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsUp.

       if (fu> 0 )

{

FractalsUp= true ;

FractalsDown= false ;

FractalsUpPrice=fu;



if (((Close[ 0 ])>fu)&&( OrdersTotal () == 0 )&&(Close[ 0 ]>Open[ 0 ])&&(Close[ 0 ]>High[ 1 ]&&(Close[ 0 ]>EMA))) 

{  

if (( OrderSelect (OrdersHistoryTotal()- 1 ,SELECT_BY_POS, MODE_HISTORY)== true ))

{

datetime Cd=OrderCloseTime();

int hd=+ iBarShift (Symbol3,P,Cd)+ 1 ;

if (hd<= 2 )

{

return (- 1 );

}

}



metka1();

}

}

//Если есть нижний фрактал, я сохраняю значение и устанавливаю true для переменной FractalsDown.

       if (fl> 0 )

{

FractalsUp= false ;

FractalsDown= true ;

FractalsDownPrice=fl;

if (((Close[ 0 ])<fl)&&( OrdersTotal () == 0 )&&(Close[ 0 ]<Open[ 0 ])&&(Close[ 0 ]<Low[ 1 ]&&(Close[ 0 ]<EMA))) 

{  

if (( OrderSelect (OrdersHistoryTotal()- 1 ,SELECT_BY_POS, MODE_HISTORY)== true ))

{

datetime Cd1=OrderCloseTime();

int hd1=+ iBarShift (Symbol3,P,Cd1)+ 1 ;

if (hd1<= 2 )

{

return (- 1 );

}

}

metka2();

}

}

       //Если свеча имеет верхний и нижний фрактал, значения сохраняются, но мы не считаем его последним фракталом.

       if (fu> 0 && fl> 0 )

{

         FractalsUp= false ;

         FractalsDown= false ;

         FractalsUpPrice=fu;        

         FractalsDownPrice=fl;

}

}

return ( 0 );

}

int metka1()

{              

int send1= OrderSend (Symbol3,OP_BUY, 0.01 ,Ask, 3 ,Bid- 70 * Point ,Bid+ 70 * Point );

return ( 0 );

}

int metka2()

{                        

int send2= OrderSend (Symbol3,OP_SELL, 0.01 ,Bid, 3 ,Ask+ 70 * Point ,Ask- 70 * Point );

return ( 0 );

}

Tünaydın!

Fraktallar üzerinde bir baykuş üzerinde çalışıyorum. Bir sorun var. Yardım. Alt satırda:

Komut dosyası, son 100 mum değişkeninden [FractalsLimit=100;] son üst veya alt fraktalı arar ve bir SATIN AL pozisyonu açar - eğer yükselen fraktal bozulursa ve SAT için bunun tersi.

Ve son 100 mumdan maksimum veya minimum fraktal bulmak ve bunları dikkate alarak bir pozisyon açmak gerekir. Yani, ikincisine değil, yalnızca maksimum ve minimum fraktallara odaklandı.

Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Aleksey Mavrin :

OrderOpenTime'ı denediniz mi? Gecikme tetiklendiğinde değişip değişmediğini hatırlamıyorum.

Hangi durumlarda her işaretin kontrol edilmesi gerektiğini bilmiyorum (ve anahtar eylemlerden önce veya her 1.5.. dakikada bir değil), ancak MT4'te başka bir yol yok.

MT5 daha rahat. OTT'de işlemi öğrenirsiniz, listelerle çalışmanız gerekiyorsa OT'de işlersiniz.

OrderOpenTime gecikmenin açılış zamanını gösterir. Soru daha çok işi anlamakla ilgili. Zamanın kütüğe ve kütüğe kaydedildiği ve başka hiçbir yere yansıtılmadığı ortaya çıktı. Buna göre, düzeltmediysek, ancak o zaman görebiliriz, aslında)))))

MT5'te bu, eğer doğru anladıysam bir pozisyon/ticaret açmak olacak. Sipariş / anlaşma / pozisyon ayrımı bana optimal bir çözüm olarak net gelmese de, elbette daha fazla veri var.

 
Aleksey Mavrin :

bazen olur)) 1 İngilizce li harflerinin arka planına karşı çok kaybolur, vb., 001, 2 .. vb. soneklerini çağırmak daha uygundur.

Seni anlıyorum) hatayı düzeltti, şimdi ikinci tanıtıcının değeri 1.0. İlk tanıtıcıda ikinciden daha yüksek bir zaman aralığı ayarlanırsa, ikinci tanıtıcının değeri 0'a eşittir. Lütfen bana ikinci tanıtıcının doğru değerini elde etmek için başka nelerin düzeltilmesi gerektiğini söyleyin?

 void OnTick ()
  {
   double PriceArray[];
   
   int AOhandle = iAO ( _Symbol , PERIOD_M15 );
   
   ArraySetAsSeries (PriceArray, true );
   
   CopyBuffer (AOhandle, 0 , 0 , 3 , PriceArray);
   
   double AOvalue = NormalizeDouble (PriceArray[ 0 ], 6 );

   double PriceArray01[];
   
   int AOhandle01 = iAO ( _Symbol , PERIOD_H1 );
   
   ArraySetAsSeries (PriceArray01, true );
   
   CopyBuffer (AOhandle01, 1 , 0 , 3 , PriceArray01);
   
   double AOvalue01 = NormalizeDouble (PriceArray01[ 0 ], 6 );
    
   Comment ( "Awesome Oscillator Value: " , AOvalue, "\n" , "\n" ,
             "Awesome Oscillator Value: " , AOvalue01);
  }
 
Valeriy Yastremskiy :

OrderOpenTime gecikmenin açılış zamanını gösterir. Soru daha çok işi anlamakla ilgili. Zamanın kütüğe ve kütüğe kaydedildiği ve başka hiçbir yere yansıtılmadığı ortaya çıktı. Buna göre, düzeltmediysek, ancak o zaman görebiliriz, aslında)))))

Bu konuyu bir haftadır gündeme getiriyorsunuz, ancak bir ticaret stratejisinde emir verme ilkelerini yeniden gözden geçirmenizi önerdi.

ancak bu soru sizin için hala çok önemliyse, tek bir işaretin ayrıklığı ile “düzeltmek” hiç sorun değil

tüm yeni başlayanların yaptığı gibi "düzeltebilir", bekleyen siparişlerin biletlerini geniş bir dizide kaydedebilir ve bir onay geldiğinde bu biletleri kontrol edebilirsiniz - hız hakkında zaten yazdım, ne test cihazında ne de gerçek hayatta kritik değil, ancak olacak problemler - diziye uygun değil, onları temizlemek sıkıcı - hatalar ekleyecek ...


çalışmanı önermek istediğim şey - SB CarrayInt https://www.mql5.com/en/docs/standardlibrary/datastructures/carrayint

carrayInt'e bilet ekleyeceksiniz ve bu veri türü "piyasa haline gelen biletleri" kolayca silmenizi sağlayacak.


yukarıda yazdığım gibi, doğruluk 1 kene, doğrulama kodu minimum olacak

Valeriy Yastremskiy :

MT5'te bu, eğer doğru anladıysam bir pozisyon/ticaret açmak olacak. Sipariş / anlaşma / pozisyon ayrımı bana optimal bir çözüm olarak net gelmese de, elbette daha fazla veri var.

MT5 altında yazabiliyorsanız - o zaman neden konuşuyorsunuz? yaz, platform daha güçlü, işlevsellik daha yüksek - MT4 ve MT5'i karşılaştırmanın bir anlamı yok, MT4'e girmek daha kolay ama MT5'te daha fazla fırsat var

 
Igor Makanu :

Bu konuyu bir haftadır gündeme getiriyorsunuz, ancak bir ticaret stratejisinde emir verme ilkelerini yeniden gözden geçirmenizi önerdi.


Bu belirsizliğini koruyor. Strateji farklı tabii. Soru, yeterince önemli bir olayın yalnızca günlüğe yansıtılması gerçeğinden ortaya çıktı. Ve hiç kimse, siparişin pazar haline geldiği zamanın kaydı dışında hiçbir yer olmadığını doğrudan yanıtlamadı))))

Ve stratejinin mantığı terminale bağlı değildir. Mantık topal ise, o zaman elbette optimize edebilirsiniz, ancak topallama kaldırılmayacak))))

 
Valeriy Yastremskiy :

Bu belirsizliğini koruyor. Strateji farklı tabii. Soru, yeterince önemli bir olayın yalnızca günlüğe yansıtılması gerçeğinden ortaya çıktı. Ve hiç kimse, siparişin pazar haline geldiği zamanın kaydı dışında hiçbir yer olmadığını doğrudan cevaplamadı))))

bu bilgi yok - hayır!!!

önemli... peki, ondan önce kaç yıldır stratejiler yazıyorsun ve nasıl sonuçlandığı, kâr da olsa senin için önemli ;)

genellikle bekleyen emirlerin çoğuna eşlik etmez, piyasa emirlerini izler, gerekirse bekleyen bir emir ekler - bekleyen emir bir piyasa emri haline gelmiştir.

her şey yazılı: ortalama ve piramit ve emir ızgaraları ve ... ve kilitler ... evet, zaten hatırlamıyorum, bu hileleri tüccarların forumlarında okumam gerekiyor, bir yıldır okumadım - şimdi yabancılardan çok kendi düşüncelerim var)))

 
Igor Makanu :

bu bilgi yok - hayır!!!

önemi... Neyse, ondan önce kaç yıldır stratejiler yazıyorsun ve nasıl sonuçlandığı, kâr da olsa senin için önemli ;)

genellikle bekleyen emirlerin çoğuna eşlik etmez, piyasa emirlerini izler, gerekirse bekleyen bir emir ekler - bekleyen emir bir piyasa emri haline gelmiştir.

her şey yazılı: ortalama ve piramit ve emir ızgaraları ve ... ve kilitler ... evet, zaten hatırlamıyorum, bu hileleri tüccarların forumlarında okumam gerekiyor, bir yıldır okumadım - şimdi yabancılardan çok kendi düşüncelerim var)))

Teşekkürler))))

Martin ve ortalama alma kendi kendini aldatmadır ve ötesindedir (çünkü VR'nin özelliklerini belirleyerek riski hesaplamak veya tahmin etmek imkansızdır))))) bazen, ancak yalnızca bazen haklı görülen bir risk)))))

Strateji doğruysa, bir sipariş yeterlidir))))

 
Valeriy Yastremskiy :

Strateji doğruysa, bir sipariş yeterlidir))))

TS'nizde sabit kodlanmışsayıda sipariş varsa, bekleyen siparişlerle birlikte mevcut onay işaretinde ne olduğunu belirlemekte sorun yaşamamalısınız.

tam zamanı bilmek hiçbir şey vermez - tüm bilgiler bir kene geldiğinde hala alınır - kene yok bilgi yok

 

Merhaba! Bir EA'dan özel bir göstergenin parametrelerinin nasıl değiştirileceği konusunda bir sorunla karşılaştım. Sorun şu ki, göstergeler listesindeki herhangi bir parametreyi değiştirdiğinizde, yeni bir kopyası oluşturulur, bu kopyaların özelliklerine girdiğinizde, her kopyanın kendi parametresi vardır. Parametrenin farklı değerlerini ne kadar çok değiştirirsem, o kadar çok farklı kopyalar oluşturulur. iCustom üzerinden kullanıyorum.

Örneğin:

#resource "\\Göstergeler\\inicator.ex4"

harici int Var1=1;

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

geçersiz OnTick()

{

intA;

Var1++;

A=iCustom(Symbol(),PERIOD_CURRENT,"::Göstergeler\\gösterge",Var1,0,0);

Sonuç olarak, göstergeler listesinde şunları görüyoruz:

Gösterge (Var1=2 parametresiyle)

Gösterge (Var1=3 parametresi ile)

Gösterge (Var1=4 parametresi ile)

.... vb.


Neden: