Forexman77 : Elbette gerekli! Peki, bu yapıyı minimum arayışına nasıl uygulayabiliriz? beynimle çözemiyorum)
Maksimumu aramak için, val değişkenine 0 değeri atanır (kesinlikle göstergenin değerlerinden herhangi birinden daha az).
Bu, minimumu bulmak için daha yüksek bir değer atamak gerektiği anlamına gelir. EMPTY_VALUE sabitini veya doğrudan minimum aramanın yapıldığı bazı çubuklardaki göstergenin değerini kullanabilirsiniz.
val= EMPTY_VALUE ;
for (i= 1 ;i<= 15 ;i++) {
ind= iMA (...,i);
if (ind < val) val=ind;
}
Veya bunun gibi:
val= MA (..., 1 );
for (i= 2 ;i<= 15 ;i++) {
ind= iMA (...,i);
if (ind < val) val=ind;
}
Elbette gerekli! Peki, bu yapıyı minimum arayışına nasıl uygulayabiliriz? beynimle çözemiyorum) Evet ve bir diziyi nasıl bildireceğimi öğrenmek istiyorum. Bu şekilde denedim:
-1 çıkıyor.
Döngü 34'ün üzerinde değer yinelenir ve dizi yalnızca 33 hücre içerir, düzeltin.
Ve yine de ArrayMinimum'u deneyin (num_array,WHOLE_ARRAY,0);
Maksimumu aramak için, val değişkenine 0 değeri atanır (kesinlikle göstergenin değerlerinden herhangi birinden daha az).
Bu, minimumu bulmak için daha yüksek bir değer atamak gerektiği anlamına gelir. EMPTY_VALUE sabitini veya aralarında minimum aramanın yapıldığı bazı çubuklardaki göstergenin değerini doğrudan kullanabilirsiniz.
Sevgili programcılar! Zor durumdayım lütfen yardım edin.
Bu kod hakkında kafamı çoktan kırdım.
//В условии прописано что работаем с if ( OrderType () == OP_BUY ){}
//, но метатрейдер почему то игнорирует это условие, и работает только с OP_SELLLIMIT
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos= 1 ;
externint sl= 40 ;
externint tp= 70 ;
datetime time;
datetime time2;
bool trade= false ;
bool trade2= false ;
int a,b;
intOnInit ()
{
//---
MA.Create( Symbol (), PERIOD_CURRENT , 10 , 6 , MODE_EMA , PRICE_CLOSE ); //создал машку//---return ( INIT_SUCCEEDED );
}
voidOnTick ()
{
//---if (IsNewBar()== true ) //если новый бар включаемся
{
if (buy(pos)== true ) //если цена выше МА продолжаем
{
if (!ExistPositions( Symbol (),- 1 ,- 1 , 0 )) //если нету открых ордеров продолжаем
{
if (GetTypeLastClosePos( Symbol (),- 1 )!= OP_BUY ) //если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade= true ;
}
if (trade== true )
{
OpenPosition( Symbol (), OP_BUY , 0.1 , Ask -sl* Point , Ask +tp* Point );
trade= false ;
}
}
}
if (sell(pos)== true )
{
if (!ExistPositions( Symbol (),- 1 ,- 1 , 0 ))
{
if (GetTypeLastClosePos( Symbol (),- 1 )!= OP_SELL )
{
trade2= true ;
}
if (trade2== true )
{
OpenPosition( Symbol (), OP_SELL , 0.1 , Bid +sl* Point , Bid -tp* Point );
trade= false ;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy( int pos)
{
if ( iClose ( Symbol (), 0 ,pos)>MA.Main( 1 ))
returntrue ;
elsereturnfalse ;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell( int pos)
{
if ( iClose ( Symbol (), 0 ,pos)<MA.Main( 1 ))
returntrue ;
elsereturnfalse ;
}
Alım ve satım için iki koşul dışında TÜM FONKSİYONLAR Kim'in şubesinden alınır ...... lütfen nerede hata yaptığımı söyleyin ... bir kavşakta bir işleme ihtiyacınız var
Ancak soruda çok az bilgi var. Bir ayda saatlik çubuklarda birçok ekstremum vardır. Ve bu arada, tam olarak neyin ekstremumu?
Sadece iki aylık ekstremum olduğunu varsaydım - min ve max ... peki, Tanrı onları korusun, ilk başta kod uzun olduğu ortaya çıktı, bu yüzden yardım istedim ... ama aklıma geldi, dörde sığdı çizgiler.
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.
Elbette gerekli! Peki, bu yapıyı minimum arayışına nasıl uygulayabiliriz? beynimle çözemiyorum)
Maksimumu aramak için, val değişkenine 0 değeri atanır (kesinlikle göstergenin değerlerinden herhangi birinden daha az).
Bu, minimumu bulmak için daha yüksek bir değer atamak gerektiği anlamına gelir. EMPTY_VALUE sabitini veya doğrudan minimum aramanın yapıldığı bazı çubuklardaki göstergenin değerini kullanabilirsiniz.
Veya bunun gibi:
Elbette gerekli! Peki, bu yapıyı minimum arayışına nasıl uygulayabiliriz? beynimle çözemiyorum)
-1 çıkıyor.Evet ve bir diziyi nasıl bildireceğimi öğrenmek istiyorum. Bu şekilde denedim:
Döngü 34'ün üzerinde değer yinelenir ve dizi yalnızca 33 hücre içerir, düzeltin.
Ve yine de ArrayMinimum'u deneyin (num_array, WHOLE_ARRAY ,0);
... Evet ve bir diziyi nasıl bildireceğimi öğrenmek istiyorum ...
Eğer sadece eğitim ve eğitim amaçlıysa...
Minimum ve maksimumun belirlendiği süre - bu, ayarlama ve optimizasyon olasılığını sağlamak için harici bir parametre olmalıdır.
Bu yüzden önce dizi boyutsuz olarak bildirilir:
double val[];Dizi bildirimi bir fonksiyonda değil, genel bir bölümde yapılır.
init işlevinde dizinin boyutu ayarlanır:
Şimdi start fonksiyonunda diziyi dolduruyoruz:
Son olarak, diziye ArrayMaximum() ve ArrayMinimum() uygulayın.
Maksimumu aramak için, val değişkenine 0 değeri atanır (kesinlikle göstergenin değerlerinden herhangi birinden daha az).
Bu, minimumu bulmak için daha yüksek bir değer atamak gerektiği anlamına gelir. EMPTY_VALUE sabitini veya aralarında minimum aramanın yapıldığı bazı çubuklardaki göstergenin değerini doğrudan kullanabilirsiniz.
Veya bunun gibi:
Döngü 34'ün üzerinde değer yinelenir ve dizi yalnızca 33 hücre içerir, düzeltin.
Ve yine de ArrayMinimum'u deneyin (num_array, WHOLE_ARRAY ,0);
Sevgili programcılar! Zor durumdayım lütfen yardım edin.
Bu kod hakkında kafamı çoktan kırdım.
İşte tüm fonksiyon:
Print'e geliyor ve ürettiği şey şu:
Bilet: 225299700, bir OP_SELLLIMIT sipariş biletidir.
Ve sonra her şey, beklendiği gibi, bu seçilen siparişin durdurma kaybını değiştirir. Ve OP_BUY, elbette ki olmalarına rağmen, boş görmez:
Sorun ne olabilir? Bunu bana neden yapıyor? Çözmeme yardım et lütfen!
fonksiyon hakkında başka bir soru
dikdörtgen nasıl önde çizilir ve arkada değil, örneğin belirtilen fiyattan beş çubuk ileride ...... ve yeniden çizilmez
Baktım. Teşekkür ederim.
Ancak soruda çok az bilgi var. Bir ayda saatlik çubuklarda birçok ekstremum vardır. Ve bu arada, tam olarak neyin ekstremumu?