Problem prensipte MQL4'te çözülebilir mi? - sayfa 2

 

Kodu alalım, akşama kadar çözeriz.

Kişisel olarak yapabilirsiniz :)

 
tara :
Kodu alalım, akşama kadar çözeriz.

#property telif hakkı "Telif Hakkı 2013, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"

//#include <WinUser32.mqh>
//int whwnd;
//#include <stdlib.mqh> // Standart kitaplık
çift b;
çift yüzde;
çift maksimum yüzde = 0;
int TimeToresume = 10;
int seçim zamanı = 1;
dizi durumu, durum1;
int toplam;
int büyü[100];
intcol=0;
inttempcol=0;
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- ------ ----------------------+
int init()
{

dönüş(0);
}
//+------------------------------------------- ------ ----------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
// while(!IsStopped()) // Kullanıcı olduğu sürece..
/// { // ..programın yürütülmesini durdurmaz
// RefreshRates();
b = Hesap Bakiyesi()/100;
yüzde = AccountProfit()/b;
if (maxpercent > yüzde) maxpercent = yüzde;
TimeResume = TimeLocal();
if (yüzde*(-1) > 1) durum = "Aktif Dondur";
else durum = "Çalışıyor";
toplam=SiparişToplam();
sütun=0;
for (int i=total; i>0; i--) { // dizinin her elemanına her açık siparişin büyüsünün değerini atar
OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES);
magic[i] = OrderMagicNumber();
// Yazdır ("Büyü " + i+" " +büyü[i]);
}
for (int k = 1; k <= 1; k++){ // ilk açık siparişin büyüsünü sonraki ile karşılaştırır
tempcol = büyü[k];
for (int l = 1; l<=toplam;l++){
if (tempkol != magic[l]) kol++;
}
}
if(kol >= 2){ // eğer 2'den fazla EA ticarete girdiyse
GlobalVariableSet("Dondur1",200); // diğer EA'lar bu global değişkenlere uymalıdır
GlobalVariableSet("Dondur2",200); // ve işlemlere girmeyin, ancak bu zamana kadar emir açmak için zamanları var
durum1="test2"; //GlobalVariableSet ("Dondur1",200) danışmanı, kendi isteğini bekledikten sonra yapar
} // terminaldeki kuyruklar
Yorum ( AccountProfit()
,"\n"
,"DrawDown ",NormalizeDouble (yüzde,1)*(-1), " %", " MaxDrawDown ", NormalizeDouble (maxpercent,1)*(-1), " % "
, ZamanÖzgeçmiş
,"\n"
,durum," ",yüzde*(-1)
,"\n"
,"Sipariş Toplamı",toplam
,"\n"
,OrderSymbol()," Magic ", OrderMagicNumber()," ",kol
,"\n"," ",durum1
);
dönüş;
}

//+------------------------------------------- ------ ----------------------+

Kesinlikle yargılamayın, porgramları en son okul yıllarımda BASIC'te Sinclair'de yazdım ....


 
Zakyza :


Öncelikli bir sistem belirlemek için MQL4'ü kullanmak, böylece önce yöneten EA'nın kodunun ve ardından diğerlerinin tümünün yürütülmesi mümkün müdür?


Tabi ki yapabilirsin.

Danışmanların çalışmalarını "efendi-köle" şemasına göre düzenleyin

 
avtomat :


Tabi ki yapabilirsin.

Danışmanların çalışmalarını "efendi-köle" şemasına göre düzenleyin


Lütfen, nasıl daha ayrıntılı organize edilir, Ticaret Uzman Danışmanları yalnızca global bir değişkenin değerini değiştirerek etkilenebilir ve "yöneticim" tenezzül ettikten sonra bu GlobalVariableSet ("Freeze1",200) değişkenini dinlerler. oraya 200 yazma sırası
 
Zakyza :

Lütfen, nasıl daha ayrıntılı organize edilir, Ticaret Uzman Danışmanları yalnızca global bir değişkenin değerini değiştirerek etkilenebilir ve "yöneticim" tenezzül ettikten sonra bu GlobalVariableSet ("Freeze1",200) değişkenini dinlerler. oraya 200 yazma sırası

Menajeriniz müdürse neden bir tür kuyruk bekliyor?

Takipçiler kendilerininkini beklemelidir: yönetici GV'de ticaret yasağı girdi - oturuyorlar, sessizler (takipçi, "boşta oturmayın" ise küresel bayrağı ilk işaretle kontrol etti - dedi YavolGerGeneral ve geri döndü (0 ))...

Neden GV bayrağına erişmek için sırada bekleyen bir yöneticiniz var?

 
Bütün bunlar bir danışman tarafından yapılır)))) İçine en az 100 çift doldurulmalıdır)))
 
artikul :
Bütün bunlar bir danışman tarafından yapılır)))) İçine en az 100 çift doldurulmalıdır)))

Pekala, bahsettiğimiz şey bu değil...
 

usta

 //+------------------------------------------------------------------+
int deinit()
  {
       GlobalVariableSet (work, 0 );   // запрещение работы ведомым
   return ( 0 );
  }
//+------------------------------------------------------------------+
.....

int start()
   .....

   work= GlobalVariableGet (work);

   if ( work== 0 && всё_хорошо )   GlobalVariableSet (work, 1 );   // разрешение работы ведомым

   if ( work== 1 && всё_плохо )     GlobalVariableSet (work, 0 );   // запрещение работы ведомым

// можно организовать систему запретов/разрешений любой сложности   

   .....

köle

.....

int start()


   work= GlobalVariableGet (work);

   if ( work== 0 )   { стоп } ;    // здесь возможны некоторые действия для завершения текущих процессов

   if ( work== 1 )   { работа };   // ведомым разрешена работа -- можно работать в нормальном режиме

.....

Umarım netleştirmişimdir.

 
avtomat :

usta

köle

Umarım netleştirmişimdir.


Her şey açık, teşekkürler.

Bunu yapmaya çalıştım (yani hemen yasakla ve duruma göre izin ver), ama benim için şu şekilde çalışıyor:

master'ın bu şekilde başlatılmasından sonra: int deinit().... // köle köleler tarafından çalışmanın yasaklanması itaatkar bir şekilde sessizdir, ANCAK efendi sadece gevşemeli ( if (aynı sihirbazların sayısı <=2) ) ve GlobalVariableSet (iş, 1 ); // köle köleler için çalışma izni ve 8 farklı çiftte 8 tane var, master durumunda belirtildiği gibi 2 çiftte değil, 4 - 6 çiftte açmayı başarırlar, yani master "anlayıncaya kadar açarlar" "Aynı büyülerin sayısı" zaten 2'den çok daha fazla. Ondan sonra, elbette, kölelerin geri kalanı sessiz, ama açıkçası artık istendiği gibi 2 kopya değil, 4-6.

Anladığım kadarıyla bu, int start() kodumu yürüttükten sonra kontrolün int start() bağımlı danışmanlara aktarılması ve kaç tane int start() bağımlı danışmanın yürütmek için zamanının olması ve kaç kopya olduğuna bağlı olması nedeniyle oluyor. master başlayana kadar kaç çiftin açılacağı ve global engelleyici olmayacak. Terminalin algoritmasını ve sorunun özünü yanlış anlarsam beni düzeltin. Kabaca söylemek gerekirse, bir efendi ve bir köle varsa, o zaman her şey büyük olasılıkla düzgün çalışacaktır, ancak o zaman 8-10 köle vardır!

Nedense, ustanın başlangıcını döngüye almaya ve onu sonsuz yürütmeye mahkum etmeye çalıştığımı yazdım, ancak terminalim az önce askıda kaldı.

artmedia70 : " Menajeriniz menajer ise neden bir tür kuyruk bekliyor?" - İşte bunu bilmek istiyorum.

 

Ve neden ve neden iki özdeş sihir yapılır?

Global değişkenler aracılığıyla, dahil edilen Uzman Danışmanlar için örtüşmeyen büyü alanlarının atamasını düzenleyebilirsiniz. Uygun kontroller ve atamalar init() içinde yapılır.

Ek olarak, her enstrüman için açık emir sayısını açıkça belirterek veya master'ın kontrol etmesi gereken mevcut genel duruma bağlı olarak master olarak atayarak sınırlayabilirsiniz.

onlar. köle bir şey yaptıysa, bunu efendiye rapor etmelidir. Efendi, sırayla, kölenin diğer eylemlerinin (veya eylemsizliğinin) bağlı olduğu özgeçmişini vermelidir.