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
OnTradeTransaction() olayını daha önce hiç işlemedim, buna gerek yoktu çünkü ticaret mantığının tam olarak neyin işe yaradığını hesaba katmasına gerek yoktu. SL veya TP. Bunun ticaret deneyimimin kanıtı olduğunu düşünüyor musunuz?)))
Çok dikkatli okudum, ancak birinin çalışan bir kod şeklinde anlaşılır bir cevap vereceğini görmüyorum. Yoksa lanet olası bir sır ve büyük bir büyücülük mü - gizli bilgi ve neyin işe yaradığını belirleme yeteneği mi?
Özellikle FOREX için sipariş vermek için danışman yazmıyorum.
Artık anlaşılır kod yazmak için gerekli tüm bilgilere sahipsiniz,
ihtiyaçlarınıza uygun.
Özellikle FOREX için sipariş danışmanı yazmıyorum .
Artık anlaşılır kod yazmak için gerekli tüm bilgilere sahipsiniz,
ihtiyaçlarınıza uygun.
Ve sipariş için yazmanı kim istedi?!
Bugün bu forumda soru sormak siparişe yazmak mı demek?
Evet, hepiniz cehenneme gideceksiniz. Hucker'lar.
...
Ve hesap geçmişindeki son işlemin yorumuna bakarsanız, bu size yakışır mı?
Bunun gibi bir şey:
//| Возвращает причину закрытия позиции по Take Profit |
//+------------------------------------------------------------------+
bool CAccountHistory::IsClosedByTakeProfit( const string symbol)
{
//--- Получим комментарий последней сделки на указанном символе
string last_comment=LastDealComment(symbol);
//--- Если в комментарии есть строка "tp"
if ( StringFind (last_comment, "tp" , 0 )>- 1 )
return ( true );
//--- Если нет строки "tp"
return ( false );
}
//+------------------------------------------------------------------+
//| Возвращает причину закрытия позиции по Stop Loss |
//+------------------------------------------------------------------+
bool CAccountHistory::IsClosedByStopLoss( const string symbol)
{
//--- Получим комментарий последней сделки на указанном символе
string last_comment=LastDealComment(symbol);
//--- Если в комментарии есть строка "sl"
if ( StringFind (last_comment, "sl" , 0 )>- 1 )
return ( true );
//--- Если нет строки "sl"
return ( false );
}
//+------------------------------------------------------------------+
//| Возвращает комментарий последней сделки на указанном символе |
//+------------------------------------------------------------------+
string CAccountHistory::LastDealComment( const string symbol)
{
int total_deals = 0 ; // Всего сделок в списке выбранной истории
string deal_symbol = "" ; // Символ сделки
string deal_comment = "" ; // Комментарий сделки
//--- Если история сделок получена
if ( HistorySelect ( 0 , TimeCurrent ()))
{
//--- Получим количество сделок в полученном списке
total_deals= HistoryDealsTotal ();
//--- Пройдемся по всем сделкам в полученном списке от последней сделки к первой
for ( int i=total_deals- 1 ; i>= 0 ; i--)
{
//--- Получим комментарий сделки
deal_comment= HistoryDealGetString ( HistoryDealGetTicket (i), DEAL_COMMENT );
//--- Получим символ сделки
deal_symbol= HistoryDealGetString ( HistoryDealGetTicket (i), DEAL_SYMBOL );
//--- Если символ сделки и текущий символ равны, остановим цикл
if (deal_symbol==symbol)
break ;
}
}
//---
return (deal_comment);
}
Ve hesap geçmişindeki son işlemin yorumuna bakarsanız, bu size yakışır mı?
Bunun gibi bir şey:
Teşekkürler, nazik insan!
SL ve TP'nin kayabileceği ve fiyatı karşılaştırmanın faydasız olacağı düşünüldüğünde, belki de bu en güvenilir yoldur.
Ve hesap geçmişindeki son işlemin yorumuna bakarsanız, bu size yakışır mı?
Bunun gibi bir şey:
Ve herhangi bir yorum yoksa (ki bu tamamen mümkündür)?
SL ve TP'nin kayabileceği ve fiyatı karşılaştırmanın faydasız olacağı düşünüldüğünde, belki de bu en güvenilir yoldur.
{
int OrderType =( int ):: HistoryOrderGetInteger ( OrderTicket , ORDER_TYPE );
if (( OrderType == ORDER_TYPE_BUY ) || ( OrderType == ORDER_TYPE_SELL ))
{
const string OrderComment = HistoryOrderGetString ( OrderTicket , ORDER_COMMENT );
const string OrderPrice=:: DoubleToString (:: HistoryOrderGetDouble ( OrderTicket , ORDER_PRICE_OPEN ),
( int ):: SymbolInfoInteger ( HistoryOrderGetString ( OrderTicket , ORDER_SYMBOL ), SYMBOL_DIGITS ));
if ( OrderComment == "tp " +OrderPrice)
OrderType =ORDER_TYPE_TAKEPROFIT;
else if ( OrderComment == "sl " +OrderPrice)
OrderType =ORDER_TYPE_STOPLOSS;
}
return ( OrderType );
}
Ve herhangi bir yorum yoksa (ki bu tamamen mümkündür)?
Elbette oldukça mümkündür. Bunu, en basit ve en hızlısı olarak, test cihazındaki tarih analizi için kullanıyorum.
Ve böylece bekleyen siparişlerle , biletleri yapmanız ve analiz etmeniz gerekir. Hazır bir örneğim yok.
bir pozisyonu kapattıktan sonra MQL5 kullanarak kar alma ve stoploss değerlerini bulamayacaksınız .
Bunlar asılsız suçlamalar değil, saatlerce her şeyin nasıl çalıştığını anlamaya çalışmanın (HistorySelectByPosition vb. yardımlar olmadan) sonucudur. Ve yanılıyorsam seve seve özür dilemeye hazırım. Asılsız olmamak için, bir pozisyon açan, ardından SL ve TP seviyelerini belirleyen RoboForexEU-MetaTrader 5 sunucusunda testçi için bir danışman (anlaşılması daha kolay) getiriyorum.
Bu Expert Advisor'da (OnDeinit'te) tek bir kapalı pozisyonun SL ve TP'sini belirlemek imkansızdır. Bu kadar mı amaçlanmış?
Elbette oldukça mümkündür. Bunu, en basit ve en hızlısı olarak, test cihazındaki tarih analizi için kullanıyorum.
Ve böylece bekleyen siparişlerle , biletleri yapmanız ve analiz etmeniz gerekir. Hazır bir örneğim yok.
Bu yöntemde yanlış olan neydi?
if (trans.order != my_order_ticket)
{
//Сработал SL или TP
}
break ;
Bu yöntemde yanlış olan neydi?
if (trans.order != my_order_ticket)
{
//Сработал SL или TP
}
break ;