Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1433

 
lego9955 hata işleme daha doğru. Teşekkürler!

Her ihtimale karşı, bunları gösterdiğim gibi tek bir satırda yazmak, ayrı satırlardan oluşan bir diziden daha kolaydır.

 
Alexey Petrov #:

Merhaba,

Hazır çözümler için piyasada arama yapmayı deneyin - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market

Freelance'den özelleştirilmiş bir çözüm de sipariş edebilirsiniz - https://www.mql5.com/fr/job

Merhaba ve cevabınız için teşekkür ederim. Beklentilerimi karşılayan bir komut dosyası oluşturabildim, ancak ne yazık ki hala anlayamadığım veya düzeltemediğim iki hata var. Biraz yardım için kiminle iletişime geçeceğimi biliyor musunuz? Derlemeden sonra hata olarak kaydedilen sadece iki satır kod ...
 
Yeni Yılınız Kutlu Olsun! MT5 10 veya 11 için hangi pencereler daha iyidir? AMD 5900X dizüstü bilgisayarda oturuyor
 

Herkese merhaba ve mutlu yıllar! Bana söyleyebilir misiniz: komut dosyamın piyasadan bir gösterge kullanacağını nasıl anlayabilirim?

Daha spesifik olarak:
piyasada bir "Otomatik Trend Çizgisi" göstergesi var. Buna dayalı olarak, fiyat göstergede bu çizgileri geçtiği anda bir pozisyon açacak veya kapatacak bir robot yapmak istiyorum (iyi ve belirtilen ek koşullar altında).

 
Rad89 #:

Herkese merhaba ve mutlu yıllar! Bana söyleyebilir misiniz: komut dosyamın piyasadan bir gösterge kullanacağını nasıl anlayabilirim?

Daha spesifik olarak:
piyasada bir "Otomatik Trend Çizgisi" göstergesi var. Buna dayalı olarak, fiyat göstergedeki bu çizgileri geçtiği anda bir pozisyon açacak veya kapatacak bir robot yapmak istiyorum (iyi ve belirtilen ek koşullar altında).

Kendim için sorun yok. Market veya CodeBase için başkasının el sanatlarını marketten kullanamazsınız ...

 
Alexey Viktorov #:

Kendiniz için sorun yok. Marketten veya CodeBase'den başka birinin el sanatlarını kullanamazsınız...

Kendin için. Nasıl yapılacağını bilmiyorum. Açık kaynak kodunu bulamıyorum. Ya da satırların konumunu yakalaması için koduma nasıl vidalayacağımı.

 

Merhaba, @Rad89

iCustom( ) ve CopyBuffer() işlevlerine ihtiyacınız var.

İşte Marketten indirilen bir göstergeyi bir Uzman Danışmana ekleme örneği

// Глобальная переменная для хендла индикатора
int tlHandle;

int OnInit() {
   // Создаем хендл индикатора
   tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
   
   // Можем добавить индикатор на график, если хотим. 
   // Для использования в расчетах это необязательно
   ChartIndicatorAdd(ChartID(), 0, tlHandle);

   // Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилось
   OnTick(); 
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

void OnTick() {
   // Объявляем массивы для буферов индикатора
   double tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...
   
   int res;
   
   // Копируем нужное количество значений из индикаторных буферов в массивы
   res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
   res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
   
   // У разных индикаторов различное количество индикаторных буферов, 
   // числа из которых используются для построения линий, значков, цветовых меток на графике
   // Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно
   
   // res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);
   
   // Пользуемся полученными значениями
   ArrayPrint(tlBuffer0);
   ArrayPrint(tlBuffer1);
}
Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
iCustom - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Merhaba. Bir Enum var.
enum ENUM_NAME
  {
   ENUM_1,
   ENUM_jsdf
   ....
   ENUM_FEF;   
  };
Tüm olası ENUM_NAME değerleri için (tekrarlar olmadan) yeterli bellek olacak şekilde E_NAME[] dizisi için bellek nasıl ayrılır?
ENUM_NAME     E_NAME[];

Ve E_NAME[] öğesini tüm olası değerlerle başlatın ?

 

Merhaba, @pivomoe

Numaralandırma öğelerine sayısal değerler atamaya zorlamayacaksanız (örneğe bakılırsa, zorlamayacaksınız), bunu şu şekilde yapabilirsiniz:

// Объявляем перечисление
enum ENUM_NAME {
   ENAME_1,
   ENAME_JSDF,
   ENAME_ERT,
   ENAME_QWERTY,
   ENAME_FEF
};

// Обявляем константу, хранящую количество элементов перечисления
#define  ENUM_NAME_SIZE 5

// Массив для хранения элементов перечисления
ENUM_NAME     E_NAME[ENUM_NAME_SIZE];

int OnInit() {
   // Заполняем массив значениями, преобразуя к типу ENUM_NAME
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      E_NAME[i] = (ENUM_NAME) i;
   }

   // Пользуемся массивом
   ArrayPrint(E_NAME);
   
   for(int i = 0; i < ENUM_NAME_SIZE; i++) {
      Print(EnumToString(E_NAME[i]));
   }
   
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) {}

Bu durumda, numaralandırmaya öğe eklerken öğe sayısını saklayan sabiti de değiştirmeniz gerekecektir.

Ayrıca, ENUM_ önekini yalnızca numaralandırmanın adı için kullanmak ve elemanları için başka bir önek kullanmak daha iyidir. Bu kural tüm standart MQL numaralandırmalarında kullanılır.

 
Yuriy Bykov #:

Merhaba, @pivomoe

Numaralandırma öğelerine sayısal değerler atamaya zorlamayacaksanız (örneğe bakılırsa - zorlamayacaksınız), bunu şu şekilde yapabilirsiniz:

Bu durumda, numaralandırmaya öğe eklerken öğe sayısını saklayan sabiti de değiştirmeniz gerekecektir.

Ayrıca, ENUM_ önekini yalnızca numaralandırmanın adı için kullanmak ve öğeleri için başka bir önek kullanmak daha iyidir. Bu kural tüm standart MQL numaralandırmalarında kullanılır.

Yardımınız için teşekkürler. ENUM'u o kadar uzun yıllardır kullanıyorum ki yardımı okumak aklıma bile gelmedi.