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

 
законопослушный гражданин # :

yapılmış. kesinlikle önceki dergiden farklı değil.

hata veya herhangi bir şey yok.

hata olmamalı, günlüğü göster
 
for ( int i = 0 ; i <= OrdersTotal (); i++)
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
             return ( false );

Ve burada bir döngü için parantez gerekli değil mi? Görünüşe göre sadece birden fazla satır olmadığında onları koyamazsınız.

UPD:
Ve anlıyorum, burada bir satır var.

 
MakarFX # :
hata olmamalı, günlüğü göster

işte MT4 günlüğünün son sayfaları.

Bu dergiye ihtiyacın var mı?

Dosyalar:
0w11cw.txt  30 kb
 
Ah özür dilerim. Karışık karşılaştırma ve atama. Her şey normalleşti. Sanki oturuyormuşum gibi tamamen aptallaşıyorum. Kötü yazıyorum ve bundan stres alıyorum ve elbette bilmeme rağmen kafam hiç çalışmıyor.
 
законопослушный гражданин # :

işte MT4 günlüğünün son sayfaları.

Bu dergiye ihtiyacın var mı?

İşte günlüğünüzdeki cevap)

Bir sipariş açtıktan sonra bCheckOrders() işlevi, sipariş olmadığını gösterir, bu nedenle açılışlar devam eder.

 
pribludilsa # :
ve elbette bilmeme rağmen kafa hiç çalışmıyor.

Güzel düşünceler ifade ediyorsun)))

 
MakarFX # :

Güzel düşünceler ifade ediyorsun)))

Yani ödev ve karşılaştırma yazmayı biliyordum ama yine de kafam karıştı. Kafam karıştı.
 
pribludilsa # :
Yani ödev ve karşılaştırma yazmayı biliyordum ama yine de kafam karıştı. Kafam karıştı.

Bundan bahsetmiyorum...

pribludilsa # :
ve kafa hiç çalışmıyor , elbette bunu biliyordum .

 
MakarFX # :

İşte günlüğünüzdeki cevap)

Bir sipariş açtıktan sonra bCheckOrders() işlevi, sipariş olmadığını gösterir, bu nedenle açılışlar devam eder.

kahretsin. nerede belirtilir?

Belki bu dergiyi yanlış okuyorum?

İşlev   bKontrolSiparişleri()   bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.

sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?

 
законопослушный гражданин # :

kahretsin. nerede belirtilir?

Belki bu dergiyi yanlış okuyorum?

İşlev   bKontrolSiparişleri()   bir emir açtıktan sonra, emir olmadığını gösteriyor, bu yüzden açılışlar devam ediyor - void OnTick() tarafından - Bunun böyle olmadığını anlıyorum.

sipariş kapanana kadar bCheckOrders()- sipariş olmadığını söyleyemez. değil mi?

bCheckOrders() düzgün çalışmıyor!

Sana zaten emirleri saymak için bir fonksiyon yazdım...

Bunu yapın ve her şey işe yaramalı.

bCheckOrders() öğesini bu işlevle değiştirin

 //+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountOrders() 
  {
   int cnt= 0 ;
   int i= OrdersTotal ()- 1 ;
   for ( int pos=i;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderMagicNumber()==Magic) cnt++;
           }
        }
     }
   return (cnt);
  }

ve OnTick() içinde bCheckOrders() yerine şöyle yazın

 //+------------------------------------------------------------------+
void OnTick ()
  {
// Получим значение индикатора
   dMA = iMA ( Symbol (), 0 ,PeriodMA, MovingShift, MODE_SMA , PRICE_CLOSE , 0 ); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
   if (CountOrders()== 0 )
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
       if (bSignalBuy() == true )
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
       if (bSignalSell() == true )
         vOrderOpenSell();
     }
// Проверяем, вышел ли текущий баланс по открытому ордеру за вилку из внешних переменных CountLoss и CountProfit

   if (GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*- 1 )
     {
// Если да, то закроем ордер по текущей цене, не дожидаясь стопа или тейка
      CloseOrder();
     }
DrawLABEL( "lab_Take" , 1 , 5 , 0 ,Color(GetProfitFromStart()> 0 ,Lime,Red), StringConcatenate ( "Profit: " ,DoubleToStr(GetProfitFromStart(), 2 ),AC));
  }