İnsanlara yardım edin, birkaç gündür danışmanda iki işlevi uygulamaya çalışıyorum: ilki son işlemin kârını, ikincisi son işlemin lotunu belirler.
Bu site, makalelerdeki ve diğer danışmanlardaki örnekleri izleyerek çeşitli işlevler yaptı, ancak sonuç yok - her iki işlev de her zaman 0,00 değerini verir.
İşte doğru seçeneğe en yakın olduğunu düşündüğüm şey, ancak sonuç her zaman 0:
double LossLastPos(){
// --- определение границ требуемой торговой историиdatetime end= TimeCurrent (); // текущее серверное времяdatetime start=end- PeriodSeconds ( PERIOD_D1 ); // установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньHistorySelect (start,end);
//--- получим количество ордеров в историиint history_orders= HistoryOrdersTotal ();
//--- получим тикет ордера из истории, имеющего последний индекс в спискеulong order_ticket= HistoryOrderGetTicket (history_orders- 1 );
if (order_ticket> 0 ) // получили в кэш исторический ордер, работаем с ним
{
//Получаем значение прибыли последнего ордераdouble profit = HistoryDealGetDouble (order_ticket, DEAL_PROFIT );
return (profit);
}
}
Aynı şekilde parti büyüklüğünü elde etmeye çalışıyorum:
%100 çalışan bir çözüm gönderiyorum - işlev, terminal tarihindeki son kapatılan pozisyonun kârının boyutunu döndürür:
//+------------------------------------------------------------------+ //|Функция возвращает профит последней позиции |//+------------------------------------------------------------------+double ProfitLastPos()
{
// --- определение границ требуемой торговой историиdatetime end= TimeCurrent (); // текущее серверное времяdatetime start=end- PeriodSeconds ( PERIOD_D1 ); // установим начало на сутки назад//--- запросим в кэш программы торговую историю за деньif ( HistorySelect (start,end))
{
//--- получим количество сделок в историиint history_orders= HistoryDealsTotal ();
//--- получим тикет сделки из истории, имеющей последний индекс в спискеulong order_ticket= HistoryDealGetTicket (history_orders- 1 );
if (order_ticket> 0 ) // получили в кэш историческую сделку, работаем с ней
{
profit= HistoryDealGetDouble (order_ticket, DEAL_PROFIT );
}
}
return (profit);
}
Benzetme yoluyla, son ticaretin lot büyüklüğünü elde ederiz:
Ve editörde yine de Ctrl + (ingilizce açık) tuşlarına basarsanız, düzgün biçimlendirilmiş bir kod alırsınız. Foruma bir örnek yüklemeden önce özellikle önemlidir (daha iyi okunabilirlik). ))
tol64 : Ve editörde yine de Ctrl + (ingilizce açık) tuşlarına basarsanız, düzgün biçimlendirilmiş bir kod alırsınız. Foruma bir örnek yüklemeden önce özellikle önemlidir (daha iyi okunabilirlik). ))
Güzel gün! Son zamanlarda MQL5'i kemirmeye başladı. Bir pozisyonu kapatırken sorun yaşıyorum. Kodu yazıyorum: if(!m_Trade.PositionClose(_Symbol,100))//--- mevcut semboldeki pozisyonu kapatın. Sonuç - konum tersine çevrilir! Bir ipucu için çok minnettar olurum, pozisyonu nasıl kapatabilirim?
//_____________________________________________________________________________________________________________________________________________//-------- блок работы с длинной позицией ---------------------------------------------------------------------------------------------------if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
if( p_close1 < buy_stop_level )// если бар 1 закрылся ниже уровня стоп
{
if(!m_Trade.PositionClose(_Symbol,100))//--- закрываем позицию по текущему символу
{
//--- сообщим о неудачеPrint("Метод PositionClose() потерпел неудачу. Код возврата=",m_Trade.ResultRetcode(),
". Описание кода: ",m_Trade.ResultRetcodeDescription());
}
else
{
Print("Метод PositionClose() выполнен успешно. Код возврата=",m_Trade.ResultRetcode(),
" (",m_Trade.ResultRetcodeDescription(),")");
}
}
}
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Kendi hissemi test etmek için MT5'e bir hisse senedi (gelecek) koymak istiyorum, nasıl?
imkanı yok. bu geleceğe sahip DC'yi arayın
%)))) Bu geleceğin DC'si yok))) Yapıştırılmalı...
Yazık, yazık ama her şey çok güzel başladı...
Hepiniz hoşgeldiniz!
İnsanlara yardım edin, birkaç gündür danışmanda iki işlevi uygulamaya çalışıyorum: ilki son işlemin kârını, ikincisi son işlemin lotunu belirler.
Bu site, makalelerdeki ve diğer danışmanlardaki örnekleri izleyerek çeşitli işlevler yaptı, ancak sonuç yok - her iki işlev de her zaman 0,00 değerini verir.
İşte doğru seçeneğe en yakın olduğunu düşündüğüm şey, ancak sonuç her zaman 0:
Aynı şekilde parti büyüklüğünü elde etmeye çalışıyorum:
Ve hiçbir şey olmuyor, değerler her zaman sıfır.
Ben kendim, mql4'ten mql5'e ve mql4'e geçiyorum, bu tür işlevlerin uygulanması herhangi bir zorluk yaratmadı, ancak burada bir çıkmazdasınız.
Lütfen bana gerçek, çalışan bir çözüm söyleyin.
...
Lütfen bana gerçek, çalışan bir çözüm söyleyin.
HistoryDealGetTicket () ve HistoryDealsTotal () kullanın.
Ve kontrol edin:
tol64 çok teşekkür ederim! Her şey çalıştı.
%100 çalışan bir çözüm gönderiyorum - işlev, terminal tarihindeki son kapatılan pozisyonun kârının boyutunu döndürür:
Benzetme yoluyla, son ticaretin lot büyüklüğünü elde ederiz:
tol64 çok teşekkür ederim! Her şey çalıştı.
...
Ve editörde yine de Ctrl + (ingilizce açık) tuşlarına basarsanız, düzgün biçimlendirilmiş bir kod alırsınız. Foruma bir örnek yüklemeden önce özellikle önemlidir (daha iyi okunabilirlik). ))
Güzel gün! Son zamanlarda MQL5'i kemirmeye başladı. Bir pozisyonu kapatırken sorun yaşıyorum. Kodu yazıyorum: if(!m_Trade.PositionClose(_Symbol,100))//--- mevcut semboldeki pozisyonu kapatın. Sonuç - konum tersine çevrilir! Bir ipucu için çok minnettar olurum, pozisyonu nasıl kapatabilirim?
Durma seviyesinin altında çubuk kapandıktan sonra uzman günlüğü. Uzun pozisyon vardı = 1 lot, kısa oldu = 1 lot)