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

 
Alexey Belyakov :


Bu seçenek de çalışmadı.

Kuzu kilometre kodlarını neden sever...

Değişkenlerin beyanı dikkate alınarak probleminiz ALTI kod satırında çözülmüştür.

 /************************Expert tick function************************/
void OnTick ()
 {
   bool signal = true ;
   datetime timeBar = iTime ( _Symbol , PERIOD_CURRENT , 0 );// период можно поставить по своему усмотрению
   datetime static timeOpen = 0 ;
   if (timeBar > timeOpen)
   {
     if (signal)
     {
       // открыть позицию
      timeOpen = timeBar;
     }
   }
 } /******************************************************************/

Umarım sinyal değişkenini anlamışsınızdır.

 

Ö! Kazanıldı! Fikirler için teşekkürler çocuklar!

Gerçeğin biraz podşamanit olması gerekiyordu. Hatta (doğru) olmadan daha da kolay çıktı. Doğru, bu kurnazca kafa karıştırıcı MQL mantığını açıklayamam.)

Bu şekilde uygulandı:

 datetime timeBar = iTime ( _Symbol , PERIOD_CURRENT , 0 ); // период можно поставить по своему усмотрению
datetime static timeOpen = 0 ;

if (( PositionsTotal ()== 0 )&&(c0>h1)&&(rGENUP> 0.30 )&&(timeBar > timeOpen))     // Условие для открытия позиции.
     {
       MqlTradeRequest request;
       MqlTradeResult   result;
      request.action   = TRADE_ACTION_DEAL ;                         // тип торговой операции
      request.symbol   = Symbol ();                                 // символ
      request.volume   = 1 ;                                       // объем в 1 лот
      request.type     = ORDER_TYPE_BUY ;                         // тип ордера
      request.price    = SymbolInfoDouble ( Symbol (), SYMBOL_ASK ); // цена для открытия
      request.deviation= 3 ;
      request.sl    = NormalizeDouble (Ask- 50 * _Point , _Digits );
      request.tp    = NormalizeDouble (Ask+ 50 * _Point , _Digits );    

       if (! OrderSend (request,result))
         PrintFormat ( "OrderSend error %d" , GetLastError ());     // если отправить запрос не удалось, вывести код ошибки
       //--- информация об операции
       PrintFormat ( "retcode=%u  deal=%I64u  order=%I64u" ,result.retcode,result.deal,result.order);
       // допустимое отклонение от цены
timeOpen = timeBar;
}
MQL5'te bir pozisyon açmak için neden bu kadar büyük bir kod olduğunu merak ediyorum. MQL4'ün aksine. 4-ke'de sadece bir satır var. Tam orada... Kısaltılabilir mi? Örneğin, hata işleyici kaldırılsın mı?


Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Alexey Belyakov :

Ö! Kazanıldı! Fikirler için teşekkürler çocuklar!

Gerçeğin biraz podşamanit olması gerekiyordu. Hatta (doğru) olmadan daha da kolay çıktı. Doğru, bu kurnazca kafa karıştırıcı MQL mantığını açıklayamam.)

Bu şekilde uygulandı:

MQL5'te bir pozisyon açmak için neden bu kadar büyük bir kod olduğunu merak ediyorum. MQL4'ün aksine. 4-ke'de sadece bir satır var. Tam orada... Kısaltılabilir mi? Örneğin, hata işleyici kaldırılsın mı?


Ticaret sınıflarını kullanın. Ve kod çok kısa olacak.

Misal:

 //+------------------------------------------------------------------+
//|                                            Only_one_purchase.mq5 |
//+------------------------------------------------------------------+
#property version    "1.003"
#property script_show_inputs
#include <Trade\Trade.mqh>
CTrade         m_trade;           // trading object
//--- input parameters
input ENUM_POSITION_TYPE    InpPositionType   = POSITION_TYPE_BUY ; // Position Type
input double                InpVolume         = 0.0 ;               // Volume
input ulong                 m_magic           = 15489 ;             // magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   m_trade.SetExpertMagicNumber(m_magic);
//--- open a position
   if (InpPositionType== POSITION_TYPE_BUY )
      m_trade.Buy(InpVolume);
   else
      m_trade.Sell(InpVolume);
  }
//+------------------------------------------------------------------+
 
Alexey Belyakov :

Ö! Kazanıldı! Fikirler için teşekkürler çocuklar!

Gerçeğin biraz podşamanit olması gerekiyordu. Hatta (doğru) olmadan daha da kolay çıktı. Doğru, bu kurnazca kafa karıştırıcı MQL mantığını açıklayamam.)

Bu şekilde uygulandı:

MQL5'te bir pozisyon açmak için neden bu kadar büyük bir kod olduğunu merak ediyorum. MQL4'ün aksine. 4-ke'de sadece bir satır var. Tam orada... Kısaltılabilir mi? Örneğin, hata işleyici kaldırılsın mı?


yani bir şartın varsa

 if (( PositionsTotal ()== 0 )&&

o zaman neden yeni bir bar için bile kontrol? Yoksa aynı barda pozisyonun kapatılacağı ve ikinci açılışın yasaklanması gibi bir seçenek var mı?

 
Alexey Belyakov :

Ö! Kazanıldı! Fikirler için teşekkürler çocuklar!

Gerçeğin biraz podşamanit olması gerekiyordu. Hatta (doğru) olmadan daha da kolay çıktı. Doğru, bu kurnazca kafa karıştırıcı MQL mantığını açıklayamam.)

Bu şekilde uygulandı:

MQL5'te bir pozisyon açmak için neden bu kadar büyük bir kod olduğunu merak ediyorum. MQL4'ün aksine. 4-ke'de sadece bir satır var. Tam orada... Kısaltılabilir mi? Örneğin, hata işleyici kaldırılsın mı?


Bilirsiniz, bir zamanlar, MQL4 varken, insanlar öfkeyle kendilerine daha düşük seviyeli erişim verilmediğini söylerlerdi - böylece kendi yollarıyla bir şeyler yapabilirlerdi.

Eh, verildi - şimdi MQL4'teki OrderSend() bileşenlerine erişim verildi - tabiri caizse, MQL'de konuşlandırılmış mantığı - istediğinizi yapın. Yani hayır - şimdi çok zor olan tedirginlikler.

Karmaşık? Sorun değil - işte SB'deki ticaret sınıfları - pratik olarak MQL4 standart ticaret işlevlerinde olduğu gibi.
MQL4'te bu tür sınıfların ticaret fonksiyonları olduğunu düşünün. Ve MQL5'te her şey açık erişimdir.

Zevk almak.

 
Artyom Trishkin :

Bilirsiniz, bir zamanlar, MQL4 varken, insanlar öfkeyle kendilerine daha düşük seviyeli erişim verilmediğini söylerlerdi - böylece kendi yollarıyla bir şeyler yapabilirlerdi.

Eh, verildi - şimdi MQL4'teki OrderSend() bileşenlerine erişim verildi - tabiri caizse, MQL'de konuşlandırılmış mantığı - istediğinizi yapın. Yani hayır - şimdi çok zor olan tedirginlikler.

Karmaşık? Sorun değil - işte SB'deki ticaret sınıfları - pratik olarak MQL4 standart ticaret işlevlerinde olduğu gibi.
MQL4'te bu tür sınıfların ticaret fonksiyonları olduğunu düşünün. Ve MQL5'te her şey açık erişimdir.

Zevk almak.

Doçent, Doçent. Neden bu kadar kızgınsın (bugün) ©

 
Alexey Viktorov :

Doçent, Doçent. Neden bu kadar kızgınsın (bugün) ©

Gelelim deliğe...

 
Alexey Viktorov :

yani bir şartın varsa

o zaman neden yeni bir barı kontrol ettin? Yoksa aynı barda pozisyonun kapatılacağı ve ikinci açılışın yasaklanması gibi bir seçenek var mı?

Kesinlikle doğru - pozisyonun aynı çubukta kapatılacağı seçeneği var.

 

Yeni bir duvara çarptı. ) "Duvar" denir - başabaş.

MQL4'te şöyle uyguladım:

(bir yerden sökmüştüm hatırlamıyorum)

 int BULevel= 30 ;

   for ( int i= 0 ; i< OrdersTotal (); i++) 
      {
       if ( OrderSelect (i, SELECT_BY_POS))
        {      
         if (OrderType()==OP_BUY) 
          {
           if (OrderOpenPrice()<=(Bid-BULevel* Point )&&OrderOpenPrice()>OrderStopLoss())
            {      
             int p=OrderModify(OrderTicket(),OrderOpenPrice(),Bid- 50 * Point ,OrderTakeProfit(), 0 ,Green);
            }
           }       
 
         if (OrderType() == OP_SELL) 
           {
             if (OrderOpenPrice()>=(Ask+BULevel* Point )&&OrderOpenPrice()<OrderStopLoss()) 
             {
              p=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ 50 * Point ,OrderTakeProfit(), 0 ,Red);
             }
           } 
         }
       }

//------------------------------------------------------------------+

Ama 5'te. Nasıl?

Ticaret derslerine baktım, hiçbir yere dikilmemiş gibi görünüyor. Ve gerekli bir şey. profesyoneller ne diyorsun

 

Diğer grafiklerdeki işlemlerin grafikte görüntülenmesini nasıl önleyebilirim?

Sadece bu çizelgedeki robotun fırsatları.