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

 
Roman Efimov :
Genel olarak, sorun bu! Başka bir EA ile karı takip etmek istiyorum, ancak bu EA kar için stop-loss çekmeme izin vermiyor! Birisi düzeltebilir mi! Yazar cevap vermiyor!

Peki, giriş parametrelerine "0" koyun ve durak olmayacak

extern int TrailingStop = 0 ; //izlemestop, eğer 0 ise takip yok

 
Vitaly Muzichenko :
Belirli bir göstergeyi tek bir hareketle tüm çizelgelerden nasıl kaldırabilirim? Yeni şablonla çalışmıyor. Belki bir senaryo?

neyse, göstergeyi kaldırmak için grafiği kapatmanız gerekiyor

şablon neden uymuyor? - bu konuda uzman askıda kalıyor mu? - Bir Uzman Danışmanı bir grafik şablonuna kaydetmenin ve aynı Uzman Danışmandan bir şablon uygulamanın mümkün olup olmadığını kontrol ettim - Uzman Danışman silinecek ve ardından bu şablonda yeniden başlatılacak

 
Igor Makanu :

neyse, göstergeyi kaldırmak için grafiği kapatmanız gerekiyor

şablon neden uymuyor? - bu konuda uzman askıda kalıyor mu? - Bir Uzman Danışmanı bir grafik şablonuna kaydetmenin ve aynı Uzman Danışmandan bir şablon uygulamanın mümkün olup olmadığını kontrol ettim - Uzman Danışman silinecek ve ardından bu şablonda yeniden başlatılacak

Farklı işaretleme çizelgelerinde vb. şablonu değiştiremezsiniz)

 
Vitaly Muzichenko :

Farklı işaretleme çizelgelerinde vb. şablonu değiştiremezsiniz)

googled, ChartIndicatorDelete() var

https://docs.mql4.com/en/chart_operations/chartindicatordelete

hiç kullanmadım o yüzden söyleyemem

ChartIndicatorDelete - Операции с графиками - Справочник MQL4
ChartIndicatorDelete - Операции с графиками - Справочник MQL4
  • docs.mql4.com
Удаляет с указанного окна графика индикатор с указанным именем. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError...
 
Igor Makanu :

googled, ChartIndicatorDelete() var

https://docs.mql4.com/en/chart_operations/chartindicatordelete

hiç kullanmadım o yüzden söyleyemem

Evet, teşekkürler, Alex zaten bana bu konuda bilgi verdi.

Yaptım, şu hariç her şey çalışıyor: Giriş parametrelerinde hangisini silmek için bir seçim olması için kaydolmak nasıl bu kadar büyülü olurdu?

 #property version    "1.00"
#property strict
#property show_inputs

enum ind {
 ind_1, // Indicator 1
 ind_2, // Indicator 2
 ind_3, // Indicator 3
 ind_4   // Indicator 4
};

input string ProgName = "Candles Signal" ;

long list_id[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
 {
 int size=ChartGetIDList(list_id);
   //
   for ( int i=size- 1 ;i>= 0 ;i--) {
   long id=list_id[i];
   for ( int k= ChartIndicatorsTotal (id, 0 );k>= 0 ;k--) {
     if ( ChartIndicatorName (id, 0 ,k)==ProgName) {
     Print ( ChartSymbol (id), "=" , ChartIndicatorName (id, 0 ,k));
     ChartIndicatorDelete (id, 0 ,ProgName);
    }
   }
  }
 }
//+------------------------------------------------------------------+
int ChartGetIDList( long &List[]) {
 int i= 0 ;
 long chartID= ChartFirst ();
 while (chartID!=- 1 ) {
    i++;
     ArrayResize (List,i);
     List[i- 1 ]=chartID;
   chartID= ChartNext (chartID);
  }
   return ( ArraySize (List));
 }
 

for(i=0,y=0;i<li_0;i++) döngüsü için en yüksek periyottan değerleri alabilen bir gösterge vardır.

for döngüsü nasıl yapılır (int i = li_0; i >= 0; i--)

   datetime TimeArray[];
   int     i,shift,y= 0 ;
       int counted = IndicatorCounted ();
   if (counted < 0 ) return (- 1 );
   if (counted > 0 ) counted--;
   int li_0 = Bars - counted;
    
   // Plot defined timeframe on to current timeframe   
   ArrayCopySeries (TimeArray, MODE_TIME , Symbol (),TimeFrame); 
   
   for (i= 0 ,y= 0 ;i<li_0;i++)
 //  for (int i = li_0; i >= 0; i--) //ДЛЯ ТАКОГО ЦИКЛА КАК СДЕЛАТЬ
     {
     if ( Time [i]<TimeArray[y]) y++;
     stro_1= NormalizeDouble ( iCustom ( NULL , TimeFrame, "slow" , 0 , y+ 1 ), Digits );
     }
 
Vitaly Muzichenko :

Evet, teşekkürler, Alex zaten bana bu konuda bilgi verdi.

Yaptım, şu hariç her şey çalışıyor: Giriş parametrelerinde hangisini silmek için bir seçim olması için kaydolmak nasıl bu kadar büyülü olurdu?

işte kontrol edilecek komut dosyası

 #property strict
#property show_inputs
enum Eind {
 ind_1, // Indicator 1
 ind_2, // Indicator 2
 ind_3, // Indicator 3
 ind_4   // Indicator 4
};

input Eind param = ind_1;
//+------------------------------------------------------------------+
void OnStart ()
  {
   Alert ( "Выбран :" ,param);
  }
//+------------------------------------------------------------------+
 
Igor Makanu :

işte kontrol edilecek komut dosyası

Anladığım kadarıyla bir switch üzerinden bir seçim yapmanız ve oradaki isimleri girmeniz gerekiyor.

Kodunuz bir int değeri yazdırıyor, ancak bir dize seçmeniz gerekiyor


 
Vitaly Muzichenko :

Anladığım kadarıyla, bir anahtar aracılığıyla bir seçim yapmanız ve oraya isimleri girmeniz gerekiyor.

Kodunuz bir int değeri yazdırıyor, ancak bir dize seçmeniz gerekiyor


Ve EnumToString() size yardımcı olmayacak mı? Tek sorun, göstergenin kısa adında bir boşluk veya başka bir geçersiz karakter varsa bunun olabilmesidir. Aşırı durumlarda, bir dizi dize değişkeni oluşturabilir ve oradan numaralandırma dizini ile alabilirsiniz. Yoksa kişisel kullanım için değil mi ve açıklamak kod yazmaktan daha uzun sürecek mi?

 
Alexey Viktorov :

Ve EnumToString() size yardımcı olmayacak mı? Tek sorun, göstergenin kısa adında bir boşluk veya başka bir geçersiz karakter varsa bunun olabilmesidir. Aşırı durumlarda, bir dizi dize değişkeni oluşturabilir ve oradan numaralandırma dizini ile alabilirsiniz. Yoksa kişisel kullanım için değil mi ve açıklamak kod yazmaktan daha uzun sürecek mi?

Anahtardan yapmaya çalışacağım ama sonra. İsimlerde boşluk var