Her döviz çifti için EA - döviz çifti başına yalnızca bir kez hangi kod açılacak?

 

Her döviz çifti için ayrı bir EA kullanıyorum.

Bir pozisyonun açılması gerekip gerekmediğini doğrulamak için "if (OrdersTotal<1)" açık emri olup olmadığını test ediyorum ama bu diğer tüm döviz çiftlerinin pozisyon açmasını engelleyecek ve fırsatları kaçırıyorum.

Başka bir deyişle: Her döviz çifti için sadece bir pozisyon açmak istiyorum = farklı döviz çiftlerinde birden fazla pozisyon mümkün olmalıdır.

"if (OrdersTotal<1)" yerine hangi kodu kullanmalıyım? Biri bana yardım edebilir mi? Yardımınız için şimdiden teşekkür ederim.

 

Her para birimi çiftinin kendi GlobalVariable'ına sahip olması, örneğin "MyEA_EURUSD".

EA'yı günde bir işlemle sınırlandırıyor olsaydınız, kod şöyle olurdu:

string sCheck = "MyEA_" + Symbol();

tarihsaat t = TimeCurrent();

tarihsaat tTicaret = t - TimeHour(t)*60*60 - TimeDakika(t)*60 - TimeSaniye(t);

if(!GlobalVariableCheck(sCheck)) GlobalVariableSet(sCheck, tTicaret -PERIOD_D1 * 60);

if(GlobalVariableGet(sCheck) < tTicaret) {

Sipariş Gönder(......);

GlobalVariableSet(sCheck, tTicaret);

}

 

Bunu en üste getirdiğim için üzgünüm ama şu anda aynı sorunu yaşıyorum. Maalesef sxTed soruyu bana cevaplamadı. Çünkü bir işlem zamanını tanımlamak, her bir döviz çifti için emir miktarından farklı bir şeydir.

sxTed'in satırlarını değiştirmeye çalıştım ama sanırım bu sorunu çözmede çok başarısız oldum:

 string sCheck = "MyEA_" + Symbol ();       // already the first error in the code, second quotes should be at the end of the line.

//I would correct this one to:
string sCheck = "MyEA_ + Symbol()" ;           //However symbol() is not a function anymore ??


int start ()
{

// Closing Orders here


if (! GlobalVariableCheck (sCheck))                     //checking Globalvariable, GV available so it becomes true (independently of what kind of GV we have)...

GlobalVariableSet (sCheck, Symbol () );               //.. assigning a new GlobalVariable to the function of the current symbol the EA is attached on (does it actually work like this?)

if ( GlobalVariableGet (sCheck) == Symbol ()) {         // checking if our Symbol is the one which the EA is attached on --> becomes true...


// Order Criteria (Open trades here)

// What now? Actually i'm missing any kind of numbers or smth that limits the open orders per currency pair.

LÜTFEN: beni bu yerdeki herhangi bir literatürle ilişkilendirmeyin veya birini işe almamı söyleme, şu anda kitap okuyorum ve sıkışıp kaldım!!!

 
mqlfor :

Her döviz çifti için ayrı bir EA kullanıyorum.

Bir pozisyonun açılması gerekip gerekmediğini doğrulamak için "if (OrdersTotal<1)" açık emri olup olmadığını test ediyorum ama bu diğer tüm döviz çiftlerinin pozisyon açmasını engelleyecek ve fırsatları kaçırıyorum.

Başka bir deyişle: Her döviz çifti için sadece bir pozisyon açmak istiyorum = farklı döviz çiftlerinde birden fazla pozisyon mümkün olmalıdır.

"if (OrdersTotal<1)" yerine hangi kodu kullanmalıyım? Biri bana yardım edebilir mi? Yardımınız için şimdiden teşekkür ederim.


 int toplam=SiparişToplam();
int sayı = 0;
int magno = 12345;
for(int pos=0;pos<total;pos++) {
    if(OrderSelect(kon,SELECT_BY_POS) == false) devam et;
    (OrderMagicNumber() != magno) devam ederse;
    (OrderSymbol() != Symbol()) devam ederse;
    say++;
}
// Artık bu sembol için kaç siparişin bu EA tarafından açık olduğunu biliyorsunuz.
if (sayım < 1) {
// bir şeyler yap - belki açık sipariş
}
Bu yardımcı olur mu?
 
texto :

Bu yardımcı olur mu?
Sihirli numaraya ihtiyacınız yok. . . sadece sembolü kullan
 
texto :

Bu yardımcı olur mu?
 int total= OrdersTotal ();

TÜM döviz çiftlerinin toplam açık emirlerini sınırlar mı?

kodunuzu aşağıdaki gibi ekledim

 int total= OrdersTotal ();
int count = 0 ;
for ( int pos= 0 ;pos<total;pos++) 
{
     if ( OrderSelect (pos,SELECT_BY_POS) == false) continue ;
     if ( OrderSymbol () != Symbol ()) continue ;
    count++;
}

if (Sell_1_1 < Sell_1_2 && CloseSell1_1 > CloseSell1_2 && count < 1 ) Order = SIGNAL_SELL; // Trigger for Sell

if (Buy_1_1 > Buy_1_2 && CloseBuy1_1 < CloseBuy1_2 && count < 1 ) Order = SIGNAL_BUY;     // Trigger for Buy


if (order == SIGNAL_BUY)
{
OrderSend (...)
}   

ve hala sadece bir işlem açıyor. sxTed global değişkeniyle bize ne anlatmaya çalışıyordu?

 
grey.unit :

TÜM döviz çiftlerinin toplam açık emirlerini sınırlar mı?

kodunuzu aşağıdaki gibi ekledim

ve hala sadece bir işlem açıyor. sxTed global değişkeniyle bize ne anlatmaya çalışıyordu?

EA'nız kaç grafikte var?
 
RaptorUK :
EA'nız kaç grafikte var?
Kodu test etmek için 5 çizelge açtım ama N çizelgeleri açmak istiyorum. Miktar önemli olmayacak.
 
grey.unit :
Kodu test etmek için 5 çizelge açtım ama N çizelge açmak istiyorum. Miktar önemli olmayacak.
EA'nın diğer çiftlerde ne olup bittiğine bakmaksızın her çiftte bir işlem açacağından emin olmak için her bir çiftte kodunuzu tek tek test ettiniz mi? belki de EA'nız yalnızca bir işlem açmaktadır çünkü yalnızca belirli bir çiftte işlem açacaktır. . .
 
elbette yaptım. EURJPY'de açık bir işlemim olduğunda ve bunu manuel olarak kapattığımda, belki başka bir EA başka bir döviz çiftinde bir işlem açar.
 
mqlfor :

Her döviz çifti için ayrı bir EA kullanıyorum.

Bir pozisyonun açılması gerekip gerekmediğini doğrulamak için "if (OrdersTotal<1)" açık emri olup olmadığını test ediyorum ama bu diğer tüm döviz çiftlerinin pozisyon açmasını engelleyecek ve fırsatları kaçırıyorum.

Başka bir deyişle: Her döviz çifti için sadece bir pozisyon açmak istiyorum = farklı döviz çiftlerinde birden fazla pozisyon mümkün olmalıdır.

"if (OrdersTotal<1)" yerine hangi kodu kullanmalıyım? Biri bana yardım edebilir mi? Yardımınız için şimdiden teşekkür ederim.

Bunu şu şekilde kodlayın:

 int Total_Order = OrdersTotal ();
 for (pos = 0 ; pos <= Total_Order; pos ++)
      {
       if ( OrderSelect (pos, SELECT_BY_POS) == true)
        {
         if ( OrderSymbol () == Symbol ())
          {
           Print ( ":( Sorry already have that symbol opened " );
           // get outta here do something else
           break ;
          }
           else
          {
           Print ( "No order opened for this symbol" );
           Print ( "Let\'s call waitress and order some drink :)" );
           // do some order then break out and get out
          }
         }
       }