Ö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?
Andrey Sokolov : Ö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!
Vladimir.Tyumen : 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!
Herkese merhaba, dili yeni öğrenmeye başladım, geçenlerde bir grid Expert Advisor oluşturma ile ilgili bir video eğitimine rastladım, yazdım, derledim, 0 hata, 0 uyarı. Ancak robot esnaf açmıyor. Kodu gönderiyorum, kimin tembel olmadığına bir bakın)))
Dosya üretmemek için hangi eylem planına ihtiyaç duyulacak, ancak sonunda iki veya bir tane olacak. İdeal olarak, birleştirin.
Voznesen :
Herkese merhaba, dili yeni öğrenmeye başladım, geçenlerde bir grid Expert Advisor oluşturma ile ilgili bir video eğitimine rastladım, yazdım, derledim, 0 hata, 0 uyarı. Ancak robot esnaf açmıyor. Kodu gönderiyorum, kimin tembel olmadığına bir bakın)))
Ve anlaşmaları nasıl açmalı? Hangi koşullar altında?
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.
Tek sorun, içinde dosya yoksa başka bir bilgisayarda derlenmeyecek olmasıdır.
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.