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

 

İyi eğlenceler beyler!

Bir sinir ağı eğitimi için veri hazırlamaya çalışıyorum. Görev -

Örneğin, her satırın (zaman noktası - çubuk) bir girdi vektörü olduğu ve örneğin 10000 sütunun bulunduğu bir matris vardır. Dinamik (satır1, satır2 sayısı) ve zaman içinde farklı noktalarda sayı değişikliği olan veriler varsa nasıl olur?

Örneğin, matris ağa yüklenir, her satır öğrenme için bir vektördür, ancak her satır için zaman içinde dinamik olarak değişen n satır daha vardır.

Çözümün olası bir varsayımı, matrise dinamik satırdaki sütun sayısına eşit ek sütunlar eklemektir, dedinamik olandan sütunların her vektöre ekleneceği ortaya çıktı, ancak olduğu gibi, bir satır, basitçe özetledi.

Örneğin

1. vektör

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "satır1 dinamik" 1 1 1 1 1

"Dinamik satır2 " 1 1 1 1 1

karar

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dinamik" 2 2 2 2 2

 
Top2n :

İyi eğlenceler beyler!

Bir sinir ağını eğitmek için veri hazırlamaya çalışıyorum. Görev -

Örneğin, her satırın (zaman noktası - çubuk) bir girdi vektörü olduğu ve örneğin 10000 sütunun bulunduğu bir matris vardır. Dinamik (satır1, satır2 sayısı) ve zaman içinde farklı noktalarda sayı değişikliği olan veriler varsa nasıl olur?

Örneğin, matris ağa yüklenir, her satır öğrenme için bir vektördür, ancak her satır için zaman içinde dinamik olarak değişen n satır daha vardır.

Çözümün olası bir varsayımı, matrise dinamik satırdaki sütun sayısına eşit ek sütunlar eklemektir, dedinamik olandan sütunların her vektöre ekleneceği ortaya çıktı, ancak olduğu gibi, bir satır, basitçe özetledi.

Örneğin

1. vektör

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dinamik" 1 1 1 1 1

"Dinamik satır2 " 1 1 1 1 1

karar

1.365 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 ... "line1 dinamik" 2 2 2 2 2

Ama kelime dağarcığı dinamik olarak değişen (örneğin saatte bir) bir dil nasıl öğrenilir? Sinir ağı böyle çalışır.
 
Yani anladığım kadarıyla MQL5 var. Yoksa özdeş mi?
 
Andrey Sokolov :
Yani anladığım kadarıyla MQL5 var. Yoksa özdeş mi?
Kesinlikle aynı.
 
Tünaydın. Bir danışman oluşturdum , iyi çalışıyor ama çalışan danışman ile terminali kapatıp tekrar açarsam danışman her şeyi yeni bir şekilde hesaplamaya başlar. Yani, bir sorum var. Giriş parametrelerini başlangıçta sıfırlaması için Expert Advisor'da ne yazılmalıdır?
 
XFaost :
Tünaydın. Bir danışman oluşturdum , iyi çalışıyor ama çalışan danışman ile terminali kapatıp tekrar açarsam danışman her şeyi yeni bir şekilde hesaplamaya başlar. Yani, bir sorum var. Giriş parametrelerini başlangıçta sıfırlaması için Expert Advisor'da ne yazılmalıdır?
Danışmanın giriş parametrelerini sıfırlamaması, ancak kapanmadan önce açılan siparişler hakkında bilgi toplaması gerekir.
 
XFaost :
Tünaydın. Bir danışman oluşturdum , iyi çalışıyor ama çalışan danışman ile terminali kapatıp tekrar açarsam danışman her şeyi yeni bir şekilde hesaplamaya başlar. Yani, bir sorum var. Giriş parametrelerini başlangıçta sıfırlaması için Expert Advisor'da ne yazılmalıdır?
Lütfen Expert Advisor'ın nasıl çalıştığını açıklayın. Belki de farklı bir ilke kullanılmalıdır. Ve yine de sıfırlamanız gerekiyorsa, önce "başlangıçta" ne anlama geldiğine karar vermeniz gerekir. Ancak genel olarak sıfırlama, başlangıç konumuna bir geçiştir. Başlangıç ayarlarını not edin ve doğru zamanda ayarlayın.
 

Selamlar. Bana neyin yanlış olduğunu söyle?

EA, fiyatın üstünde ve altında duraklarla sipariş verir. Bunlardan biri tetiklenirse, fiyat stoptan belirtilenden fazla uzaklaşırsa stop ayarlanır, fiyat stopa doğru hareket ederse değişiklik olmaz.

İlk başta sadece bir satın alma siparişi ile yazdım, her şey olması gerektiği gibi çalışıyor. Satılık bir aynaya eklendi - duraklar, herhangi bir fiyat hareketi ile belirli bir miktara göre ayarlanmaya başladı.

Genel olarak, ayrı ayrı veya satın alma veya satış için - olması gerektiği gibi çalışır ve her iki parça birlikte - böyle bir hata ortaya çıkar.

#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern double Lot             = 0.01 ;
extern int     StopLoss        = 50 ;
extern int     Slippage        = 5 ;
extern int     Delta           = 60 ;
extern int     Delta2          = 170 ;
extern int     Magic           = 321 ;

int ticket;
double price, sl, sl2;
datetime counted_bar = 0 ;

int OnInit ()
  {
     if ( Digits == 3 || Digits == 5 )
   {

       StopLoss      *= 10 ;
       Delta         *= 10 ;
       Delta2        *= 10 ;
      
   }

  
   return ( INIT_SUCCEEDED );
  }


void OnTick () {
//////        ПРОДАЖА  ///////////////////////////////////////////////////////
if (SellLimitCount()== 0 && SellCount()== 0 )
{    
  price = NormalizeDouble ( Bid - Delta* Point , Digits );
  sl = NormalizeDouble (price + StopLoss* Point , Digits );
  ticket = OrderSend ( Symbol (), OP_SELLSTOP , Lot, price, Slippage, sl, 0 , "" , Magic, 0 , Red);
}

if (SellCount()!= 0 )
  {
   if ( Bid < ( OrderStopLoss () - NormalizeDouble (StopLoss* Point , Digits )))
     {
     sl = NormalizeDouble ( Bid + StopLoss* Point , Digits );
     if ( OrderModify (ticket, price, sl, 0 , 0 , Red)) Print ( "Sell_Order_Modify_Ok" );
     else Print ( "ERROR_Sell_Order_Modify" );
     }  
  }
if (SellLimitCount()!= 0 )
{
   if ( Bid > ( OrderOpenPrice () + NormalizeDouble (Delta2* Point , Digits )))
   {    
     if ( OrderDelete (ticket, Red)) Print ( "BuyLimit_Order_Delete_Ok" );
     else Print ( "ERROR_BuyLimit_Odrer_Delete" );
   }  
}
/////////////////////////////////////////////////////////////////////////////////
///////       ПОКУПКА ////////////////////////////////////////////////////////
if (BuyLimitCount()== 0 && BuyCount()== 0 )
{
  price = NormalizeDouble ( Ask + Delta* Point , Digits );
  sl = NormalizeDouble (price - StopLoss* Point , Digits );
  ticket = OrderSend ( Symbol (), OP_BUYSTOP , Lot, price, Slippage, sl, 0 , "" , Magic, 0 , Blue);
}

if (BuyCount()!= 0 )
  {
     if ( Ask > ( OrderStopLoss () + NormalizeDouble (StopLoss* Point , Digits )))
     {
     sl = NormalizeDouble ( Ask - StopLoss* Point , Digits );
     if ( OrderModify (ticket, price, sl, 0 , 0 , Blue)) Print ( "Buy_Order_Modify_Ok" );
     else Print ( "ERROR_Buy_Order_Modify" );
     }  
  }
if (BuyLimitCount()!= 0 )
{
   if ( Ask < ( OrderOpenPrice () - NormalizeDouble (Delta2* Point , Digits )))
   {
     if ( OrderDelete (ticket, Blue)) Print ( "BuyLimit_Order_Delete_Ok" );
     else Print ( "ERROR_BuyLimit_Orde_Delete" );
   }  
}
///////////////////////////////////////////////////////////////////////////////

}
//+------------------------------------------------------------------+
int BuyLimitCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_BUYSTOP )
count++;}}} return (count);}

int BuyCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_BUY )
count++;}}} return (count);}

int SellLimitCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_SELLSTOP )
count++;}}} return (count);}

int SellCount(){
int count= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--){
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )== true ){
if ( OrderMagicNumber ()==Magic){
if ( OrderType ()== OP_SELL )
count++;}}} return (count);}
 
Andrey Sokolov :

Selamlar. Bana neyin yanlış olduğunu söyle?

EA, fiyatın üstünde ve altında duraklarla sipariş verir. Bunlardan biri tetiklenirse, fiyat stoptan belirtilenden fazla uzaklaşırsa stop ayarlanır, fiyat stopa doğru hareket ederse değişiklik olmaz.

İlk başta sadece bir satın alma siparişi ile yazdım, her şey olması gerektiği gibi çalışıyor. Satılık bir aynaya eklendi - duraklar, herhangi bir fiyat hareketi ile belirli bir miktara göre ayarlanmaya başladı.

Genel olarak, ayrı ayrı veya satın alma veya satış için - olması gerektiği gibi çalışır ve her iki parça birlikte - böyle bir hata ortaya çıkar.

...

Anlamanız gereken bir hata - gösterdiğiniz tüm kodlar? En azından OnTick işlevi neredeyse tam bir hata...

 
Vitalie Postolache :

Anlamanız gereken bir hata - gösterilen kodun tamamı?

Kodun hem alış hem de satış için her iki kısmı da olduğunda, bekleyen emir tetiklendikten sonra, herhangi bir nedenle fiyatın herhangi bir yönde durması düzeltilir. Ve kodun sadece alım veya satım için bir kısmı olduğunda, durdurma, yalnızca fiyat ondan uzaklaştığında amaçlandığı gibi ayarlanır.