Функция распределения рыночных данных не является гауссовой, скорее она похожа на распределение синусоподобной волны. Поскольку большинство индикаторов базируются на предположении о нормальном распределении цен, их нужно "скорректировать". Решением является использование преобразования Фишера, которое преобразует данные таким образом, чтобы они имели распределение, близкое к нормальному. В статье рассмотрена теория прямого и обратного преобразования Фишера и ее применение в трейдинге, разработан модуль торговых сигналов.
Standart ticaret sinyalleri için sembol ve zaman çerçevesi nasıl değiştirilir?
Temel olarak, yapabilirsiniz. Ancak ticaret sinyalleri modülünün başlatılması tam bir "ritüeldir". Korkarım ki "parmaklarda" başlatma sırasının tamamını açıklayamayacağım.
Aşağıdaki koda göre: İlk durumda gösterge ayarlanır, ancak ikinci durumda değil (eğik çizgi ile geçiş yapıyorum) Hata vermiyor.
Anladığım kadarıyla, şu anda üç parametrenin tümü zorunludur.
Bu nedenle, göstergenin görüntüleneceği pencerenin sayısı belirtilmelidir (seçenekler: 0 - ana pencere, ChartIndicatorsTotal() - yeni bir pencere, 0'danChartIndicatorsTotal() -1 - belirli bir mevcut pencere).
Hata üretmemesi iyi değildir.
Karlson :
Bu kütüphaneye göre ikinci seçeneğe göre 0 gösteriyor. Diğer tüm fonksiyonlar çalışıyor gibi görünüyor.
Büyük olasılıkla, fiyatı almadan önce yenilemeleri (en azından RefreshRates ) kullanmalısınız.
Teşekkürler. Yenilemeyi belirledikten sonra Bid ile gerçekten çalıştı.
Ancak göstergenin çıktısı ile kütüphaneyi kullanarak 2 parametreye ihtiyaç duyar: Bir alt pencere ve bir tutamaç Aksi takdirde, yanlış sayıda parametreye yemin eder.
Teşekkürler. Yenilemeyi belirledikten sonra Bid ile gerçekten çalıştı.
Ancak göstergenin çıktısı ile kütüphaneyi kullanarak 2 parametreye ihtiyaç duyar, bir alt pencere ve bir tutamaç.Aksi takdirde yanlış sayıda parametreye yemin eder.hayır.
Kütüphaneyi kullanmak 2 parametre gerektirir. Grafik ve alt pencere .
Belirtilen grafik penceresine belirtilen tutamaçla bir gösterge ekler.
boolChartIndicatorAdd (
long chart_id, // идентификатор графикаint sub_window // номер подокнаint indicator_handle // хэндл индикатора
);
CChart sınıfına gelince.
Gereksiz sorulardan kaçınmak için üç temel kurala uymaya çalışıyoruz:
1. Kaynak koduna bakarız, bir şey net değilse belgelere bakarız (unutmayın ki kaynak kod her zaman doğruyu söyleyecektir ve belgeler yalan olabilir);
2. OOP'nin uygulanması bizim için önemliyse, belirli bir sınıfın tanımıyla başlıyoruz ve "doğrudan yürütücüler"e gidiyoruz. "Gerçek iş" önemliyse, OOP en son öğrenilmelidir (yukarıdan aşağıya/yukarıdan aşağıya kod öğrenme);
3. Belgeleri ve kaynakları okuduktan sonra net olmayan bir şey varsa, foruma gidin.
Doğrudan sınıfta IndicatorAdd yönteminin uygulanması üzerine
Kaynağa bakarsanız, alt pencerenin ve tanıtıcının yönteme geçirildiği (yardımda belirtildiği gibi) ve üçüncü parametrenin sınıfın kendisinde depolanan verilerden alındığı anlaşılır (grafikten bahsediyorum) İD).
class CChart : public CObject
{
protected :
longm_chart_id ; // chart identifierpublic :
//methods for working with indicatorsbool IndicatorAdd( int subwin, int handle);
}
bool CChart::IndicatorAdd( intsubwin , inthandle )
{
//checking (проверка корректности идентификатора графика)if ( m_chart_id <= 0 ) return ( false );
//Непосредственно в обработку выдаются три параметраreturn ( ChartIndicatorAdd ( m_chart_id ,subwin,handle));
}
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.
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Dönem: zaman çerçevesinin değiştirilmesi yasaktır
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Sembol: sembolün değiştirilmesi yasaktır
Ticaret sinyali modülleri , sihirbaz tarafından oluşturulan Uzman Danışmanlardan ayrı olarak kullanılabilir mi? test için yazdım
#include <Expert\Signal\SignalMA.mqh>
CSignalMA SignalMA;
int TickCount;
string Str;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
TickCount=0;
SignalMA.Symbol(Symbol());
SignalMA.Period(PERIOD_H1);
SignalMA.Weight(0.5);
SignalMA.PeriodMA(20);
SignalMA.Shift(0);
SignalMA.Method(MODE_SMA);
SignalMA.Applied(PRICE_CLOSE);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
TickCount++;
Str = "LongCondition = " + IntegerToString(SignalMA.LongCondition())+"; "+IntegerToString(TickCount)+ "\n";
Str = Str + "ShortCondition = " + IntegerToString(SignalMA.ShortCondition())+"; "+IntegerToString(TickCount);
Comment(Str);
}
//+------------------------------------------------------------------+
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Dönem: zaman çerçevesinin değiştirilmesi yasaktır
2011.11.29 15:36:27 1234 (EURUSD,M1) CExpertBase::Sembol: sembolün değiştirilmesi yasaktır
Sonraki kod:
RectLabel* GetLabel() { static bool initialized = false ; static RectLabel label( "rectlabel sample" , 0 , 0 ); if (!initialized) { Pos leftTop = { 100 , 100 }; Rect rect(leftTop, 100 , 50 ); label.Move(rect); label.SetBGColor( clrYellowGreen ); label.SetTooltip( " -- Yuuuu! -- " ); initialized = true ; } return GetPointer (label); }işlev her çağrıldığında etiket için yapıcıyı çağırır.
Aşağıdaki koda göre: İlk durumda gösterge ayarlanır, ancak ikinci durumda değil (eğik çizgi ile geçiş yapıyorum) Hata vermiyor.
Bu kütüphaneye göre ikinci seçeneğe göre 0 gösteriyor. Diğer tüm fonksiyonlar çalışıyor gibi görünüyor.
Aşağıdaki koda göre: İlk durumda gösterge ayarlanır, ancak ikinci durumda değil (eğik çizgi ile geçiş yapıyorum) Hata vermiyor.
Anladığım kadarıyla, şu anda üç parametrenin tümü zorunludur.
Bu nedenle, göstergenin görüntüleneceği pencerenin sayısı belirtilmelidir (seçenekler: 0 - ana pencere, ChartIndicatorsTotal() - yeni bir pencere, 0'dan ChartIndicatorsTotal() -1 - belirli bir mevcut pencere).
Hata üretmemesi iyi değildir.
Bu kütüphaneye göre ikinci seçeneğe göre 0 gösteriyor. Diğer tüm fonksiyonlar çalışıyor gibi görünüyor.
Büyük olasılıkla, fiyatı almadan önce yenilemeleri (en azından RefreshRates ) kullanmalısınız.
Doğru olanı şöyle görünmeli
Teşekkürler. Yenilemeyi belirledikten sonra Bid ile gerçekten çalıştı.
Ancak göstergenin çıktısı ile kütüphaneyi kullanarak 2 parametreye ihtiyaç duyar: Bir alt pencere ve bir tutamaç Aksi takdirde, yanlış sayıda parametreye yemin eder.
Teşekkürler. Yenilemeyi belirledikten sonra Bid ile gerçekten çalıştı.
Ancak göstergenin çıktısı ile kütüphaneyi kullanarak 2 parametreye ihtiyaç duyar, bir alt pencere ve bir tutamaç.Aksi takdirde yanlış sayıda parametreye yemin eder.hayır.
Kütüphaneyi kullanmak 2 parametre gerektirir. Grafik ve alt pencere .
Kolsuz mu? Ve sistem hangi hindiyi koyacağını nereden biliyor? ..Şimdiye kadar yazılanlara güvendim :) Alt pencere ve tutamaç.
Kolsuz mu? Ve sistem hangi hindiyi koyacağını nereden biliyor? ..Şimdiye kadar yazılanlara güvendim :) Alt pencere ve tutamaç.
Kütüphane hakkında (sınıf yardımından)
GöstergeEkle
Belirtilen grafik penceresine belirtilen tutamaçla bir gösterge ekler.
ChartIndicatorAdd'in doğrudan çalışmasıyla ilgili olarak.
GrafikGöstergeEkle
Belirtilen grafik penceresine belirtilen tutamaçla bir gösterge ekler.
CChart sınıfına gelince.
Gereksiz sorulardan kaçınmak için üç temel kurala uymaya çalışıyoruz:
1. Kaynak koduna bakarız, bir şey net değilse belgelere bakarız (unutmayın ki kaynak kod her zaman doğruyu söyleyecektir ve belgeler yalan olabilir);
2. OOP'nin uygulanması bizim için önemliyse, belirli bir sınıfın tanımıyla başlıyoruz ve "doğrudan yürütücüler"e gidiyoruz. "Gerçek iş" önemliyse, OOP en son öğrenilmelidir (yukarıdan aşağıya/yukarıdan aşağıya kod öğrenme);
3. Belgeleri ve kaynakları okuduktan sonra net olmayan bir şey varsa, foruma gidin.
Doğrudan sınıfta IndicatorAdd yönteminin uygulanması üzerine
Kaynağa bakarsanız, alt pencerenin ve tanıtıcının yönteme geçirildiği (yardımda belirtildiği gibi) ve üçüncü parametrenin sınıfın kendisinde depolanan verilerden alındığı anlaşılır (grafikten bahsediyorum) İD).