double ATR_Max() {
int i;
double m;
datetime tim;
iATR_H1_PER = 15 ; // периодif ( tim != Time[ 0 ] ) {
while ( i < WindowBarsPerChart() ) {
double a = iATR ( NULL , 0, iATR_H1_PER, i );
if ( m < a ) {
m = a;
}
i++;
tim = Time[ 0 ];
}
}
Alert ( " Максимальное значение ATR для видимого количества баров равно - " , m );
return (m);
}
Bence döngüden sonra tim = Time[0] koymak daha iyi olur .. Aksi takdirde Time[0] isteği tüm görünür çubuklar üzerinde gerçekleştirilir - bu mantıklı değildir.
Boeing747 : Bence döngüden sonra tim = Time[0] koymak daha iyi olur .. Aksi takdirde Time[0] isteği tüm görünür çubuklar üzerinde gerçekleştirilir - bu mantıklı değildir.
Böylece fonksiyon önceki iki çubuğun değerlerini kontrol eder ve eğer çok büyüklerse fonksiyon TRUE değerini döndürür. Soru, işlevin daha fazla mum üzerinde büyük mumları araması için nasıl güzel bir şekilde rafine edileceğidir. Örneğin 24.
#include <b-Lots.mqh>externdouble TrailingStop = 30 ;
externdouble Sploss = 15 ;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start() {
double HA_up,HA_dw;
double MA_H0,MA_H1,MA_L0,MA_L1,MA_0,MA_1;
int i, cnt, ticket, total;
bool flag= true ;
if ( Bars < 100 ) {
Print ( "bars less than 100" );
return ( 0 );
}
// Проверяем стоит ли открываться
cnt=OrdersHistoryTotal()- 1 ;
for (i=cnt;i>= 0 ;i--) {
if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY )) continue ;
if (OrderOpenTime()>=Time[ 0 ]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
flag= false ;
break ;
}
}
cnt= OrdersTotal ()- 1 ;
for (i=cnt;i>= 0 ;i--) {
if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderOpenTime()>=Time[ 0 ]) { // Time[0] - если позиция открывается на нулевом баре текущего символа
flag= false ;
break ;
}
}
if (!flag) return ( 0 );
//-----------------------------------------------
MA_H0= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_HIGH , 0 );
MA_H1= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_HIGH , 1 );
MA_0= iMA ( 0 , 0 , 3 , 0 , MODE_EMA , PRICE_MEDIAN , 0 );
MA_1= iMA ( 0 , 0 , 3 , 0 , MODE_EMA , PRICE_MEDIAN , 1 );
MA_L0= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_LOW , 0 );
MA_L1= iMA ( 0 , 0 , 3 , 0 , MODE_SMA , PRICE_LOW , 1 );
HA_up= iCustom ( 0 , 0 , "Heiken Ashi" , 3 , 0 );
HA_dw= iCustom ( 0 , 0 , "Heiken Ashi" , 2 , 0 );
//задали все данные
total= OrdersTotal ();
if (total< 1 )
{
// Проверка свободной маржиif (AccountFreeMargin()<( 1000 *Lots))
{
Print ( "We have no money. Free Margin = " , AccountFreeMargin());
return ( 0 );
}
// Условие открытие позиции BUYif (MA_L1<MA_L0&&Ask<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
{
Lots=GetSizeLot();
ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 5 ,Bid-Sploss* Point , 0 , "" , 16384 , 0 ,Green);
if (ticket> 0 )
{
if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "BUY order opened : " ,OrderOpenPrice());
}
elsePrint ( "Error opening BUY order : " , GetLastError ());
return ( 0 );
}
// Условие открытие позиции SELLif (MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
{
Lots=GetSizeLot();
ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 5 ,Ask+Sploss* Point , 0 , "" , 16384 , 0 ,Red);
if (ticket> 0 )
{
if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES)) Print ( "SELL order opened : " ,OrderOpenPrice());
}
elsePrint ( "Error opening SELL order : " , GetLastError ());
return ( 0 );
}
return ( 0 );
}
for (cnt= 0 ;cnt<total;cnt++)
{
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()<=OP_SELL &&
OrderSymbol()== Symbol ())
{
if (OrderType()==OP_BUY) // длинная позиция открыта
{
if ( NormalizeDouble ( MathAbs (MA_H0-Bid), Digits )< Point )
{
OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,Violet);
return ( 0 );
}
// трейлинг-стоп для длинной позицииif (TrailingStop> 0 )
{
if (Bid-OrderOpenPrice()> Point *TrailingStop)
{
if (OrderStopLoss()<Bid- Point *TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point *TrailingStop,OrderTakeProfit(), 0 ,Green);
return ( 0 );
}
}
}
}
else
{
if ( NormalizeDouble ( MathAbs (MA_L0-Ask), Digits )< Point )
{
OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,Violet);
return ( 0 );
}
// трейлинг-стоп для короткой позицииif (TrailingStop> 0 )
{
if ((OrderOpenPrice()-Ask)>( Point *TrailingStop))
{
if ((OrderStopLoss()>(Ask+ Point *TrailingStop)) || (OrderStopLoss()== 0 ))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *TrailingStop,OrderTakeProfit(), 0 ,Red);
return ( 0 );
}
}
}
}
}
}
return ( 0 );
}
Soru: Mevcut mumdaki pozisyon kapanmadı (koşullar gelmedi), MA_0= iMA ( 0, 0, 3, 0, MODE_EMA, PRICE_MEDIAN, 0 ) ile eşleştiğinde bir sonraki mumda hemen nasıl kapatılır ;
Bir kapanış koşulu vardır: mevcut mumda yüksek veya düşük noktayı geçmek, ancak bir pozisyon açtıktan sonra pozisyonun bir sonraki mumda kapatılabilmesi de gereklidir.
if ( NormalizeDouble ( MathAbs (MA_0-Ask), Digits )< Point ), ancak ikinci açık mumun koşulunun nasıl karşılanacağını yazabilirsiniz.
Kodla cevap verebilirseniz, bir örnekle daha açıktır.
Foruma yeni bir kişinin bir soru ile gelip gelmediğini anlamak için gerçekten alnında yedi açıklık olması mı gerekiyor, o zaman belirli bir çözüme veya benzer bir şeye bir bağlantıya ihtiyacı var mı ve "her şey mümkün" gibi aptal bir bahaneye değil mi?
Foruma yeni bir kişinin bir soru ile gelip gelmediğini anlamak için gerçekten alnında yedi açıklık olması mı gerekiyor, o zaman belirli bir çözüme veya benzer bir şeye bir bağlantıya ihtiyacı var mı ve "her şey mümkün" gibi aptal bir bahaneye değil mi?
Kendileri bir şeyler yapmaya çalışanlara yardım ederler. Sizi doğru yöne yönlendirirler, açıklarlar vb. ...
Bir soru sordunuz - cevaplandınız. Kendiniz bir şeyler yazmayı denediniz mi?
Belli bir formatta soru sorarken öncelikle soru formatına ne cevap alacağınızı düşünün...
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.
Yani, umarım fonksiyonun son halidir.
Yani, umarım fonksiyonun son halidir.
Yani, umarım fonksiyonun son halidir.
Bence döngüden sonra tim = Time[0] koymak daha iyi olur .. Aksi takdirde Time[0] isteği tüm görünür çubuklar üzerinde gerçekleştirilir - bu mantıklı değildir.
Düzeltme için teşekkürler. Geceleri, hataların sayısı katlanarak artar))))
Fikir basit: ZigZag göstergesi tabloya kurulur. Grafikteki ZigZag parametrelerinin değişeceği bir komut dosyası yazın, ona bir kısayol tuşu ekleyin.
Yüksek volatilite filtresi bulma konusuna devam ediyoruz. WSR'den mevcut filtrenin kodunu vereceğim
int init()
İşte fonksiyonun kendisi:
Böylece fonksiyon önceki iki çubuğun değerlerini kontrol eder ve eğer çok büyüklerse fonksiyon TRUE değerini döndürür. Soru, işlevin daha fazla mum üzerinde büyük mumları araması için nasıl güzel bir şekilde rafine edileceğidir. Örneğin 24.
Tünaydın. Söyle bana, mql4'te anında gösterge parametrelerini değiştirmek mümkün mü?
Fikir basit: ZigZag göstergesi tabloya kurulur. Grafikteki ZigZag parametrelerinin değişeceği bir komut dosyası yazın, ona bir kısayol tuşu ekleyin.
Alım satımı test etmek için kendi kendime bir danışman yaptım ama bir şeyi çözemiyorum...
Soru: Mevcut mumdaki pozisyon kapanmadı (koşullar gelmedi), MA_0= iMA ( 0, 0, 3, 0, MODE_EMA, PRICE_MEDIAN, 0 ) ile eşleştiğinde bir sonraki mumda hemen nasıl kapatılır ;Bay/sat maksimum ve minimum MA ile açılır
// SATIN AL pozisyonu açma koşulu
if(MA_L1<MA_L0&&Sor<=MA_L0&&MA_0>MA_1&&HA_up>HA_dw)
// SATIŞ pozisyonu açma koşulu
if(MA_H1>MA_H0&&Bid>=MA_H0&&MA_0<MA_1&&HA_up<HA_dw)
Bir kapanış koşulu vardır: mevcut mumda yüksek veya düşük noktayı geçmek, ancak bir pozisyon açtıktan sonra pozisyonun bir sonraki mumda kapatılabilmesi de gereklidir.
if ( NormalizeDouble ( MathAbs (MA_0-Ask), Digits )< Point ), ancak ikinci açık mumun koşulunun nasıl karşılanacağını yazabilirsiniz.
Kodla cevap verebilirseniz, bir örnekle daha açıktır.
Bir olasılık var.
İnanılmaz ayrıntılı cevap için teşekkürler.
Foruma yeni bir kişinin bir soru ile gelip gelmediğini anlamak için gerçekten alnında yedi açıklık olması mı gerekiyor, o zaman belirli bir çözüme veya benzer bir şeye bir bağlantıya ihtiyacı var mı ve "her şey mümkün" gibi aptal bir bahaneye değil mi?
İnanılmaz ayrıntılı cevap için teşekkürler.
Foruma yeni bir kişinin bir soru ile gelip gelmediğini anlamak için gerçekten alnında yedi açıklık olması mı gerekiyor, o zaman belirli bir çözüme veya benzer bir şeye bir bağlantıya ihtiyacı var mı ve "her şey mümkün" gibi aptal bir bahaneye değil mi?
Kendileri bir şeyler yapmaya çalışanlara yardım ederler. Sizi doğru yöne yönlendirirler, açıklarlar vb. ...
Bir soru sordunuz - cevaplandınız. Kendiniz bir şeyler yazmayı denediniz mi?
Belli bir formatta soru sorarken öncelikle soru formatına ne cevap alacağınızı düşünün...