MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 126
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Sinyali detaylandırabilir misiniz, MT aracılığıyla mı yoksa üçüncü taraf aracılığıyla mı?
Yardım için teşekkürler, düzeltildi.
Örneğin herhangi bir göstergenin verilerine göre tüm terminalde veya belirli bir Uzman Danışmanda otomatik alım satımı durdurmak/etkinleştirmek mümkün müdür?
Kendi başınıza, herkes için aynı GP'yi ayarlamak ve örneğin 0 - tüm danışmanlar ticaret yapmadığında değeri izlemek için terminalin global değişkenlerini kullanabilirsiniz.
Ayrıca WinAPI üzerinden terminal panelindeki autotrade butonunu bulabilir ve devre dışı bırakabilirsiniz.
Merhaba! Söylesene, grafikte (etiket, hatırlatıcı) metin görüntülemek için grafikle birlikte hareket etmeyen ancak sabitlenmiş bir kod var mı? Teşekkür ederim!
Şimdiden teşekkürler!
extern double Lots = 0.1 ;
extern double Profit = 50 ;
extern int Step = 30 ;
extern int Magic = 6677 ;
extern int Slippage = 5 ;
extern int maPeriod = 100 ;
extern int maShift = 1 ;
double ma, FindLastBuyPrice, price;
//------------------------------------------------------------------
//___ПРОВЕРКА_ЗНАКОВ_ПОСЛЕ_ТОЧКИ___
//------------------------------------------------------------------
int OnInit ()
{
if ( Digits == 3 || Digits == 5 )
{
Step *= 10 ;
Slippage *= 10 ;
}
return ( INIT_SUCCEEDED );
}
//---------------------------------------------
void OnDeinit ( const int reason)
{
}
//------------------------------------------------------------------
//
//------------------------------------------------------------------
void OnTick ()
{
ma = iMA ( Symbol (), 0 ,maPeriod, maShift, MODE_SMA , PRICE_CLOSE , 0 );
if (CountBuy() && CountSell() == 0 && Bid < ma) //
{
if ( OrderSend ( Symbol (), OP_SELL , Lots, Bid , Slippage, 0 , 0 , "" , Magic, 0 , Red) < 1 )
Print ( "Неудалось открыть ордер на Продажу" );
}
if (CountBuy() && CountSell() == 0 && Ask < ma)
{
if ( OrderSend ( Symbol (), OP_BUY , Lots, Ask , Slippage, 0 , 0 , "" , Magic, 0 , Blue) < 1 )
Print ( "Неудалось открыть ордер на Покупку" );
}
if (CountBuy() >= 1 )
{
price = FindLastBuyPrice();
if ((price - Ask ) >= Step* Point )
{
if ( OrderSend ( Symbol (), OP_BUY , Lots, Ask , Slippage, 0 , 0 , "" , Magic, 0 , Blue) < 1 )
Print ( "Неудалось открыть ордер на Покупку" );
}
}
if (CountSell() >= 1 )
{
price = FindLastBuyPrice();
if (( Bid - price) >= Step* Point )
{
if ( OrderSend ( Symbol (), OP_SELL , Lots, Bid , Slippage, 0 , 0 , "" , Magic, 0 , Red) < 1 )
Print ( "Неудалось открыть ордер на Ппродажу" );
}
}
double op = CalculateProfit();
if (op >= Profit)
{
CloseAll();
}
}
//------------------------------------------------------------------
void CloseAll()
{
for ( int i = OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
{
if ( OrderType () == OP_BUY )
{
if (! OrderClose ( OrderTicket (), OrderLots (), Bid , Slippage))
{
Print ( "Не удалось закрыть ордер на ПОКУПКУ" );
}
}
if ( OrderType () == OP_SELL )
{
if (! OrderClose ( OrderTicket (), OrderLots (), Ask , Slippage))
{
Print ( "Не удалось закрыть ордер на ПРОДАЖУ" );
}
}
}
}
}
}
//------------------------------------------------------------------
double CalculateProfit() // Считаем профит по всем ордерам
{
double oProfit = 0 ;
for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
{
if ( OrderType () == OP_BUY || OrderType () == OP_SELL )
{
oProfit += OrderProfit ();
}
}
}
}
return (oProfit);
}
//------------------------------------------------------------------
double FindLastBuyPrice()
{
int oldTicket, ticket = 0 ;
double oldopenPrice = 0 ;
for ( int cnt = OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
{
if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_BUY )
{
oldTicket = OrderTicket ();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice ();
}
}
}
}
return (oldopenPrice);
}
double FindLastSellPrice()
{
int oldTicket, ticket = 0 ;
double oldopenPrice = 0 ;
for ( int cnt = OrdersTotal ()- 1 ; cnt>= 0 ; cnt--)
{
if ( OrderSelect (cnt, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_SELL )
{
oldTicket = OrderTicket ();
if (oldTicket > ticket)
{
ticket = oldTicket;
oldopenPrice = OrderOpenPrice ();
}
}
}
}
return (oldopenPrice);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int CountBuy()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--)
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) == true )
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_BUY )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade >= 0 ; trade--)
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ) == true )
{
if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic && OrderType () == OP_SELL )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
Merhaba. Bir soru:
Kütüphaneli bir gösterge var, üzerine bir danışman yazmanız gerekiyor
Dosya üretmemek için hangi eylem planına ihtiyaç duyulacak, ancak sonunda iki veya bir tane olacak. İdeal olarak, birleştirin.
Merhaba. Bir soru:
Kütüphaneli bir gösterge var, üzerine bir danışman yazmanız gerekiyor
Dosya üretmemek için hangi eylem şemasına ihtiyaç duyulacak, ancak sonunda iki veya bir tane olacak. İdeal olarak, birleştirin.
Kaynak olarak bağlı özel göstergelerle çalışma
mql4 programlarının çalışması için bir veya daha fazla özel gösterge gerekebilir, bunların tümü yürütülebilir bir mql4 programının koduna dahil edilebilir. Göstergelerin kaynak olarak dahil edilmesi, programların dağıtılmasını kolaylaştırır.