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

 
Tretyakov Rostyslav # :

anlaşılır bir şekilde. teşekkür etmek.

 
Порт-моне тв # :

teşekkür etmek! bu sorun ortadan kalktı. küçük bir iz bıraktı. her sipariş kapandığında (her şeyin her zaman olması gerekiyor!) ama bazen 3-4 sipariş açsam sadece 2 yada 1 tane kapanabiliyor.kapanış bu şekilde oluyor. özel bir i-th çekine değer gibi, bana söyleyebilir misin?

Parantezleri ihmal etmeyin, bunu deneyin

 //+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseBuyPositions1()
  {
   int pos= OrdersTotal ()- 1 ;
   for ( int i=pos; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderType()==OP_BUY)
           {
             if (OrderClose(OrderTicket(), OrderLots(), Bid, 0 , NULL ))
              {
               Print ( "Order Close" );
              }
           }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseSellPositions2()
  {
   int pos= OrdersTotal ()- 1 ;
   for ( int i=pos; i>= 0 ; i--)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
        {
         if (OrderType()==OP_SELL)
           {
             if (OrderClose(OrderTicket(), OrderLots(), Ask, 0 , NULL ))
              {
               Print ( "Order Close" );
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
[Silindi]  
2021.01.05 D' biçiminde ZZ uç noktaları nasıl elde edilir
Birkaç yıl içinde?
 
Vladimir Baskakov # :
2021.01.05 D' biçiminde ZZ uç noktaları nasıl elde edilir
Birkaç yıl içinde?
 if (ZZ[i]!= EMPTY_VALUE ) string iDate= TimeToString (time[i], TIME_DATE | TIME_MINUTES );
[Silindi]  
Tretyakov Rostyslav # :
Senaryo yok mu?
 
Vladimir Baskakov # :
Senaryo yok mu?
Değil
 
Herkese merhaba. Birisi danışmanı düzenlemeye yardımcı olabilir. EA'nın siparişleri kendisi açmaması, yalnızca manuel olarak açılan siparişlerle çalışması için sipariş açma işlevini kaldırmak gerekir. Şimdiden teşekkürler.
Dosyalar:
 
Vladimir Baskakov # :
Senaryo yok mu?

Bir zikzak alıyoruz ve genellikle 0'dan büyük değerler için OnCalculace'deki arabelleğini kontrol ediyoruz (bu, arabelleğin düşük veya yüksek bir ekstremum değeri içerdiği anlamına gelir). arabellek üzerinden döngü

 int OnCalculate ( const int rates_total,       // размер входных таймсерий 
                 const int prev_calculated,   // обработано баров на предыдущем вызове 
                 const datetime & time[],     // Time 
                 const double & open[],       // Open 
                 const double & high[],       // High 
                 const double & low[],         // Low 
                 const double & close[],       // Close 
                 const long & tick_volume[],   // Tick Volume 
                 const long & volume[],       // Real Volume 
                 const int & spread[]         // Spread 
) {
 // код зиг-зага
 ...
 if (prev_calculated > 0 ) // дальнейший код сработает только один раз
   return (rates_total);
 // обработка значений зиг-зага
 for ( int i = rates_total - 1 ; i >= 0 ; i--) {
   if (zigZag[i] > 0 ) { // найден экстремум
     // сохраняем time[i] в любую удобную форму для дальнейшей работы
   }
 }
 return (rates_total);
}

yukarıdaki döngü (sağdan sola) MQL5 içindir

MQL4 için döngü soldan sağa olacak

 for ( int i = 0 ; i < rates_total; i++)

Verilen örnekler ilk başta zamanında yeni değerler vermektedir. Önce en eski değerleri almak için ArraySetAsSeries kullanın veya döngü yineleme yönünü tersine değiştirin.

Veriler, iCustom, CopyTime veya iTime'ın yanı sıra iBar'lar (rate_total yerine) kullanılarak komut dosyasından elde edilebilir.

 
Tretyakov Rostyslav # :

muhtemelen bir şeyi yanlış anlıyorum

içine bir işlev eklersem

 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();
     } 
       DrawLABEL( "nextlot" , 1 , 5 , 0 ,Color1(), StringConcatenate ( "CURRENT LOT: " ,DoubleToStr(LOT(), 2 )));
       DrawLABEL( "currentlot" , 1 , 5 , 0 ,Color2(), StringConcatenate ( "NEXT LOT: " ,DoubleToStr(LOT(), 2 )));
        TrailingOrders();
  }

sonra durma ve sonsuz sayıda alma hareketinin anlık bir hareketi vardır.

eğer hiçbir yerdeyse TrailingOrders(); değiştirmeyin, o zaman hiçbir şey kaydırılmaz.

Kendime iz sürme değil, dur kalk hareketinin bir/iki katını yapmayı görev edindim.

Bugün bütün gün mantıklı gelene kadar hiçbir şey "icat ediyorum".

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

galiba bir şeyi doğru anlamadım

içine bir işlev eklersem

sonra durma ve sonsuz sayıda alma hareketinin anlık bir hareketi vardır.

eğer hiçbir yerdeyse TrailingOrders(); değiştirmeyin, o zaman hiçbir şey kaydırılmaz.

Kendime iz sürme değil, dur kalk hareketinin bir/iki katını yapmayı görev edindim.

Bugün bütün gün mantıklı gelene kadar hiçbir şey "icat ediyorum".

Fiyat TP yönünde giderse iz tetiklenmeli ve fiyat geri çekilirse hiçbir şey yapmamalıdır. Bu durumda, SL seviyesi sadece TP yönünde gitmeli ve geri dönmemelidir.