Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1283

 
Youri Lazurenko :


Tam kod yoksa, size yardımcı olamam. Lütfen tam kodu ekleyin (düğmeyi kullanarak ekleyin)   Dosya eki )

 
İşlev geçersizse OnTick(), şöyle görünür:
   if (currentTime >= OpenTrade && currentTime < CloseTrade)
   {
       if (SignalBuy1() || SignalBuy2())
      { 
         if (timeBarInside != iTime ( NULL , 0 , 1 ))
         {
            OpenOrderBuy();
            PositionModifiBuy();
            CandleColor(ColorCandleBuy);
            timeBarInside = iTime ( NULL , 0 , 1 );
         }
      }
      
       if (SignalSell1() || SignalSell2()) 
      {
         if (timeBarInside != iTime ( NULL , 0 , 1 ))
         {
            OpenOrderSell();
            PositionModifiSell();
            CandleColor(ColorCandleSell);
            timeBarInside = iTime ( NULL , 0 , 1 );
         }
      }  
   }
Tam kod ne anlama geliyor? Bütün danışman? Oldukça zahmetlidir ve işlevlerin geri kalanının değişiklikle hiçbir ilgisi yoktur. Anladığım kadarıyla pozisyon açarken hemen SL ve TP ayarlayabiliyorsunuz ama ben bu şekilde istiyorum, neden çalışmadığını şimdiden merak ediyorum. mql4'te bu iki parmak gibi yapılır... ama burada tam bir baş belası.
 

Ve bir trend çizgisi çizmeye geri dönelim. Eğer koda ihtiyacınız varsa.

 bool CreateLine( string name, datetime time1, double price1, datetime time2, double price2, color clr)
{
   ObjectDelete ( 0 , name);  
      
   if ( ObjectCreate ( 0 , name, OBJ_TREND , 0 , time1, price1, time2, price2))
   {
       ObjectSetInteger ( 0 , name, OBJPROP_COLOR , clr); 
       ObjectSetInteger ( 0 , name, OBJPROP_STYLE , TrendStyle); 
       ObjectSetInteger ( 0 , name, OBJPROP_WIDTH , TrendWidth); 
      
       ChartRedraw (); 
       Sleep ( 10 );
      
       return ( true );
   }
   else 
   {
       Print ( "Ошибка в создании линии" ); 
       return ( false );
   }
}
Dosyalar:
1.png  82 kb
2.png  36 kb
 
Youri Lazurenko :

Ve bir trend çizgisi çizmeye geri dönelim. Eğer koda ihtiyacınız varsa.

Belgeleri okuyun!!!

OBJ_TREND

Not

Bir eğilim çizgisi için, devamının sağa ve/veya sola doğru modunu belirtebilirsiniz (sırasıyla OBJPROP_RAY_RIGHT ve OBJPROP_RAY_LEFT özellikleri).

Bu özellikler varsayılan olarak false olarak ayarlanmıştır.

Ve soru şudur: Neden bir nesneyi silip yeniden yaratalım? Yalnızca böyle bir nesne grafikte bulunmazsa oluşturmak daha kolay değil mi? Ve bağlantı koordinatlarını değiştirmeniz gerekse bile, nesneyi silip yeniden oluşturmanıza gerek yoktur.

 
Youri Lazurenko :


Lütfen üçüncü ve son kez: tam kodu ekleyin.

 
Alexey Viktorov :

Belgeleri okuyun!!!

Bu özellikler varsayılan olarak false olarak ayarlanmıştır.

Ve soru şudur: Neden bir nesneyi silip yeniden yaratalım? Yalnızca böyle bir nesne grafikte bulunmazsa oluşturmak daha kolay değil mi? Ve bağlantı koordinatlarını değiştirmeniz gerekse bile, nesneyi silip yeniden oluşturmanıza gerek yoktur.

Teşekkürler, şimdi bir göz atacağım. Ve değerli yorumlar için teşekkürler. Ben bir programcı değilim, bu yüzden kendim için genellikle başka birinin çalışmasını kullanırım.

 
Vladimir Karputov :

Lütfen üçüncü ve son kez: tam kodu ekleyin.

Sorunu zaten çözdüm. Sembol değil Bilet üzerinden değişiklik yapıyorum. Tam kodun ne için olduğunu anlamıyorum, örneğin bir pozisyon açma koşulunun değişiklikle ne ilgisi var?

Ve şimdi böyle görünüyor, belki birileri işe yarar.

 void PositionModifiSell()
{
   int     i;
   ulong   ticket;
   double sl    = 0 ; 
   double tp    = 0 ;  
   int     total = PositionsTotal ();
   
   for (i = total- 1 ; i >= 0 ; i--)
   {
       if (m_position.SelectByIndex(i))                            
      {
         if (m_position. Symbol () == Symbol () && m_position.Magic() == Magic)
         {
             if (m_position.PositionType() == POSITION_TYPE_SELL )
            {               
               if (m_position.StopLoss() == 0 && m_position.TakeProfit() == 0 )
               {
                  ticket = m_position.Ticket();
                  
                  sl = NormalizeDouble ( iHigh ( NULL , 0 , ExtrimUp()) + VS* _Point , _Digits );
                   
                   if (PriceCurrentDw1() - PriceDwHigh() < LastPriceOpenOrder() - (sp+PW)* _Point )
                  {
                     tp = NormalizeDouble (PriceCurrentDw1() - PriceDwHigh(), _Digits );
                  }
                   else
                     tp = NormalizeDouble (bid - TP* _Point , _Digits );
                  }
                  
                   if (!m_trade.PositionModify(ticket, sl, tp))
                  {
                     Print ( "Метод PositionModify() потерпел поражение. Код возврата = " , m_trade.ResultRetcode(),
                           ". Описание кода: " , m_trade.ResultRetcodeDescription());
                  }
                   else
                  {
                     Print ( "Метод PositionModify() исполнен успешно. Код возврата = " , m_trade.ResultRetcode(),
                           " (" , m_trade.ResultRetcodeDescription(), ")" );
                  }
               }
            }
         }
      }
   }
}
 
Youri Lazurenko :


Yardımı inceleyin - biletle ve sembolle bir pozisyon seçmek arasındaki fark nedir. Hata yapmaktan kaçınmak için kullanışlıdır:

KonumSeçimi

 bool    PositionSelect (
   string   symbol     // имя инструмента
   );

Not

"Ağlama" pozisyon muhasebesi ile ( ACCOUNT_MARGIN_MODE_RETAIL_NETTING   ve   ACCOUNT_MARGIN_MODE_EXCHANGE ) her biri için   sembol   Herhangi bir zamanda yalnızca biri açık olabilir.   bir veya daha fazlasının sonucu olan bir pozisyon   işlemler . Pozisyonlar mevcut ile karıştırılmamalıdır   "Araçlar" panelindeki "Ticaret" sekmesinde de görüntülenen bekleyen emirler .

Pozisyonların bağımsız sunumu ile ( ACCOUNT_MARGIN_MODE_RETAIL_HEDGING ) her bir sembol için aynı anda birkaç pozisyon açılabilir . Bu durumda, PositionSelect en küçük bilete sahip pozisyonu seçecektir .

Документация по MQL5: Торговые функции / PositionSelect
Документация по MQL5: Торговые функции / PositionSelect
  • www.mql5.com
PositionSelect - Торговые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov :

Belgeleri okuyun!!!

Bu özellikler varsayılan olarak false olarak ayarlanmıştır.

Ve soru şudur: Neden bir nesneyi silip yeniden yaratalım? Yalnızca böyle bir nesne grafikte bulunmazsa oluşturmak daha kolay değil mi? Ve bağlantı koordinatlarını değiştirmeniz gerekse bile, nesneyi silip yeniden oluşturmanıza gerek yoktur.

Tekrar teşekkürler, şimdi çizgi bir çizgi gibi, görmek güzel. Bu sadece ObjectDelete (0, isim); gereklidir, aksi takdirde çizilen çizgi yeniden çizilmez. Ayrıca mql4'te unuttum.

 
Youri Lazurenko :

Tekrar teşekkürler, şimdi çizgi bir çizgi gibi, görmek güzel. Bu sadece ObjectDelete (0, isim); gereklidir, aksi takdirde bir kez çizilen çizgi yeniden çizilmez . Ayrıca mql4'te unuttum.

Ne saçmalık. Çizilen grafik nesnesi sessizce hareket eder. Her nesne için yardımda bir örnek verilmiştir (yatay çizgi OBJ_HLINE için).

Ayrıca önceden çizilmiş bir nesnenin herhangi bir özelliğini de değiştirebilirsiniz: renk, stil, koku ...
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_HLINE
  • www.mql5.com
OBJ_HLINE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5