[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 30

 
AndrewX :

Bu enstrüman için açık bir pozisyon olup olmadığına dair bir pozisyon açma koşulunda bir kontrolün nasıl doğru bir şekilde ayarlanacağını söyleyin. Ve enstrüman için bir pozisyon varsa (herhangi bir satış veya alım), açılış gerçekleşmez, aksi takdirde açma sinyali işlenir mi?

İşte kod (pozları açmaktan sorumlu olduğunu düşünüyorum):

Mantıken doğru görünüyor, ancak yine de çalışmıyor, bir enstrüman için birkaç poz açıyor.

PS Ben bir programcı değilim. Mümkünse, çaydanlığa daha ayrıntılı olarak açıklayın.


Zor değil. Emirleri sayan 2 alt program düzenlemek en iyisidir.

 // =================================================================================================
// ************************* Счётчики ордеров ******************************************************
// =================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy( int MAGIC){
   string SMB= Symbol ();
   int SchBuy= 0 ;
   int i;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) {
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
     else {
       if (OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue ;}
       if (OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
   return (SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell( int MAGIC){
   string SMB= Symbol ();
   int SchSell= 0 ;
   int i;
   for (i= OrdersTotal ()- 1 ;i>= 0 ;i--){
     if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
    else {
       if (OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC){ continue ;} 
       if (OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return (SchSell);     
}                  
//==================================================================================================

Ardından, kodun kendisine şunu yazacağız:

 if (SchBuy(MAGIC)+SchSell(MAGIC)<= 0 ){
// ордеров нет - устанавливаем ордер при наличии торгового сигнала
}

MAGIC sabitini kullanıcı değişkenlerinde bildirmek daha iyidir. Bunun gibi:

 extern int       MAGIC= 467223 ; // У ордеров открытых вручную MAGIC=0
 

Sınanmış


 if (NumberOfPositions(Symbol_1,- 1 ,Magic)< 1

все равно не пашет
 
drknn :


Zor değil. Emirleri sayan 2 alt program düzenlemek en iyisidir.

Ardından, kodun kendisine şunu yazacağız:

MAGIC sabitini kullanıcı değişkenlerinde bildirmek daha iyidir. Bunun gibi:

Teşekkürler, bir göz atacağım, ama benim için muhtemelen çok karmaşık.
 
AndrewX :
Teşekkürler, bir göz atacağım, ama benim için muhtemelen çok karmaşık.

Expert Advisor dosyasını bu gönderiye ekledim. Bak.
Dosyalar:
 
Günaydın ! Belki de optimizasyon olmadığı gerçeğiyle ilgili sorum karmaşık veya ilgi çekici değil mi?
 
volshebnik :
Günaydın ! Belki de optimizasyon olmadığı gerçeğiyle ilgili sorum karmaşık veya ilgi çekici değil mi?

Bunun birçok olası nedeni vardır. Önemsizden - seçeneğe geçmiş yok - karlı seçenek yok. Daha kolay olsa da - danışmanda bir hata
 

Lütfen robotun bekleyen siparişler oluşturup oluşturmadığını söyleyin.

Bekleyen emirlere ait komutlar sunucuya gönderilir.

Bekleyen siparişler terminalde sıraya alınmış mı?

Bekleyen siparişleri manuel olarak ayarlamamla aynı mı? açık siparişler üstte, bekleyen siparişler altta sıraya alındı mı?

 
Jaguar1974 :

Lütfen robotun bekleyen siparişler oluşturup oluşturmadığını söyleyin.

Bekleyen emirlere ait komutlar sunucuya gönderilir.

Bekleyen siparişler terminalde sıraya alınmış mı?

Bekleyen siparişleri manuel olarak ayarlamamla aynı mı? açık siparişler üstte, bekleyen siparişler altta sıraya alındı mı?


sıraya alınmış ne demek? EA, bekleyen bir sipariş vermek için sunucuya bir sipariş gönderir. Sipariş parametreleriyle her şey yolundaysa, sunucu terminalde hemen görüntülenen bir gecikme ayarlar. EA belirli bir adımla gecikmeler yerleştirmek için bir emir gönderirse (bunu bir döngü boyunca yapar), o zaman her yeni sipariş sunucu tarafından ayrı olarak işlenir. Sıraya giren emirlerdir - danışman emretti - sunucu yanıtladı. EA tekrar sipariş verdi ve yine sunucunun yanıtını bekliyor.

Kuyruğa alınan siparişler ne anlama geliyor? Bununla ne demek istiyorsun?

 
Vinin :

Bunun birçok olası nedeni vardır. Önemsizden - seçeneğe geçmiş yok - karlı seçenek yok. Daha kolay olsa da - danışmanda bir hata
Kontrol ettim - 1999'dan kalma bir dakika geçmişi var. Onay kutusu tüm seçenekleri göstermelidir (karsız da). Optimizasyona sadece bir MA parametresi koydum, örneğin 100'den 110'a kadar ve hepsi bu - optimizasyon "ölüyor" - sonuç yok, grafik yok .... Diğer parametrelerin dahil edilmesinden bahsetmiyorum bile.
 
volshebnik :
Kontrol ettim - 1999'dan kalma bir dakika geçmişi var. Onay kutusu tüm seçenekleri göstermelidir (karsız da). Optimizasyona sadece bir MA parametresi koydum, örneğin 100'den 110'a kadar ve hepsi bu - optimizasyon "ölüyor" - sonuç yok, grafik yok .... Diğer parametrelerin dahil edilmesinden bahsetmiyorum bile.

Danışmana bakmak lazım. Yani hiçbir şey söylenemez
Neden: