MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 71

 
trader781 :

tamam hadi yapalım

for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
         && ( OrderMagicNumber ()==Magic) && ( OrderType ()< 2 ))
         orders[count1].Ticket= OrderTicket ();
         orders[count1].lot= OrderLots ();
         orders[count1].orderopenprice= OrderOpenPrice ();
         orders[count1].ordertype= OrderType ();
         orders[count1].profit= OrderProfit ();
         orders[count1].stoploss= OrderStopLoss ();
         count1++;
     }

Sağ?

Kıvrımlı parantezler hala gereklidir, aksi takdirde yalnızca if () den sonraki ilk satır çalışır. Ya ihtiyacınız olmayan yerlerde çok sayıda paranteziniz var ya da ihtiyacınız olan yerde yok. Bu, programın mantığını bazen çok güçlü bir şekilde ihlal eder. Ve sayacın küresel olması gerekmiyor, ama o kadar da önemli değil.

for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol ()
         && O rderMagicNumber ()==Magic && OrderType ()< 2 )
         {
         orders[count1].Ticket= OrderTicket ();
         orders[count1].lot= OrderLots ();
         orders[count1].orderopenprice= OrderOpenPrice ();
         orders[count1].ordertype= OrderType ();
         orders[count1].profit= OrderProfit ();
         orders[count1].stoploss= OrderStopLoss ();
         count1++;
         }
}
 
sile :
Durumu not edin: Hesaptaki ücretsiz fon miktarı yatırılan tutarın %50'sinden azsa, {action} MT5

Hangi mevduattan? Öncelik? Yoksa mevcut bakiyeden mi?

Bakiye ile karşılaştırıldığında, o zaman:

if ( AccountInfoDouble( ACCOUNT_MARGIN_FREE )/ AccountInfoDouble ( ACCOUNT_BALANCE )<0.5) {действие}
 
Vitalie Postolache :


yani o istedi mt5 gibi

ve benimki hakkında, ortaya çıktığı gibi bir şeyler yazın, sayacı ontik'in en başına koyabilir ve sonra onunla çalışabilirsiniz.

şimdi benim durumumda oradan bir şey nasıl çıkarılır?

ve hatta dizi iki boyutlu veya daha fazlaysa (yazma ve almada farklılıklar vardır)

bana biraz bu anı anlatır mısın?
 
trader781 :

tamam hadi yapalım

struct myorder
{
int     Ticket;
double orderopenprice;
int    ordertype;
double profit;
double stoploss;
double   lot;
};

myorder orders[];

int i;
int count1= 0 ;
void CalcOrders()
{
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
         && ( OrderMagicNumber ()==Magic) && ( OrderType ()< 2 ))
         orders[count1].Ticket= OrderTicket ();
         orders[count1].lot= OrderLots ();
         orders[count1].orderopenprice= OrderOpenPrice ();
         orders[count1].ordertype= OrderType ();
         orders[count1].profit= OrderProfit ();
         orders[count1].stoploss= OrderStopLoss ();
         count1++;
     }
}    


Sağ?

Hayır, doğru değil.

Siparişleriniz[] dizisinin değeri sıfır. Verileri nereye yazacaksınız? Sıfır boyutlu bir dizide mi? Çalışmayacak. Dizinin boyutunu say1 + 1 değeri kadar artırmak gerekir - bu, diziye yazıldıktan sonra sayacın artmasıdır. Genellikle sayaç yazmadan önce bir artırılır, ardından dizinin boyutu sayacın boyutu kadar artırılır ve ardından değerleri [count1-1] dizinine yazarsınız. Ve yukarıda doğru bir şekilde belirttiğiniz gibi, koşulları kontrol ettikten sonra, diğer tüm eylemleri kaşlı ayraçlar içine almanız gerekir.

Neden temel bilgi ve fikirlerden bu kadar yoksun, bir şeyler yapmaya çalışıyorsunuz? Sadece "iyi şanslar" mı?

 
Merhaba. Bu göstergenin TF'sini değiştirmeye izin verecek herhangi bir göstergenin açıklamasının sonuna eklenebilecek evrensel bir kod var mı (yani M5 üzerinde M1'e bakın)?
 
Artyom Trishkin :

Hayır, doğru değil.

Siparişleriniz[] dizisi boş. Verileri nereye yazacaksınız? Sıfır boyutlu bir dizide mi? Çalışmayacak. Dizinin boyutunu say1 + 1 değeri kadar artırmak gerekir - bu, diziye yazıldıktan sonra sayacın artmasıdır. Genellikle sayaç yazmadan önce bir artırılır, ardından dizinin boyutu sayacın boyutu kadar artırılır ve ardından değerleri [count1-1] dizinine yazarsınız. Ve yukarıda doğru bir şekilde belirttiğiniz gibi, koşulları kontrol ettikten sonra, diğer tüm eylemleri kaşlı ayraçlar içine almanız gerekir.

Neden temel bilgi ve fikirlerden bu kadar yoksun, bir şeyler yapmaya çalışıyorsunuz? Sadece "iyi şanslar" mı?

Çürük pisyunami ve çürük yumurtaları birinin materyali özümseme kabiliyetine atmayalım. Sorunumu çözme öneriniz, bir dizi yapı inşa etme yolundaydı. Ders kitaplarını açtım ve anlayabildiğim kadar perçinledim ve herkesin ne kadar doğru olduğunu görmesi için kodu buraya attım. Hemen mükemmel bir seçim yapacağımı düşünmüyorsun, değil mi?
 
trader781 :
Çürük pisyunami ve çürük yumurtaları birinin materyali özümseme kabiliyetine atmayalım. Sorunumu çözme öneriniz, bir dizi yapı inşa etme yolundaydı. Ders kitaplarını açtım ve anlayabildiğim kadar perçinledim ve herkesin ne kadar doğru olduğunu görmesi için kodu buraya attım. Hemen mükemmel bir seçim yapacağımı düşünmüyorsun, değil mi?
Böyle şiddetli fantezilerden sonra yardımdan çekilmem gerekiyor. Size son kez soruyorum: algoritmayı bir kağıda yazın, bir kalemle birkaç kez üzerinden geçin. Dizinin değerlerini ve boyutunu yazın - döngünün her yinelemesinde ne ve nereye yazılacak. Ve uygun olduğunu düşündüğünüz kod parçalarını aramayın.
Özellikle bir kişi gerçekten öğrenmek istemediğinde öğretmenin zor olduğunu anlayın.
 
Artyom Trishkin :
Böyle şiddetli fantezilerden sonra yardımdan çekilmem gerekiyor. Size son kez soruyorum: algoritmayı bir kağıda yazın, bir kalemle birkaç kez üzerinden geçin. Dizinin değerlerini ve boyutunu yazın - döngünün her yinelemesinde ne ve nereye yazılacak. Ve uygun olduğunu düşündüğünüz kod parçalarını aramayın.
Özellikle bir kişi gerçekten öğrenmek istemediğinde öğretmenin zor olduğunu anlayın.

Artyom, bu anlaşılabilir, ancak bu durumda da anlaşılabilirim. Mevcut sürümde hiçbir şey çalışmıyor ve olmayacak. Birkaç sayfa için, bu dizinin istenen öğesini çıkarmak için komutun kendisinin gerekli olduğu ve bu durum için özel olarak nasıl yazıldığı hakkında hiçbir fikrim olmadığı, örneğin 5. sıra için stop loss olduğu hakkında yazıyorum.

bir kalem ve bir yaprak hakkında - bot zaten bir aydır hazır ve herhangi bir enstrümanda mükemmel bir şekilde birleşiyor, sadece bir düzensiz ortalama dalı ekleyerek değiştirmek istiyorum.

 
trader781 :

Artyom, bu anlaşılabilir, ancak bu durumda da anlaşılabilirim. Mevcut sürümde hiçbir şey çalışmıyor ve olmayacak. Birkaç sayfa için, bu dizinin istenen öğesini çıkarmak için komutun kendisinin gerekli olduğu ve bu durum için özel olarak nasıl yazıldığı hakkında hiçbir fikrim olmadığı, örneğin 5. sıra için stop loss olduğu hakkında yazıyorum.

bir kalem ve bir yaprak hakkında - bot zaten bir aydır hazır ve herhangi bir enstrümanda mükemmel bir şekilde birleşiyor, sadece bir düzensiz ortalama dalı ekleyerek değiştirmek istiyorum.

Böyle bir komut yok. Kendin yapman gerekiyor. Onlar. - işlev.
 
Artyom Trishkin :
Böyle bir komut yok. Kendin yapman gerekiyor. Onlar. - işlev.

tamam, o zaman anladığım kadarıyla, istenenin geri dönüşüyle üç farklı özel işlev olacak (üç farklı parametre ararsanız)

DiziSıralama

sonrasında

ArrayBsearch istenilen numaraya göre

ve sonra buna ne dersin?

yani diziden yapı elemanına geçiş