Hatalar, hatalar, sorular - sayfa 284

 
alexvd :

Duraklar ve kalkışlar nasıl yapılır?

Önce bir pozisyon açıp sonra mı değiştiriyorsunuz yoksa hemen uygun SL ve TP'yi mi gösteriyorsunuz?

pozisyon önce açılır sonra değiştirilir...
 
Voodoo_King :

384 oluştur. görünüşe göre başka bir hata buldum... geçmişi görüntülerken, siparişler - sAvsEm olarak adlandırılan, Zarar Durdur ve Kâr Al seviyeleri görüntülenmez...


Sipariş verirken görüntülenirler. Pozisyon sunucu tarafından stop ile kapatıldığında bulunmazlar, bu doğaldır, çünkü. sunucu bir pozisyonu kapatırken durakları ayarlamaz.
















































































































 

Böyle bir şey buldum. Bug mu değil mi bilmiyorum ama öyle görünüyor. Sonraki kod:

lot= NormalizeDouble (My_AccountInfo.MaxLotCheck( _Symbol , ORDER_TYPE_BUY ,latest_price.ask)/ 10 , 2 );
printf (lot);

test günlüğünde görüntülenir (1000$ depozito ile):

2011.01.28 20:06:48    Core 1    2010.01.04 00:56:00   0.07000000000000001

(NormalizeDouble) işlevinin 7'den sonra sıfır olmayan tüm rakamları kaldırması gerekmez mi?

Çözümü şu şekilde bulduğumu düşündüm: lot=floor((My_AccountInfo.MaxLotCheck(_Symbol, ORDER_TYPE_SELL ,latest_price.ask)/10)*100)/100,

ancak benzer sonuçlar da ortaya çıkıyor. Nasıl Olmalı - Ticaret taleplerinde ne kadar kritik?

 

Güzel gün!

Yorum işlevini döngü gövdesine ekledim, böylece döngü yürütme durumunun yüzdesini ve birkaç değer daha gösterdi. Döngünün gövdesinde basit bir algoritma 5 dakika boyunca yürütüldü (daha fazla değilse), ancak yalnızca 32000 bar değeri yeniden hesaplandı (Kapat, Yüksek, Düşük, Açık). Dizinin döngü sırasında dinamik olarak büyümesinden şikayet ettim ama durum böyle değil. Algoritmada hata ayıklandıktan sonra Yorum kaldırıldı - bir saniye içinde Tanrı korusun hesaplama yapılmaya başlandı.

Yorum işlevi programların yürütülmesini çok yavaşlatmıyor mu ??? Açıkçası şaşırdım.

Sistem: Windows XP, Terminal 5.00.384.

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
KffAlex :

Güzel gün!

Yorum işlevini döngü gövdesine ekledim, böylece döngü yürütme durumunun yüzdesini ve birkaç değer daha gösterdi. Döngünün gövdesinde basit bir algoritma 5 dakika boyunca yürütüldü (daha fazla değilse), ancak yalnızca 32000 bar değeri yeniden hesaplandı (Kapat, Yüksek, Düşük, Açık). Dizinin döngü sırasında dinamik olarak büyümesinden şikayet ettim ama durum böyle değil. Algoritmada hata ayıklandıktan sonra Yorum kaldırıldı - bir saniye içinde Tanrı korusun hesaplama yapılmaya başlandı.

Yorum işlevi programların yürütülmesini çok yavaşlatmıyor mu ??? Açıkçası şaşırdım.

Sistem: Windows XP, Terminal 5.00.384.

Ben de aynı etkiyi fark ettim.
 

Uzman Danışmanı yalnızca açık fiyatları kullanarak geçmiş üzerinde çalıştırarak, Satış pozisyonları açık fiyatlarla değil, Yüksek fiyatlarla açılır ve Düşük fiyatlarla kapatılır.

Bu neden oluyor?

Expert Advisor'da, sadece Open[0] fiyatları kullanılarak bir pozisyon açma ve kapama sinyali aranır. EventSetTimer(1) tarafından kullanılır;

 
Valmars :

Sipariş verirken görüntülenirler. Pozisyon sunucu tarafından stop ile kapatıldığında bulunmazlar, bu doğaldır, çünkü sunucu, bir pozisyonu kapatırken durakları ayarlamaz.

ne :) ? sipariş verirken nerede görüntülenirler?

"Geçmiş" raporundan bahsediyorum ve pozisyonlar bu değerlere sahip olmasına rağmen Zarar Durdur ve Kâr Al sütunlarında hiçbir şey görmüyorum.

Raporda bir durak belirlenip belirlenmediği nasıl anlaşılır? işe yaradıysa - görünür olduğu açıktır, ancak değilse ???

 

Bir sonraki sorum var.

Görev, önceki değerleri silerek Özkaynak değerlerini test aşamasında belirli bir dosyaya yazmaktır.

Ama şu oluyor:

1. OnInit()' te FileDelete() 'nin olmadığı durumda, kayıt mevcut olanlara ek olarak gerçekleşir.

2. Ancak OnInit()'te bir FileDelete() olduğunda, OnCalculatde()'deki aynı Equity girişlerine rağmen, sonuçta ortaya çıkan dosya boştur.

Bu neden olur ve nasıl önlenir?

Aşağıdaki kodu veriyorum:

 #property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_label1   "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1   1
double    Values[];
string    Array[];
string    filename= "equity FileWrite25.txt" ;
int       handle;
int       NumberCopyElements;
string    common_folder;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit (){
   SetIndexBuffer ( 0 ,Values, INDICATOR_DATA );
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN , 100 );
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );
   ArraySetAsSeries (Values, false );
   //---
   common_folder= TerminalInfoString ( TERMINAL_COMMONDATA_PATH );
   FileDelete (filename, FILE_COMMON );
   return ( 0 );
}
int OnCalculate ( const int         rates_total,
                 const int         prev_calculated,
                 const datetime &  time[],
                 const double &    open[],
                 const double &    high[],
                 const double &    low[],
                 const double &    close[],
                 const long &      tick_volume[],
                 const long &      volume[],
                 const int &       spread[])
{  
   uint written;
   handle= FileOpen (filename, FILE_WRITE | FILE_READ | FILE_COMMON | FILE_TXT );
   if (handle!= INVALID_HANDLE ){
       FileSeek (handle, 0 , SEEK_END );
      written= FileWrite (handle, TimeToString ( TimeCurrent ()), " " , AccountInfoDouble ( ACCOUNT_EQUITY )); //TimeToString(time[i]),
       PrintFormat ( "Equity FileWrite25 - OnCalculate(): Записано %d байт в общую папку всех терминалов - %s" ,written,common_folder);
   }
   else {
       Print ( "Equity FileWrite25 - OnCalculate(): Не удалось открыть файл " ,filename, ".  Ошибка " , GetLastError ());     
   }
   FileClose (handle);
   return rates_total;
}
void OnDeinit ( const int reason){
   FileClose (handle);
}
 
Voodoo_King :

ne :) ? sipariş verirken nerede görüntülenirler?

"Geçmiş" raporundan bahsediyorum ve pozisyonlar bu değerlere sahip olmasına rağmen Zarar Durdur ve Kâr Al sütunlarında hiçbir şey görmüyorum.

Raporda bir durak belirlenip belirlenmediği nasıl anlaşılır? işe yaradıysa - görünür olduğu açıktır, ancak değilse ???

'Geçmiş/Emirler' sekmesinde görüntülenir.Sizce stoplar tetiklendiğinde server'ın pozisyonu kapattığı emirde zararı durdur ve kar al emirleri nelerdir? Sonuçta, geçmişteki sipariş parametrelerini tam olarak düşünüyorsunuz.
 
DV2010 :

Bir sonraki sorum var.

Görev, önceki değerleri silerek Özkaynak değerlerini test aşamasında belirli bir dosyaya yazmaktır.

Ama şu oluyor:

1. OnInit()'te FileDelete()'nin olmadığı durumda, kayıt mevcut olanlara ek olarak gerçekleşir.

2. Ancak OnInit()'te FileDelete() olduğunda, OnCalculatde()'de aynı Equity girişlerine rağmen, sonuçta ortaya çıkan dosya boştur.

Bu neden olur ve nasıl önlenir?

Aşağıdaki kodu veriyorum:

Test modunu tanımak için bir çözüm buldum, ancak bunda utanç verici bir ampirizm var.

(Tarihin derinliğine bir girinti yapmak ve böylece gerçek zamanı kesmek için test cihazının başlatma zamanını programlı olarak elde etme olasılığını bulmaya çalıştım,

ama maalesef bulamadım.)

   if (rates_total - prev_calculated > 1 && rates_total - prev_calculated < 10000 ){
     FileDelete (filename, FILE_COMMON );
   }   
Ancak burada, test süresini değiştirdikten sonra, test sonuçlarına göre göstergelerin bir nedenden dolayı ortadan kalkması gerçeğinden oluşan tamamen farklı bir nitelikte bir sorun ortaya çıktı, ancak bundan sonra yeni dönem için bir derleme yapılırsa, o zaman test cihazının başlatılması bunları görüntüler.

Böcek?