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

 
artem artem # :

MakarFX Teşekkürler! Şimdi bu ilk emir sinyal olmadan gereksiz değil, ama şimdi bir nedenden dolayı ilk sinyal emrinde (normal) giriş 2 mum önce yapılır))) Ve sonra her şey yolunda, diğer emirlerde doğru anda giriyor ) Test cihazından mesaja ekran ekledim ama bu ilk siparişe rağmen - en önemli şey yapılmış, tekrar çok teşekkür ederim) Sihirbazlarla anladım, sonra harici bir değişken yapacağım ve eklediğimde Bir döviz çiftinin belirli bir grafiğine uzman, her çiftin numarasını ayrı ayrı değiştireceğim.

Açılışa bir bakayım.

Karakter kontrol ediliyorsa sihrin değiştirilmesine gerek yoktur.

 
Nerd Trader # :

zaten unuttum... ama en başta öyle yaptım (işte bu iyi oldu), ama koşuldan gelen yöntem güvenilmez görünüyordu, değişen sırayı belirtmek için daha açık bir şey istedim.

bu nedenle, yine de her yeni onaydaki koşulları kontrol etmeniz gerekir, önceki onayda çalışmadıysa, yenisinde değişecektir.

Peki, hata işleme yapmanız gerekir.

 
Nerd Trader # :

zaten unuttum... ama en başta öyle yaptım (işte bu iyi oldu), ama koşuldan gelen yöntem güvenilmez görünüyordu , değişen sırayı belirtmek için daha açık bir şey istedim.

 //+------------------------------------------------------------------+
if (OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderTakeProfit(), 0 ))
   ObjectCreate ( 0 ,OrderTicket(), OBJ_ARROW_UP , 0 ,Time[ 0 ],Bid);
//+------------------------------------------------------------------+
int NameObject()
  {
   int ticket=- 1 ;
   for ( int i= 0 ;i< ObjectsTotal ();i++)
     {
      ticket= StringToInteger ( ObjectName ( 0 ,i, 0 ));
     }
   return (ticket);
  }
//+----------------------------------------------------------------------------+
void GetTicketOrder()
  {
   int result=- 1 ;
   for ( int cnt = OrdersTotal () - 1 ; cnt >= 0 ; cnt--) 
     {
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)) 
        {
         if (OrderSymbol() == Symbol () && OrderMagicNumber() == Magic)
           {
             if (OrderType() == OP_BUY || OrderType() == OP_SELL)
              {
               if (OrderTicket() == NameObject())
                  {
                     делай все что хочешь
                  }
              }
           }
        }
     }
  }
 
EVGENII SHELIPOV Mevduat para biriminde siparişler tablosu sıfır artı Kar'a eşit olduktan sonra, tüm siparişler tablosu kapatılır.

Kodu değiştirmeme yardım et, böylece Kâr yerine puanlar olacak. Teşekkür ederim.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в пунктах          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetProfitOpenPosInPoint( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double p;
   int     i, k= OrdersTotal (), pr= 0 ;

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if ((OrderSymbol()==sy || sy== "" ) && (op< 0 || OrderType()==op)) {
         if (mn< 0 || OrderMagicNumber()==mn) {
          p=MarketInfo(OrderSymbol(), MODE_POINT);
           if (p== 0 ) if ( StringFind (OrderSymbol(), "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
           if (OrderType()==OP_BUY) {
            pr+=(MarketInfo(OrderSymbol(), MODE_BID)-OrderOpenPrice())/p;
          }
           if (OrderType()==OP_SELL) {
            pr+=(OrderOpenPrice()-MarketInfo(OrderSymbol(), MODE_ASK))/p;
          }
        }
      }
    }
  }
   return (pr);
}
 
artem artem # :

MakarFX Teşekkürler! Şimdi bu ilk emir sinyal olmadan gereksiz değil, ama şimdi bir nedenden dolayı ilk sinyal emrinde (normal) giriş 2 mum önce yapılır))) Ve sonra her şey yolunda, diğer emirlerde doğru anda giriyor ) Test cihazından mesaja ekran ekledim ama bu ilk siparişe rağmen - en önemli şey yapılmış, tekrar çok teşekkür ederim) Sihirbazlarla anladım, sonra harici bir değişken yapacağım ve eklediğimde Bir döviz çiftinin belirli bir grafiğine uzman, her çiftin numarasını ayrı ayrı değiştireceğim.

Hangi periyotta test ettiniz ve kaç onay aldınız?
 
MakarFX # :

Makar anladığım kadarıyla CalculiteProfit() işlevi yerine bu denenmeli

 
EVGENII SHELIPOV # :

Makar anladığım kadarıyla CalculiteProfit() işlevi yerine bu denenmeli

Evet

ve değiştir

 int op = GetProfitOpenPosInPoint( "" , - 1 , Magic ); 
 
MakarFX # :
Hangi periyotta test ettiniz ve kaç onay aldınız?

MakarFX , eklediğim ekranda EUR \ USD - M 30 - tüm keneler - 01/08/21 - 09/03/21 arasında test edildi. - 26 sipariş vardı ( AMA sabiti 4'ten 8'e değiştirdim, daha fazla sayıda muma bakmaya karar verdim)

Sabit 4 muma döndürülürse, aynı süre için - o zaman 35 sipariş, ancak orada da ilk siparişte 2'ye daha erken girer

 
MakarFX # :

Evet

ve değiştir

Makar bana yalnızca minimum ve maksimum sıranın kullanılabileceğini söyle?

 
EVGENII SHELIPOV # :

Makar bana yalnızca minimum ve maksimum sıranın kullanılabileceğini söyle?

Biletler veya fiyat için "min ve max" mı demek istiyorsunuz?