MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 11
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
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 .
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 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 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!
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:
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.
Üçü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
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?