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

 
Alexandr Sokolov :
Strateji test cihazında siparişin sona erme süresini nereden öğrenebilirim? Sütunlar sekmesinde değil.
Son kullanma süresini nasıl belirlersiniz?
 
MakarFX :
Son kullanma süresini nasıl belirlersiniz?
 void Open_Order( ENUM_ORDER_TYPE   Type,
                 double            price,
                 double            sl_price,
                 double            tp_price,
                 datetime          close )
  {
   
   MqlTradeRequest   request;
   MqlTradeResult    result;
   
   ZeroMemory (request);
   ZeroMemory (result);
   
   request.action        = TRADE_ACTION_PENDING ;
   request.magic         = id_number;
   request.symbol        = _Symbol ;
   request.volume        = volume;
   request.price         = price;
   request.sl            = sl_price;
   request.tp            = tp_price;
   request.deviation     = slippage;
   request.type          = Type;
   request.type_filling  = ORDER_FILLING_FOK ;
   request.type_time     = ORDER_TIME_SPECIFIED ;
   request.expiration    = close;
   
   if (! OrderSend (request,result)) Print ( "Error - " ,result.retcode);
   
  }


 
Alexandr Sokolov :


Siparişe yorum ekle, başka seçenek göremiyorum(
 
MakarFX :
Siparişe yorum ekle, başka seçenek göremiyorum(

teşekkürler

 
Forumdaki ilk yorumu ben yazıyorum, özellikle topluluğa aşina değilim, bu yüzden domatesleri çok sert atmayın. İşe. Uzman Danışmanımı yazma sürecinde, OrdersTotal()'ın tüm açık siparişler için (aslında mantıklı olan) çalıştığı gerçeğiyle karşılaştım ve "bir yakın-sonraki açıldı" için koşulların ayarlanması durumunda, şaşırdım. Koşullarda sihir ayarlarken ve kodu çoğaltırken bile - hesaptaki açık grafiklerde aynı anda iki veya daha fazla danışmanın birbirinin çalışmasına izin vermediğini (bir sipariş kapanana kadar ticaret yapın - diğeri açılır) bulun. Konuyla ilgili birçok yer aradım - birçok çözüm verildi ve anladığım kadarıyla bu, zayıflık-temel, ancak her durumda hiçbir şey yardımcı olmadı. OrdersTotal'ı yalnızca ekli belirli bir danışman için benzersiz hale getirmek ve diğerini (Sipariş Toplamı) hiçbir şekilde bağlanmayacak şekilde "if... (...)" açarken ve / veya kapatırken hangi koşulu ayarlamalıyım? ve tüm siparişlerin kendi sayısını tutmak. Teşekkür ederim.
 
Порт-моне тв :
Forumdaki ilk yorumu ben yazıyorum, özellikle topluluğa aşina değilim, bu yüzden domatesleri çok sert atmayın. İşe. Uzman Danışmanımı yazma sürecinde, OrdersTotal()'ın tüm açık siparişler için (aslında mantıklı olan) çalıştığı gerçeğiyle karşılaştım ve "bir yakın-sonraki açıldı" için koşulların ayarlanması durumunda, şaşırdım. Koşullarda sihir ayarlarken ve kodu çoğaltırken bile - hesaptaki açık grafiklerde aynı anda iki veya daha fazla danışmanın birbirinin çalışmasına izin vermediğini (bir sipariş kapanana kadar ticaret yapın - diğeri açılır) bulun. Konuyla ilgili birçok yer aradım - birçok çözüm verildi ve anladığım kadarıyla bu, zayıflık-temel, ancak her durumda hiçbir şey yardımcı olmadı. OrdersTotal'ı yalnızca ekli belirli bir danışman için benzersiz hale getirmek ve diğerini (Sipariş Toplamı) hiçbir şekilde bağlanmayacak şekilde "if... (...)" açarken ve/veya kapatırken hangi koşulu ayarlamalıyım? ve tüm siparişlerin kendi sayısını tut. Teşekkür ederim.

Kodunuzu eklersiniz ve size hataları gösterirler.

 
//+------------------------------------------- --------------------+
//| sova_2bars.mq4 |
//| Telif Hakkı 2020, MetaQuotes Yazılım A.Ş. |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+
#property telif hakkı "Copyright 2020, MetaQuotes Software Corp."
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı

harici int Sihir = 64777;
harici çift Parti = 0.01;
dış int kayma = 3;
harici int TakeProfit = 1600;
harici int StopLoss = 800;
harici intExperation = 0;

double Openone, //ilk mumun açılış fiyatı
Opentwo, //ikinci mumun açık fiyatı
Closeone, //ilk mumun fiyatını kapat
Closetwo, // ikinci mumun fiyatını kapat
Lowone, //ilk mumun en düşük fiyatı
Lowtwo, // ikinci mumun düşük fiyatı
Low Three, // üçüncü mumun minimum fiyatı
Open Three, // üçüncü mumun açık fiyatı
Kapatüç, //üçüncü mumun fiyatını kapat
CloseOrder, // siparişi kapat
Highone, //ilk mumun yüksek fiyatı
Hightwo, // ikinci mumun yüksek fiyatı
Yüksek üç, //ikinci mumun en yüksek fiyatı
Highfour, // ikinci mumun maksimum fiyatı
Highfive, // ikinci mumun maksimum fiyatı
Highsix, // ikinci mumun maksimum fiyatı
Highseven, // ikinci mumun maksimum fiyatı
Yükseklik, //ikinci mumun maksimum fiyatı
Lowfour, //dördüncü mumun düşük fiyatı
Lowfive, // beşinci mumun düşük fiyatı
Lowsix, // altıncı mumun minimum fiyatı
Lowseven, // yedinci mumun düşük fiyatı
Düşük, // sekizinci mumun en düşük fiyatı
Closefour, //dördüncü mumun fiyatını kapat
açık dörtlü,
düşük15,
düşük25,
SLbuy, TPbuy, SLsell, TPsell, //dördüncü mumun açık fiyatı
siparişOpenPrice;
int bilet, bilet kapat;

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int OnInit()
{
dönüş(INIT_SUCCESSED);
}
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
//+------------------------------------------- --------------------+
geçersiz OnDeinit(const int nedeni)
{
}
//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{
//--- gerekli çubukların fiyatlarının belirlenmesi
Openone = NormalizeDouble(iOpen(Symbol(), Period(), 0), Digits);
Highone = NormalizeDouble(iHigh(Symbol(), Period(), 0), Digits);
Hightwo = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits);
High Three = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits);
Highfour = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits);
Highfive = NormalizeDouble(iHigh(Symbol(), Period(), 4), Digits);
Highsix = NormalizeDouble(iHigh(Symbol(), Period(), 5), Digits);
Highseven = NormalizeDouble(iHigh(Symbol(), Period(), 6), Digits);
Higheight = NormalizeDouble(iHigh(Symbol(), Period(), 7), Digits);
Opentwo = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
Open Three = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits);
Closeone = NormalizeDouble(iClose(Symbol(), Period(), 0), Digits);
Closetwo = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits);
Close Three = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits);
Closefour = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits);
Lowone = NormalizeDouble(iLow(Symbol(), Period(), 0), Digits);
Lowtwo = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits);
Low Three = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits);
Lowfour = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits);
Lowfive = NormalizeDouble(iLow(Symbol(), Period(), 4), Digits);
Lowsix = NormalizeDouble(iLow(Symbol(), Period(), 5), Digits);
Lowseven = NormalizeDouble(iLow(Symbol(), Period(), 6), Digits);
Low15 = NormalizeDouble(iLow(Symbol(), Period(), 14), Digits);
Low25 = NormalizeDouble(iLow(Symbol(), Period(), 24), Digits);

//----gösterge - koşullar--------------------------------


double BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
double SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
double LowerBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1);
double UpperBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_UPPER,1);
double MiddleBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_MAIN,1);
double Bears = iBearsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Bulls = iBullsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Parab = iSAR(_Symbol,_Period,0.002, 1, 0);

SLbuy = NormalizeDouble(Sor - Kaybı Durdur*Puan, 5);
TPbuy = NormalizeDouble(Sor + Kâr Al*Puan, 5);
SLsell = NormalizeDouble(Teklif + StopLoss*Puan, 5);
TPsell = NormalizeDouble(Teklif - Kâr Al*Puan, 5);

//-------------işlevler---------------------------------- -----

if (Sor>0 && Teklif>0)
{

if(SiparişToplam()<1)
if (Kapat[1]>Aç[1])
if(Ayılar < -0.00035 && MiddleBB > Sor)
{
bilet = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, " buy order open", Magic, 0, Blue);
}
if (OrdersTotal()==1)
if(Boğa > 0.00035 && MiddleBB < Sor && Bears > 0 && Opentwo < Closetwo && Open Three < Close Three && BigTrand < Sor)
CloseBuyPositions1();
}





//----fonksiyonun sonu
}
//------------------------------------------------ ---------------------
geçersiz CloseBuyPositions1()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES);
string CurrencyPair=OrderSymbol();
if(_Symbol==Para Birimi Çifti)
if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL);
}
}
}




 
 int OrderOfSymbol=CounterOrderTradeType(-1);
 
//-------------функции---------------------------------------

if ( Ask>0 && Bid >0)
   {

 if (OrderOfSymbol<1)
    if (Close[1]>Open[1])
    if(Bears < -0.00035 && MiddleBB > Ask)
         {
    ticket = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку", Magic, 0, Blue);
         }
         
   
if (OrderOfSymbol==1)
   if(Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
    CloseBuyPositions1();
   } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
   {
   int cnt=0;
   //----
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
      {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)==false) continue;
      if(OrderSymbol()!=_Symbol) continue;
      if(order_type == OrderType() || order_type == -1) cnt++;
      }
   //----
   return(cnt);
   }
 
Порт-моне тв :
//+------------------------------------------- --------------------+
//| sova_2bars.mq4 |
//| Telif Hakkı 2020, MetaQuotes Yazılım A.Ş. |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+

OrdersTotal() , Metatrader 4 terminalindeki tüm pozisyonların ve emirlerin toplam sayısını döndürür

   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
         if (OrderMagicNumber() == iMagicNumber)
             if (OrderSymbol() == Symbol ())
              {

               }

Böylece emirleri sihirle ve finansal enstrümanla ayırabilirsiniz...

 

@MakarFX teşekkürler....derleme yaparken böyle hatalar oluyor

'CounterOrderTradeType' - işlev tanımlı değil birçok expt trade.mq4 için test edin 48 on dokuz

'CounterOrderTradeType' - yalnızca global, ad alanı veya sınıf kapsamında işlev bildirimlerine izin verilir birçok expt trade.mq4 için test edin 141 5


MakarFX
MakarFX
  • www.mql5.com
Добавил тему Окно модификации Доброго времени суток. В терминале, если я дважды щелкаю мышью на линию ордера, то открывается окно модификации. Но если на линии находится цена открытия одного ордера и тейк профит другого, то открывается последний измененный ордер. Уважаемые Профи Добавил тему Нужен индикатор. Кто может написать такое? Я уже...