Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 721

Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Merhaba.
Lütfen yardım et.
Gösterge çizgileri ilk çubukta kesiştiğinde sinyal verir.
Pozisyon doğru açılır, birinci çubukta ma_shiftT = 0 ve ma_shiftD=0 ise, ma_shiftT = -1 ve ma_shiftD= 1 ise pozisyon üçüncü veya dördüncü çubukta açılır.
İlk barı geçerken pozisyon açmak için ne yapmalıyım?
input int ma_shiftD= 1 ;
int iTEMAHandle; // хэндл индикатора iTEMA
int iDEMAHandle; // хэндл индикатора
double ma1Val[]; // динамические массивы для хранения численных значений для каждого бара
double maVal[]; //
//+------------------------------------------------------------------+
int OnInit ()
{
//---
m_symbol.Name( Symbol ());
//--- Получить хэндл индикатора iTEMA
iTEMAHandle= iTEMA ( _Symbol , PERIOD_CURRENT , 30 ,ma_shiftT, PRICE_CLOSE );;
//---Получить хэндл индикатора
iDEMAHandle= iDEMA ( _Symbol , PERIOD_CURRENT , 30 ,ma_shiftD, PRICE_CLOSE );;
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//--- освобождаем хэндлы индикаторов
IndicatorRelease (iTEMAHandle);
IndicatorRelease (iDEMAHandle);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
//--- массив значений индикатора
ArraySetAsSeries (ma1Val, true );
//--- массив значений индикатора
ArraySetAsSeries (maVal, true );
if ( CopyRates ( _Symbol , _Period , 0 , 5 ,mrate)< 0 )
{
Alert ( "Ошибка копирования исторических данных - ошибка:" , GetLastError (), "!!" );
return ;
}
//====
if ( CopyBuffer (iTEMAHandle, 0 , 0 , 5 ,ma1Val)< 0 )
{
Alert ( "Ошибка копирования буферов индикатора TEMA - номер ошибки:" , GetLastError (), "!!" );
return ;
}
if ( CopyBuffer (iDEMAHandle, 0 , 0 , 5 ,maVal)< 0 )
{
Alert ( "Ошибка копирования буферов индикатора DEMA - номер ошибки:" , GetLastError ());
return ;
}
bool Sell_Condition_3=(maVal[ 2 ]<=ma1Val[ 2 ]);
bool Sell_Condition_4=(maVal[ 1 ]>ma1Val[ 1 ]);
if (Sell_Condition_3 && Sell_Condition_4)
{
// открываю позицию SELL
}
}
Birincisi: Yalnızca bir tane kullanılıyorsa neden 5 gösterge değerini kopyalayasınız?
İkincisi: Gösterge çizgilerinin konumu kesişimlerini göstermez.
İlkinden başlayarak 2 değeri kopyalamanız yeterlidir.
CopyBuffer (iTEMAHandle, 0 , 1 , 2 , ma1Val)
CopyBuffer (iDEMAHandle, 0 , 1 , 2 , maVal)
Kesişme gerçeğini ancak ikinci çubuktaki ve birinci çubuktaki çizgilerin konumunu karşılaştırarak belirleyebilirsiniz. BU SORUN İÇİN.
Dizi indekslemenin yönünü hesaba katmak gerekir. Sonra ortaya çıkacak
Koşul yerine getirilirse, kesişme gerçeği açıktır. Kavşağın yönü size kalmış.
not; Ah, peki, evet... Kavşak olgusunun tanımına dikkatsizce baktım. Her durumda, ekstra değerlere gerek yoktur. Kafanızı karıştırmış olmalılar.
Merhaba.
Lütfen yardım et.
Gösterge çizgileri ilk çubukta kesiştiğinde sinyal verir.
Pozisyon doğru açılır, birinci çubukta ma_shiftT = 0 ve ma_shiftD=0 ise, ma_shiftT = -1 ve ma_shiftD= 1 ise pozisyon üçüncü veya dördüncü çubukta açılır.
İlk barı geçerken pozisyon açmak için ne yapmalıyım?
input int ma_shiftD= 1 ;
int iTEMAHandle; // хэндл индикатора iTEMA
int iDEMAHandle; // хэндл индикатора
double ma1Val[]; // динамические массивы для хранения численных значений для каждого бара
double maVal[]; //
//+------------------------------------------------------------------+
int OnInit ()
{
//---
m_symbol.Name( Symbol ());
//--- Получить хэндл индикатора iTEMA
iTEMAHandle= iTEMA ( _Symbol , PERIOD_CURRENT , 30 ,ma_shiftT, PRICE_CLOSE );;
//---Получить хэндл индикатора
iDEMAHandle= iDEMA ( _Symbol , PERIOD_CURRENT , 30 ,ma_shiftD, PRICE_CLOSE );;
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
//--- освобождаем хэндлы индикаторов
IndicatorRelease (iTEMAHandle);
IndicatorRelease (iDEMAHandle);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
//---
//--- массив значений индикатора
ArraySetAsSeries (ma1Val, true );
//--- массив значений индикатора
ArraySetAsSeries (maVal, true );
if ( CopyRates ( _Symbol , _Period , 0 , 5 ,mrate)< 0 )
{
Alert ( "Ошибка копирования исторических данных - ошибка:" , GetLastError (), "!!" );
return ;
}
//====
if ( CopyBuffer (iTEMAHandle, 0 , 0 , 5 ,ma1Val)< 0 )
{
Alert ( "Ошибка копирования буферов индикатора TEMA - номер ошибки:" , GetLastError (), "!!" );
return ;
}
if ( CopyBuffer (iDEMAHandle, 0 , 0 , 5 ,maVal)< 0 )
{
Alert ( "Ошибка копирования буферов индикатора DEMA - номер ошибки:" , GetLastError ());
return ;
}
bool Sell_Condition_3=(maVal[ 2 ]<=ma1Val[ 2 ]);
bool Sell_Condition_4=(maVal[ 1 ]>ma1Val[ 1 ]);
if (Sell_Condition_3 && Sell_Condition_4)
{
// открываю позицию SELL
}
}
Size yardımcı olması için bir örnek ekledim - bu örnekte birden fazla değeri değil, birer birer kopyalıyorum. Adım adım benim ve örneğinizin ne döndürdüğünü karşılaştırarak, örneğinizdeki dizilerde indekslemenin nasıl gerçekleştiğini görmelisiniz (yani, 1. çubuktaki öğenin dizide nerede ve çubuk 2'den nerede saklandığını anlamalısınız).
Örneğimle nasıl çalışılır:
özellikle örnek ayarlar için, örnek adla eşleşen bir ada sahip bir grafik şablonu oluşturdum ve kaydettim - "İki iMA Shift eksi shift plus.tpl". Bu şablonu terminalinizin \MQL5\Profiles\Templates klasörüne kaydedin. Şimdi, test cihazını başlatırken, test cihazı bu şablonu alacak ve test cihazında çok güzel bir resim olacak:
Bir kavşak algılandığında, test cihazı direktifte duracaktır.
if (ma_one_1<ma_two_1 && ma_one_2>ma_two_2)
{
string text= "ma_one_1 = " + DoubleToString (ma_one_1, Digits ()+ 1 )+ "\n" +
"ma_two_1 = " + DoubleToString (ma_two_1, Digits ()+ 1 )+ "\n" +
"ma_one_2 = " + DoubleToString (ma_one_2, Digits ()+ 1 )+ "\n" +
"ma_two_2 = " + DoubleToString (ma_two_2, Digits ()+ 1 );
Comment (text);
DebugBreak ();
}
ve test cihazındaki "Artı işareti"ni kullanarak çubuklar arasında gezinebilecek ve 1. ve 2. çubuktaki göstergelerin değerlerini görebileceksiniz (önce "Veri Penceresi" penceresini açın).
Merhaba!
FOREX'te yayılma hakkında bir sorum var.
Yayılım genişlediğinde, ASK yükselir mi, BID düşer mi, yoksa ikisi de farklı yönlerde simetrik olarak mı hareket eder?
Merhaba!
FOREX'te yayılma hakkında bir sorum var.
Yayılım genişlediğinde, ASK yükselir mi, BID düşer mi, yoksa ikisi de farklı yönlerde simetrik olarak mı hareket eder?
Her şey olabilir. Değişmeyen bir şey var - spread, Satış fiyatı ile Alış fiyatı arasındaki farktır.
Yayılma daralmaya başladığında aynı anda birbirlerine doğru hareket edebileceklerini doğru anladım mı?
" Aynı kalan bir şey var - spread, Satış fiyatı ile Alış fiyatı arasındaki farktır."
Başka kanun yok.
" Aynı kalan bir şey var - spread, Satış fiyatı ile Alış fiyatı arasındaki farktır."
Başka kanun yok.
Diyelim ki, bir alışım var ve spread genişlemeye başladıysa, Ask yükseldi ve Bid düştüyse , pozisyonu kapatmalı mıyım yoksa Ask düşene kadar beklemeli miyim?
Alış (ALMA pozisyonu) Alış fiyatından kapatılır.
Başka bir şey de muhtemelen şu soruyu soracaksınız: "Ultra yüksek oynaklık dönemlerinde ne yapmalı?". Cevap veriyorum - herkes kendi yolunda karar verir.
Alış (ALMA pozisyonu) Alış fiyatından kapatılır.
Başka bir şey de muhtemelen şu soruyu soracaksınız: "Ultra yüksek oynaklık dönemlerinde ne yapmalı?". Cevap veriyorum - herkes kendi yolunda karar verir.
Alış (ALMA pozisyonu) Alış fiyatından kapatılır.
Başka bir şey de muhtemelen şu soruyu soracaksınız: "Ultra yüksek oynaklık dönemlerinde ne yapmalı?". Cevap veriyorum - herkes kendi yolunda karar verir.