MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 97
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
İ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
İ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
https://www.mql5.com/en/articles/159
Yani anladığım kadarıyla MQL5 var. Yoksa özdeş mi?
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?
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?
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 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);}
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...
Anlamanız gereken bir hata - gösterilen kodun tamamı?