[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 42

 
sting-igor :
ve DC'nin işlem sayısı üzerinde kısıtlamaları var mı?

Bazılarının yalnızca işlem sayısında bir sınırı yoktur, aynı zamanda istek sayısında da bir sınır vardır.

ÇOK yaratıcılar! :-))

 
Tünaydın!
En son siparişlerin açılmasıyla ilgili bir soru sorduğumda, şimdi soru kapanmalarıyla ilgili)
Aşağıda emirleri açan bir kod parçası ve emirleri kapatan fonksiyonlar bulunmaktadır.
Uzmanın çalışmasında böyle bir "özellik" elde edilir, örneğin 10 farklı emir açılır, 2 tanesi işlemde kapanır,

ve geri kalanı testin sonuna kadar askıda kalır, ancak duruma göre bir işlem açıldığında diğerinin kapatılması gerekir.

........................
magick= MathRand (); 
     
     if (NewBar())
 {     

   //---- Условие SELL
if (MAarrUP1[j]> 0.35 && MAarrUP2[j]> 1.8 )
     {
 closeDnOrd(); OrderSend ( Symbol (),OP_SELL, 0.1 ,Bid, 3 , 0 , 0 , 0 ,magick, 0 , Blue );
     } 
  
   //---- Условие BUY
     if (MAarrDN1[j]<- 0.35 && MAarrDN2[j]<- 1.8 )
    {
closeUpOrd(); OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 3 , 0 , 0 , 0 ,magick, 0 , Red );
     }
}
............
//--------------------------------------------------------- Функции

//----- Функция закрытия селл

void closeUpOrd()
  {
   for ( int i= 0 ;i<= OrdersTotal ();i++)
      {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderMagicNumber ()!=magick || OrderSymbol ()!= Symbol ()) continue ;

   if ( OrderType ()==OP_SELL)
{
OrderClose ( OrderTicket (), OrderLots (),Ask, 3 , CLR_NONE );
}
      } 
    }

//---- Функция закрытия бая

void closeDnOrd()
  {
   for ( int i= 0 ;i<= OrdersTotal ();i++)
      {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false)         break ;
       if ( OrderMagicNumber ()!=magick || OrderSymbol ()!= Symbol ()) continue ;

 if ( OrderType ()==OP_BUY)
{
 OrderClose ( OrderTicket (), OrderLots (),Bid, 3 , CLR_NONE );
}
      } 
  }

Ve OrderClose() kullanırken 4051 ve 134 hataları hakkında başka bir soru, bunlar ne anlama geliyor? Günlükten kopyalanan bilgiler.

 02 : 54 : 37 2010.10 . 17 23 : 16   Ti&Pi_Speeder_Exp AUDUSD,M1: invalid ticket for OrderModify function
02 : 54 : 37 2010.10 . 17 23 : 16   Ti&Pi_Speeder_Exp AUDUSD,M1: OrderModify error 4051


02 : 54 : 37 2010.10 . 17 23 : 22   Ti&Pi_Speeder_Exp AUDUSD,M1: OrderSend error 134

 
Vinin :

Görünüşe göre son seçenek az çok çalışmaya başladı. Hesaplamaları basitleştirmek mümkün olsa da
Bana neden ayrı bir döngüde iMAOnArray işlevine sahip olduğunu söyle?
 

Lütfen bana söyle! Belirli bir fiyata ulaşıldığında, bekleyen iki emri aynı sihirle, ancak farklı lotla nasıl kapatabilirim.


int başlangıç()

{
çift MyLastBullOpenPrice=0;
for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
{
OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==12345 && OrderType()==OP_BUY)
{
MyLastBullOpenPrice=OrderOpenPrice();
double Cena=OrderOpenPrice()+5*Puan;
double Toplam fiyat= Teklif;

if (Totalcena>Cena)
{
if (Sipariş Toplamı()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if(OrderMagicNumber()==12345)

{ if (OrderDelete(OrderTicket())==true)
{
Print("Hata = ",GetLastError()); dönüş(0);
}
} } } } }
}
}

dönüş(MyLastBullOpenPrice);
}

 
Fox_RM :
Tünaydın!
En son siparişlerin açılmasıyla ilgili bir soru sorduğumda, şimdi soru kapanmalarıyla ilgili)
Aşağıda, siparişleri açan ve siparişleri kapatan işlevlere sahip bir kod parçası bulunmaktadır.
Uzmanın çalışmasında böyle bir "özellik" elde edilir, örneğin 10 farklı emir açılır, 2 tanesi işlemde kapanır,

ve geri kalanı testin sonuna kadar askıda kalır, ancak duruma göre bir işlem açıldığında diğerinin kapatılması gerekir.

Ve OrderClose() kullanırken 4051 ve 134 hataları hakkında başka bir soru, bunlar ne anlama geliyor? Günlükten kopyalanan bilgiler.

134 - denyuh yok, 4051 - fonksiyona boktan parametreler iletildi.

Özünde, magick değişkeninin yalnızca bir kez, tercihen init() işlevinde atandığını kontrol edin, aksi takdirde her siparişin kendi magick'i olacaktır ve sonuç, yaklaşık olarak sizin dediğiniz gibi olacaktır.

 

Lütfen diziler aracılığıyla bir dizideki karakterleri değiştirmek için bir işlev eklemeye (veya yazmaya) yardım edin.

İki karakter dizimiz var:

string sembolleri1 [] = {"a","b","c","d"};
string sembolleri2[] = {"1","2","3","4"};


Dizilere dayalı olarak badc metnini 2143 ile değiştirecek bir fonksiyon yazmaya çalıştım, sonuç şöyle oldu:

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

Bunun doğru olmadığını biliyorum ve diziyi hiç bir şekilde bir dizgede toplayamıyorum. Lütfen yardım et.

 
Zhunko :

Bazılarının yalnızca işlem sayısında bir sınırı yoktur, hatta istek sayısında da bir sınır vardır.

ÇOK yaratıcılar! :-))

işlerinize karışmalarının önünde bir engel var mı?
 
Lians :

Lütfen diziler aracılığıyla bir dizideki karakterleri değiştirmek için bir işlev eklemeye (veya yazmaya) yardım edin.

İki karakter dizimiz var:

string sembolleri1[] = {"a","b","c","d"};
string sembolleri2[] = {"1","2","3","4"};


Dizilere dayalı olarak badc metnini 2143 ile değiştirecek bir fonksiyon yazmaya çalıştım, sonuç şöyle oldu:

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

Bunun doğru olmadığını biliyorum ve diziyi hiç bir şekilde bir dizgede toplayamıyorum. Lütfen yardım et.

teoride, karakterin dizinini değiştirme dizisinde buldunuz, öyleyse neden başka bir dizi yaratıyorsunuz?

alınan verileri ilk döngüde normal bir metin değişkenine eklemeyi deneyin:

string ReplaceSymbolsInStr(dize metni)

{


string sembolleri1[] = {"a","b","c","d"};

string sembolleri2[] = {"1","2","3","4"};

stringtextNew="";

int textLen = StringLen(metin);

için (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr (metin,i1,1);

için (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol) { textNew = metinYeni + semboller2[ i2 ] ; i2=ArraySize(semboller1) ; }

}

}

dönüş(metinYeni);

}

 


ve bunun gibi daha da kolay:

string ReplaceSymbolsInStr(dize metni)

{


string sembolleri1[4] = {"a","b","c","d"}; // içindeki karakter sayısına göre dizinin boyutu

stringtextNew="";

için (int i1=0; i1< StringLen(metin) ; i1++)

{
string OneSymbol = StringSubstr(metin,i1,1);

için (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol)

{

metinYeni = metinYeni + ( i2+1) ; // döndürülen metne karakterin numarası ONE'dan sayılarak eklendi

i2=ArraySize(semboller1) ; // arama döngüsünü sonlandırdık

}

}

}

dönüş(metinYeni);

}

 

Tünaydın!

Danışmanda csv formatındaki verilerin e-postaya otomatik olarak gönderilmesini nasıl organize edeceğimi söyleyin (veya bir örneğe bağlantı verin)?

Teşekkür ederim.