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

 
greeng2016 :
Danışmandan gösterge uyarısının geldiği nasıl belirlenir?

Bir uyarıya ihtiyacınız var mı?

Genellikle, bir uyarı ile tampona bir sinyal yazılır, eğer öyleyse, tampondan değeri okumanız gerekir.

Ancak daha kesin olması için kodu görmeniz gerekir. Veya uyarılı bir çubuk üzerinde gösterge değerlerine sahip bir ctrl+D veri penceresi .

 
kosmo13 :

Bu makalenin ekinde, sHistoryExport.mq5 olarak adlandırılır. Derleyicim, adları "HistoryDeal.." ile başlayan ve tanımlayıcıları "DEAL_.." ile başlayan işlevleri kabul etmiyor. İşte kod:

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

#property script_show_inputs

input bool      UseDateFrom = false ; // Указывать дату начала
input datetime DateFrom= 0 ; // Дата начала
input bool      UseDateTo= false ; // Указывать дату окончания
input datetime DateTo= 0 ; // Дата окончания



//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart (){

   datetime from,to;
  
   if (UseDateFrom){
      from=DateFrom;
   }
   else {
      from= 0 ;
   }
  
   if (UseDateTo){
      to=DateTo;
   }
   else {
      to= TimeCurrent ();
   }  
  
   if (! HistorySelect (from,to)){
       Alert ( "Ошибка выделение истории" );
       return ;
   }
  
   string FileName= "history.csv" ;
  
   int h= FileOpen (FileName, FILE_WRITE | FILE_ANSI | FILE_CSV , ";" );
  
   if (h== INVALID_HANDLE ){
       Alert ( "Ошибка открытия файла" );
       return ;
   }
  
   // первая строка, что бы знать, где что находится
  
   FileWrite (h, "Time" , "Deal" , "Order" , "Symbol" , "Type" , "Direction" , "Volume" , "Price" , "Comission" , "Swap" , "Profit" , "Comment" );    
   // по всем сделкам

   for ( int i= 0 ;i< HistoryDealsTotal ();i++){
       ulong ticket= HistoryDealGetTicket (i);
       if (ticket!= 0 ){
        
         long type= HistoryDealGetInteger (ticket, DEAL_TYPE );
        
         if (type== DEAL_TYPE_BUY || type== DEAL_TYPE_SELL ){
      
             long entry= HistoryDealGetInteger (ticket, DEAL_ENTRY );
      
             FileWrite (h,( datetime ) HistoryDealGetInteger (ticket, DEAL_TIME ),
                        ticket,
                         HistoryDealGetInteger (ticket, DEAL_ORDER ),
                         HistoryDealGetString (ticket, DEAL_SYMBOL ),
                        (type== DEAL_TYPE_BUY ? "buy" : "sell" ),
                        (entry== DEAL_ENTRY_IN ? "in" :(entry== DEAL_ENTRY_OUT ? "out" : "in/out" )),
                         DoubleToString ( HistoryDealGetDouble (ticket, DEAL_VOLUME ), 2 ),
                         HistoryDealGetDouble (ticket, DEAL_PRICE ),
                         DoubleToString ( HistoryDealGetDouble (ticket, DEAL_COMMISSION ), 2 ),
                         DoubleToString ( HistoryDealGetDouble (ticket, DEAL_SWAP ), 2 ),
                         DoubleToString ( HistoryDealGetDouble (ticket, DEAL_PROFIT ), 2 ),
                         HistoryDealGetString (ticket, DEAL_COMMENT )                    
            );
         }
      }
       else {
         Alert ( "Ошибка выделения сделки, повторите попытку" );
         FileClose (h);
         return ;
      }
   }

   FileClose (h);

   Alert ( "Сохранение выполнено, см. файл " +FileName);  
  
}
//+------------------------------------------------------------------+

Dürüst olmak gerekirse, hiç kontrol etmedim - elimde MT4 işlemleri geçmişim yok - Dmitry'nin senaryosuna bakarak sadece “dizlerimin üstüne” yazdım ...

#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"

#property script_show_inputs

input bool      UseDateFrom = false ; // Указывать дату начала
input datetime DateFrom= 0 ; // Дата начала
input bool      UseDateTo= false ; // Указывать дату окончания
input datetime DateTo= 0 ; // Дата окончания

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart (){
   //---
   datetime from,to;
   if (UseDateFrom) from=DateFrom;
   else from= 0 ;
   if (UseDateTo) to=DateTo;
   else to= TimeCurrent ();
   //---
   string FileName= "history.csv" ;
   int h= FileOpen (FileName, FILE_WRITE | FILE_ANSI | FILE_CSV , ";" );
   if (h== INVALID_HANDLE ){
       Alert ( "Ошибка открытия файла" );
       return ;
      }
   //--- первая строка, что бы знать, где что находится
   FileWrite (h, "OpenTime" , "CloseTime" , "Ticket" , "Symbol" , "Type" , "Volume" , "OpenPrice" , "ClosePrice" , "Comission" , "Swap" , "Profit" , "Comment" );    
   //--- по всем сделкам
   for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) {
         if ( OrderOpenTime ()<from)   continue ;
         if ( OrderOpenTime ()>to)     break ;
         int type= OrderType ();
         if (type> OP_SELL )           continue ;
         int dg=( int ) SymbolInfoInteger ( OrderSymbol (), SYMBOL_DIGITS );
         int ticket= OrderTicket ();
         FileWrite (h,( datetime ) OrderOpenTime (),
                     ( datetime ) OrderCloseTime (),
                     ticket,
                     OrderSymbol (),
                     (type== OP_BUY ? "buy" : "sell" ),
                     DoubleToString ( OrderLots (), 2 ),
                     DoubleToString ( OrderOpenPrice (),dg),
                     DoubleToString ( OrderClosePrice (),dg),
                     DoubleToString ( OrderCommission (), 2 ),
                     DoubleToString ( OrderSwap (), 2 ),
                     DoubleToString ( OrderProfit (), 2 ),
                     OrderComment ()                  
                   );
         }
       else {
         Alert ( "Ошибка выделения сделки, повторите попытку" );
         FileClose (h);
         return ;
         }
      }
   //---
   FileClose (h);
   Alert ( "Сохранение выполнено, см. файл " +FileName);  
}
//+------------------------------------------------------------------+
 

Açıklama için teşekkürler, Artem!

Ama bir soru daha var.

Bazen danışman, SL'nin tetiklenmesinden hemen sonra bir sipariş açar. Böylece tüm depoyu bir mum üzerinde boşaltabilir.

Mevcut siparişi kapattıktan sonra bir sonraki siparişin açılmasında gecikme nasıl ayarlanır? Gecikme süresi mum süresine eşit olmalı ve otomatik olarak hesaplanmalıdır.

Teşekkür ederim!

 
Viachaslau Baiko :

Açıklama için teşekkürler, Artem!

Ama bir soru daha var.

Bazen danışman, SL'nin tetiklenmesinden hemen sonra bir sipariş açar. Böylece tüm depoyu bir mum üzerinde boşaltabilir.

Mevcut siparişi kapattıktan sonra bir sonraki siparişin açılmasında gecikme nasıl ayarlanır? Gecikme süresi mum süresine eşit olmalı ve otomatik olarak hesaplanmalıdır.

Teşekkür ederim!

Mantık şu:

  1. türüne ve kapanış saatine göre son kapatılan siparişi bulun
  2. bu siparişi kapatana kadar kapatıldığı barı bulun
  3. sonuçtaki çubuk değeri sıfırdan büyükse, yeni bir pozisyon açabilirsiniz, aksi takdirde - hayır.
 
Artyom Trishkin :

Dürüst olmak gerekirse, hiç kontrol etmedim - elimde MT4 işlemleri geçmişim yok - Dmitry'nin senaryosuna bakarak sadece “dizlerimin üstüne” yazdım ...

İşler. İlk bakışta her şey normal görünüyor, açılış / kapanış sadece farklı bir tarihle yazıyor ama nasıl düzelteceğimi biliyorum. Çok teşekkürler.
 
kosmo13 :
İşler. İlk bakışta her şey normal görünüyor, açılış / kapanış sadece farklı bir tarihle yazıyor ama nasıl düzelteceğimi biliyorum. Çok teşekkürler.
 
Üçüncü yapı için bu danışmana yardım edin, işe yaradı, ancak şu anda değil !!!!
Dosyalar:
 
zhas89 :
Üçüncü derlemede bu danışmanla yardım işe yaradı, ancak şu anda değil !!!!

Hangi yardıma ihtiyaç var? Kendiniz bir şeyler yapamıyor musunuz?

İşte yardım ve tartışma, ancak arzuların karşılıksız yerine getirilmesi değil

 
Artyom Trishkin :

Hangi yardıma ihtiyaç var? Kendiniz bir şeyler yapamıyor musunuz?

İşte yardım ve tartışma, ancak arzuların karşılıksız yerine getirilmesi değil

Neyin yanlış olduğunu anlamıyorum?
 
zhas89 :
Neyin yanlış olduğunu anlamıyorum?
Nerede aradın, ne yaptın ve ne aldın?