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

 
psihodelit işlevi bir EA'dan diğerine aktarmanın mümkün olup olmadığını söyleyebilir misiniz?

Örneğin, emirleri açan bir EA vardır ve hesabın durumunu izleyen, parametrelerin düşüş vb. belirtildiği bir EA vardır,

İkinci danışmanın düşüşüne ulaşıldığında, ilk danışmanın siparişleri açmamasına ihtiyacım var....

Örneğin nasıl yapılır?

İlk EA belirli bir medzhik ile pozisyonlar açarsa, bu pozisyonları içinde veya başka bir EA'da sıralayabilir ve toplam kar kaybını hesaplayabilirsiniz. Ve sahip olduğunuz ikinci Uzman Danışman bu kar-zararı sayar, bu nedenle bir düşüş olamaz, pozisyon açmaz, istenen medzhik ile pozisyonların durumunu izler. Ve genel olarak, pozisyonlar açıldıktan sonra kendi başlarınadır ve aralarında genellikle doğru olanları bulmanız gerekir)))))

 
psihodelit işlevi bir EA'dan diğerine aktarmanın mümkün olup olmadığını söyleyebilir misiniz?

Örneğin, emirleri açan bir EA vardır ve hesabın durumunu izleyen, parametrelerin düşüş vb. belirtildiği bir EA vardır,

İkinci danışmanın düşüşüne ulaşıldığında, ilk danışmanın siparişleri açmamasına ihtiyacım var....

Örneğin nasıl yapılır?

Birkaç seçenek var.

Yukarıdaki tavsiyeyi kullanabilirsiniz. Oldukça işe yarar bir varyanttır.

Terminalin Global değişkenlerini kullanabilirsiniz.

Bir dosya yazarak/okuyarak Uzman Danışmanlar arasında bir değişim ayarlayabilirsiniz.

Dedikleri gibi, tüm keçeli kalemlerin tadı ve rengi farklıdır :).

 
psihodelit işlevi bir EA'dan diğerine aktarmanın mümkün olup olmadığını söyleyebilir misiniz?

Örneğin, emirleri açan bir EA vardır ve hesabın durumunu izleyen, parametrelerin düşüş vb. belirtildiği bir EA vardır,

İkinci danışmanın düşüşüne ulaşıldığında, ilk danışmanın siparişleri açmamasına ihtiyacım var....

Örneğin nasıl yapılır?

Başlangıç olarak (elbette IMHO) birkaç inceliği anlamanız gerekir

  1. Her iki EA'nın kodunun düzenleme için kullanılabilir olup olmadığı.
  2. EA'lar Global Değişkenlerde etkinliklerinin izlerini bırakıyor mu
  3. En azından temel kodlama becerileriniz var mı?
Her üç incelik için de cevap olumluysa, planladığınız şeyi uygulamak kolay olacaktır, boşluklar varsa daha zor olacaktır, ancak bu da mümkündür - birlikte bir şeyler düşüneceğiz.
 
Sergey Voytsekhovsky #:

Eğer bu üç incelik de olumlu yanıtlanırsa, ...

o zaman bu soru burada ortaya çıkmazdı.

 
Yuriy Bykov #:

Yukarıda önerdiğiniz fikir için çok teşekkür ederim. Eğer ilgileniyorsanız, işte ortaya çıkan şey.

//---
   NOD = 1;
   ArraySort(Arr_ZigLag);
   size_zigLag = ArraySize(Arr_ZigLag);
   for(int i = size_zigLag - 1; i > 0; i--)
     {
      if(NOD != 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i-1], NOD);
      if(NOD == 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i], Arr_ZigLag[i-1]);
           }
   return(NOD);
  }
//+------------------------------------------------------------------+
//| Функция НОД(НаибольшийОбщийДелитель)                             |
//+------------------------------------------------------------------+
int CalculateNOD(int a=1, int b=1)
  {
   int Nod = (int)MathMod(a, b);
   while(Nod > 0)
     {
      a = b;
      b = Nod;
      Nod = (int)MathMod(a, b);
     }
   if(Nod == 0)
      Nod = b;
   return(Nod);
  }
 
Sergey Voytsekhovsky #:

Ya da şöyle yapabilirsin:

//+------------------------------------------------------------------+
//| Наибольший общий делитель чисел a и b                            |
//+------------------------------------------------------------------+
int gcd(int a, int b) {
   int c;

   while(b > 0) {
      c = a % b;
      a = b;
      b = c;
   }

   return a;
}

//+------------------------------------------------------------------+
//| Наибольший общий делитель массива чисел a                        |
//+------------------------------------------------------------------+
int ArrayGcd(int &a[]) {
   int n = ArraySize(a);
   if(n == 1) {
      return 0;
   }
   int c = gcd(a[0], a[1]);

   for(int i = 2; i < n; i++) {
      c = gcd(a[i], c);
      if(c == 1) {
         break;
      }
   }
   return c;
}


int OnCalculate(...) {
   ...
   ArraySort(Arr_ZigLag);
   NOD = ArrayGcd(Arr_ZigLag);
   return(NOD);
  }
 
Yuriy Bykov #:

Ya da şöyle yapabilirsin:

Katılıyorum, çok güzel! Kütüphaneye koyabilir miyim?

 
Yuriy Bykov #:

Ya da şöyle yapabilirsin:

Soruyu anlayabilmem için bana bir ipucu verebilir misiniz?

Matematik f'sini kullandınız. "Bölme işlemindenkalan", ancak dahili "MathMod" işlevim var, "iki sayının bölünmesinden gerçek kalan" dan bahsediyor. "Gerçek" kelimesi ne anlama geliyor????

 
Sergey Voytsekhovsky #:

HER ŞEY kelimesi ne anlama geliyor???

Bu durumda, kesirli sayılar ima edilmektedir.

 
Aleksandr Slavskii #:

Birkaç seçenek vardır.

Yukarıdaki tavsiyeleri kullanabilirsiniz. Oldukça uygulanabilir bir seçenektir.

Global terminal değişkenlerini kullanabilirsiniz.

Bir dosya yazarak/okuyarak Uzman Danışmanlar arasında değişim ayarlayabilirsiniz.

Dedikleri gibi))))) tüm keçeli kalemlerin tadı ve rengi farklıdır.

Sadece ne yönde hareket edileceğini, nereden ve nasıl başlanacağını anlamak için. Neredeyse hiç bilgi yok...

  1. Her iki danışmanın kodu da düzenleme için kullanılabilir mi?
    Evet.
  2. Danışmanlar Global Değişkenlerde faaliyetlerinin izlerini bırakıyor mu
    Kesin olarak söyleyemem.
  3. En azından temel kodlama becerileriniz var mı
    Birazcık.
Neden: