Hatalar, hatalar, sorular - sayfa 355

 
Aracılar her zaman ana bilgisayardakiyle aynı geçmişe sahip midir?
 
dimonsky :
Aracılar her zaman ana bilgisayardakiyle aynı geçmişe sahip midir?
Teoride evet, ancak tarihin senkronizasyonu ve diğer bazı noktalarla ilgili sorunlar var.
 

Tüm konuyu okumadım, bu yüzden daha önce gönderildiyse özür dilerim.

1. Testi başlatma ve durdurma zamanını (tarihle karıştırılmamalıdır) seçmek mümkün olacak mı?

2. Ayarlarda belirlenenler (birden fazla para birimi için - bir enstrüman için - test sonuçlarında "açık grafik" ve diğerleri için) dışında, test cihazında diğer çiftler için işlemler nasıl görüntülenir?

 
Retsam :

Tüm konuyu okumadım, bu yüzden daha önce gönderildiyse özür dilerim.

1. Testi başlatma ve durdurma zamanını (tarihle karıştırılmamalıdır) seçmek mümkün olacak mı?

2. Ayarlarda belirlenenler (birden fazla para birimi için - bir enstrüman için - test sonuçlarında "açık grafik" ve diğerleri için) dışında, test cihazında diğer çiftler için işlemler nasıl görüntülenir?

1 Siz istemedikçe böyle bir şey yoktur.

2 de hayır

 

Tünaydın!

MT 5.425 Windows 7 x64

Göstergeyi bir alt pencerede başlatıyorum (alt pencere No. 1), orada bir tampon kullanarak bir grafik gösteriyorum ve ChartGetDouble(0,CHART_PRICE_MAX,1) ve ChartGetDouble(0, CHART_PRICE_MIN kullanarak pencerenin minimum ve maksimum fiyatını almak istiyorum, 1) sırasıyla.

Ana pencerenin minimum ve maksimum değerleri doğru görüntülenirken çıktı 0'dır (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)). ChartRedraw(0) yardımcı olmuyor. Grafiği fareyle kaydırmaya başlarsanız, değerler ölür - doğru şekilde gösterilmeye başlar.

Böyle bir yanlış anlama, ilk başlatmada veya gösterge özelliklerindeki değerleri değiştirirken ortaya çıkar.

Belki bu bir hatadır ya da belki ben yanlış bir şey yapıyorum.

Yardım dosyasındaki bu giriş nasıl anlaşılır?

CHART_PRICE_MIN Grafik minimum çift r/o değiştirici - alt pencere numarası

CHART_PRICE_MAX Grafik maksimum çift r/o değiştirici - alt pencere numarası

Teşekkür ederim!

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Tüm grafik pencereleri sıfırdan başlayarak numaralandırılmıştır. 0 - grafiğin ana penceresi, 1 - ayrı bir pencerede gösterilen ilk göstergenin penceresi. Vb.
 

Neler olduğunu anlayamıyorum:

iki gösterge aynı parametrelere sahipse, danışman yalnızca Satın Al'ı açar ve parametreler farklıysa, pozisyonları nasıl kapattığı hiç açık değildir....

Teoride, ikinci gösterge anlaşmaları kapatmalı, ancak bu böyle değil. Kodun kendisi:

 #include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM= 14 ;
input int TriX_PARAM_Close= 50 ;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit ()
  {

   TriXHandle= iTriX ( Symbol (), PERIOD_CURRENT ,TriX_PARAM, PRICE_WEIGHTED );
   TriXHandle_Close= iTriX ( Symbol (), PERIOD_CURRENT ,TriX_PARAM_Close, PRICE_WEIGHTED );
   return ( 0 );
  }

void OnTick ()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if (myposition.Select( _Symbol )== true ) { if (myposition.Type()== POSITION_TYPE_BUY ) Buy_opened= true ;   if (myposition.Type()== POSITION_TYPE_SELL ) Sell_opened= true ;}

//Закрываем позицию
   if (Buy_opened== true || Sell_opened== true )
     {
       ArraySetAsSeries (TriX_Close, true );
       CopyBuffer (TriXHandle_Close, 0 , 0 , 4 ,TriX_Close);

       if (Sell_opened= true && TriX_Close[ 1 ]>TriX_Close[ 2 ] && TriX_Close[ 2 ]<TriX_Close[ 3 ]) mytrade.PositionClose( _Symbol );
       if (Buy_opened= true && TriX_Close[ 1 ]<TriX_Close[ 2 ] && TriX_Close[ 2 ]>TriX_Close[ 3 ]) mytrade.PositionClose( _Symbol );

     }

//Открываем позицию
   if (Buy_opened== false && Sell_opened== false )
     {
       ArraySetAsSeries (TriX, true );
       CopyBuffer (TriXHandle, 0 , 0 , 4 ,TriX);
      
       if (TriX[ 1 ]>TriX[ 2 ] && TriX[ 2 ]<TriX[ 3 ]) mytrade.Buy( 0.1 , _Symbol , NormalizeDouble (mysymbol.Ask(), _Digits ), 0 , 0 );
       if (TriX[ 1 ]<TriX[ 2 ] && TriX[ 2 ]>TriX[ 3 ]) mytrade.Sell( 0.1 , _Symbol , NormalizeDouble (mysymbol.Bid(), _Digits ), 0 , 0 );

     }
  }
 
Optimizasyon sırasında terminalin güncellenmediğinden emin olmak mümkün müdür?
 
Jager :
Optimizasyon sırasında terminalin güncellenmediğinden emin olmak mümkün müdür?

Yani terminal çalışıyorsa ve 5-10 dakika boyunca güncellenmediyse,

o zaman olmaz, ancak güncellerseniz yeni ayarlar kaydedilmez

terminali yeniden başlatmadan önce, elbette interneti kapatabilirsiniz.

 
Mr.FreeMan :

Neler olduğunu anlayamıyorum:

iki gösterge aynı parametrelere sahipse, danışman yalnızca Satın Al'ı açar ve parametreler farklıysa, pozisyonları nasıl kapattığı hiç açık değildir....

Teoride, ikinci gösterge anlaşmaları kapatmalı, ancak bu böyle değil. Kodun kendisi:

Dizileri farklı şekilde belirlediğiniz gibi bir şey yazdınız - (pek yardımcı olmuyor, ancak

bu daha iyi). değişiklik:

 CopyBuffer (TriXHandle_Close, 0 , 0 , 3 ,TriX_Close);
CopyBuffer (TriXHandle, 0 , 0 , 4 ,TriX);

bu satırlara

 CopyBuffer (TriXHandle_Close, 0 , 0 , 3 ,TriX_Close);
 CopyBuffer (TriXHandle, 0 , 0 , 3 ,TriX);

Ayrıca değiştirin:

  if (Sell_opened= true && TriX_Close[ 1 ]>TriX_Close[ 2 ] && TriX_Close[ 2 ]<TriX_Close[ 3 ]) mytrade.PositionClose( _Symbol );
  if (Buy_opened= true && TriX_Close[ 1 ]<TriX_Close[ 2 ] && TriX_Close[ 2 ]>TriX_Close[ 3 ]) mytrade.PositionClose( _Symbol );
       if (TriX[ 1 ]>TriX[ 2 ] && TriX[ 2 ]<TriX[ 3 ]) mytrade.Buy( 0.1 , _Symbol , NormalizeDouble (mysymbol.Ask(), _Digits ), 0 , 0 );
       if (TriX[ 1 ]<TriX[ 2 ] && TriX[ 2 ]>TriX[ 3 ]) mytrade.Sell( 0.1 , _Symbol , NormalizeDouble (mysymbol.Bid(), _Digits ), 0 , 0 );

bu konuda

  if (Sell_opened= true && TriX_Close[ 0 ]>TriX_Close[1] && TriX_Close[1]<TriX_Close[ 2 ]) mytrade.PositionClose( _Symbol );
 if (Buy_opened= true && TriX_Close[ 0 ]<TriX_Close[ 1 ] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose( _Symbol );
      if (TriX[ 0 ]>TriX[ 1 ] && TriX[1]<TriX[ 2 ]) mytrade.Buy( 0.1 , _Symbol , NormalizeDouble (mysymbol.Ask(), _Digits ), 0 , 0 );
       if (TriX[ 0 ]<TriX[1] && TriX[ 1 ]>TriX[ 2 ]) mytrade.Sell( 0.1 , _Symbol , NormalizeDouble (mysymbol.Bid(), _Digits ), 0 , 0 );