MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 490

 
Kot :

Tünaydın!


Belirli hesaplamalar yapan bir EA'm var. Farklı mat işlemleri, diziler, döngüler kullanır. Sonuç bir dosyaya yazılır . Tüm adımları tamamladıktan sonra her şeye en baştan başlamalıdır. Ancak tüm hesaplamaları bir kez yapıyor ve ikinci kez başlayıp donuyor, hiçbir işlem olmuyor. Söylesene, belki yeni bir hesaplamaya başlamadan önce değişkenleri sıfırlamanız, dizileri temizlemeniz veya başka bir şey mi gerekiyor?

Dosyayı kapatmayı denediniz mi?

 
Tünaydın! Bunun gibi en küçük bilgiyle bir gösterge yapmaya çalışan bir insancıldan (ben) yardıma ihtiyacım var))) ama neyin görünmesi gerektiğine dair bir anlayış var)) Ve böylece:
MT4 için bir koltuk değneği/gösterge/komut dosyası ("About, General, Input Parameters, Colors, Display" sekmeleriyle birlikte bir gösterge biçiminde) nasıl programlanır, böylece bu tür verileri bir .csv dosyasından alır, örneğin , kaynak dosyanın formatı:
EUR;TF;1.192;1.1733
EUR;TN;1.2037;1.1663
EUR;AB1;1.1906499615;1.1797479615
CHF;TF;1.0362;1.0183
CHF;TN;1.0479;1.0121
CHF;AB1;1.03484132734247;1.02549513556164


Onlar. gösterge, kaydedilen verileri dosyadan aldı ve
uzunluk parametreleri tam olarak "gün" (sınırdan sınıra) ile segmentler (TF, TA) veya renkli bir aralık (EA) şeklinde çizelgeye bir yorumla ekledi MT4'teki günlerin dikey ayırıcılarından, satırlar için satırın rengini, satır türünü, metin rengi ve yorum boyutunu seçin ve satıra bir yorum bölümünün değiştirilmesini, örneğin "TF" biçiminde seçin. - 1,192" ikinci satır "TF - 1,1733" dosyanın ilgili satırlarından alınmıştır. Aynı zamanda, segment tamamen yataydır ve EUR;TF;1.192;1.1733 satırından itibaren, bir segment için tam olarak ilk haneyi ve ikinci segment için ikinci haneyi, segment 1.192'nin başlangıcı olarak yatay çizgisi olarak alır ve bitiş 1.192.
Ayrıca aralıklar da vardır, örneğin EA, ilke günün başından sonuna kadar aynıdır, ancak fiyat parametresi farklıdır ve başlangıç ve bitiş satırı CHF;AB1;1.03484132734247;1.02549513556164 başlangıçtır.
1.03484132734247 aralık sonu 1.02549513556164. MT4 açıldığında (bir harita üzerinde duran normal bir hindi gibi), her gün grafikte başlar ve tüm verileri tam olarak o günkü bir kez ekler, daha önce çizilen tüm çizgileri grafikten silmez ve çoğaltmaz. Bütün bunlarla, sadece aktif pencerenin şimdi olduğu yerde ve diğer aktif pencerelerde (yani çalıştığı yerde) gün için tüm segmentleri ve aralıkları seçer ve gösterir (yani bir çift açtı ve gösterge tüm segmentleri ve aralıkları çizdi) mevcut gün ve sakinleşti vb. çiftler halinde).

Örneğin, gösterge sekmesi nasıl görünmelidir Giriş parametreleri :

Değişken________Değer
Funtik________//--Genel ayarlar--//
TF_______true çizin
TN _______true çizin
AB1______true çizin
AB2______yanlış çiz
Metin yazılarının rengi _______Siyah
İmza yazı tipi__________________Arial
Metin başlıklarının yazı tipi boyutu ________9
Çizgi Rengi TF ______________
Hat tipi TF _______________
Çizgi rengi TN ______________
Hat türü TN _______________
Aralık Renk AB1__________
Aralık rengi AB2__________
Saniye cinsinden dosya yoklama sıklığı ______2
Dosya adı ____________5.csv

Kendim karalamaya çalıştım ama olmuyor, kolay gibi görünse de (peki ben hümanistim, ne yapabilirim...) Lütfen boğulan bir adama yardım edin !!!!!!! !


 //+------------------------------------------------------------------+
//|                                                        Funtik.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"
 
#property indicator_chart_window
//---- input parameters
extern string     Funtik= "5.csv" ;
//+------------------------------------------------------------------+
//| extern variables                                       |
//+------------------------------------------------------------------+
extern    bool     РисоватьTB = false       ;
extern    bool     РисоватьTN = false       ;
extern    bool     РисоватьTF = false       ;
extern    bool     РисоватьAB1 = false      ;
extern    bool     РисоватьAB2 = false      ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
 
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int     counted_bars= IndicatorCounted ();
//----
       int handle,sst= 1 ;
     double   NameCena;
     string NameF ,NameTi,NameFT;
       bool h1;
      
   while (sst> 0 )
                 {
   handle= FileOpen (Funtik, FILE_CSV | FILE_READ , ';' );
 //  Comment ("Файл ",Funtik,"открыт");
   if (handle>= 0 )
    {
     NameF= FileReadString (handle);           // Читается наименование бумаги
     NameTi= FileReadString (handle);           // Читается первая котировка и подставляется в начало первого отрезка линии или диапазона
     NameCena= FileReadNumber (handle);         // Читается цена последней котировки для первого отрезка линии или диапазона
     NameFT= FileReadString (handle);           // Читается последняя котировка для диапазона
     
     Alert (NameF, " " ,NameTi, " " ,NameCena, " " ,NameFT);
       if ( FileIsEnding (h1))
       {
     FileClose (h1);
     return ( false );
     sst= 0 ;
       }
    }
               }
     FileClose (handle);   
 
   //fComment(Funtik);
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+

 

Merhaba!

Lütfen yardım edin lütfen. hata izini bul. programı!!!

//+------------------------------------------- --------------------+
//| test.mq4 |
//| Telif Hakkı 2018, MetaQuotes Yazılım A.Ş. |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+
#özellik telif hakkı "365_MA"
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı

harici int Period_MA = 365; //MA dönemi 1
dış çift Delta = 0.0010; // Bir siparişin hangi mesafede açılacağı

dize Symb; //Ticaret enstrümanının adı
//int Toplam; //sipariş sayısı

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----

//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
ObjectDelete("Obj_Label");
ObjectDelete("Obj_Label2");
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{



çifte ödül = teklif; //Mevcut fiyat
double CurrMAValue = iMA(Symb, Period(),Period_MA, 0,Mode_EMA, PRICE_CLOSE, 0); // hareketli ortalama değer
çift Fiyat2MA = fiyat - CurrMAValue; // MA'nın fiyata olan uzaklığı
datetime NextClose = Time(0) + Period()*60*2; //kapanma zamanı
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1; // dakikalar içinde kapanma zamanı

//int hata;



// grafikteki bilgi metninin güncellenmesi

ObjectSetText ("Obj_Label", "TF" + Period() + ", " + DoubleToStr(fiyat, 4) + ", onay işareti " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0 ], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " dk)", 10,
ObjectSetText ("Obj_Label2", "Delta " + DoubleToStr(Delta,4) + ", MA değeri " + DoubleToStr(CurrMAValue, 4) + ", MA'ya uzaklık " + DoubleToStr(Fiyat2MA, 4), 10, "Arial", koyu yeşil);
// fiyat analizi ve uyarılar

if ((MathAbs(Price2MA) < Delta) && // MA'ya olan uzaklık deltadan küçükse
(Fiyat > CurrMAValue) && // ve fiyat MA'nın üzerinde
(Open(0) > CurrMAValue+Delta)) // ve mevcut mum MA+Delta'dan daha yüksek açıldı
(
Uyarı ("Fiyat MA'ya yukarıdan yaklaştı");
)

if ((MathAbs(Price2MA) < Delta) && // MA'ya olan uzaklık deltadan küçükse
(fiyat < CurrMAValue) && // ve fiyat MA'nın altındadır
(Open(0) < CurrMAValue-Delta)) // ve mevcut mum MA-delta'nın altında açıldı
(

Uyarı ("Fiyat MA'ya aşağıdan yaklaştı");
)

dönüş(0);


//+------------------------------------------- --------------------+

Derlemeden sonra aşağıdaki hata

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Куда исчезли "Сообщения"? У меня в профиле исчез раздел...
Dosyalar:
Error.jpg  60 kb
 
berkley75 :

Merhaba!

Lütfen yardım edin lütfen. hata izini bul. programı!!!


Derlemeden sonra aşağıdaki hata

 //+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "365_MA"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern int     Period_MA = 365 ;   //Период МА 1
extern double Delta = 0.0010 ;   //На каком расстоянии открывать ордер

string Symb;                   //Название торгового инструмента
//int Total;                  //количество ордеров

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
//----
 
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
//----
   ObjectDelete ( "Obj_Label" );
   ObjectDelete ( "Obj_Label2" );
//----
   return ( 0 );
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
   
 

double prise = Bid ;                                                             //текущая цена
double CurrMAValue = iMA (Symb, Period (),Period_MA, 0 ,Mode_EMA, PRICE_CLOSE , 0 ); //значение скользящей средней
double Price2MA = price - CurrMAValue;                                           //расстояние о МА до цены
datetime NextClose = Time ( 0 ) + Period ()* 60 * 2 ;                                   //время до закрытия
int MinutesToNextClose = (NextClose - TimeCurrent ())/ 60 + 1 ;                     //время до закрытия в минутах

//int err;



//обновление текст информации на графике

ObjectSetText ( "Obj_Label" , "ТФ" + Period () + ", " + DoubleToStr (price, 4 ) + ", тик " + TimeToStr ( TimeCurrent (), TIME_SECONDS ) + ", O@" + TimeToStr ( Time [ 0 ], TIME_MINUTES ) + ", NC@" + TimeToStr (NextClose, TIME_MINUTES ) + " (" + MinutesToNextClose + " min)" , 10 ,
ObjectSetText ( "Obj_Label2" , "Дельта " + DoubleToStr (Delta, 4 ) + ", знач МА " + DoubleToStr (CurrMAValue, 4 ) + ", расст до МА " + DoubleToStr (Price2MA, 4 ), 10 , "Arial" , DarkGreen );
//анализ цены и выдача алертов

if (( MathAbs (Price2MA) < Delta) &&   // если расстоание до МА меньше дельты
   (Price > CurrMAValue) &&           // и цена выше МА
   ( Open ( 0 ) > CurrMAValue+Delta))     // и текущая свеча открылась выше, чем МА+дельта
( 
   Alert ( "Цена подощла к МА сверху" );
)

if (( MathAbs (Price2MA) < Delta) &&   // если расстояние до МА меньше дельты
   (price < CurrMAValue) &&           // и цена ниже МА
   ( Open ( 0 ) < CurrMAValue-Delta))     // и текущая свеча открылась ниже, чем МА-дельта
( 

   Alert ( "Цена подошла к МА снизу" );
)

   return ( 0 );
}
   
   
//+------------------------------------------------------------------+


Unutulmuş kaşlı ayraç

 
Lütfen, hacmin (lot) yanlışlıkla negatif bir değeri ayarlandığında Expert Advisor'daki FreeMarginCheck işlev hatası için geçersiz lot miktarını nasıl düzelteceğimi söyleyin. Test cihazında hata mesajı olmadan yanlış parti hakkında mesaj almak
 
Roman Sharanov :

Böyle bir soru, zikzakları türkiyeme entegre etmem gerekiyor (şimdi sap tarafından kabul ediliyor)

Gerçek şu ki, hindim OnCalculate()'i hiç kullanmıyor, her şey OnChartEvent() üzerinde

Zigzag'ı çalıştırabildiğime göre, bunu hesaplamak için oranları_toplam ve ön_hesaplanmışı nereden alabilirim?

oranları_toplam grafikteki çubukların sayısıdır . Çubuklar işlevi kullanılarak belirlenir.

prev_calculated - global olarak (veya statik olarak) bildirerek ve mevcut yinelemede gerçekten hesaplanan çubuk sayısını buna yazarak kendiniz bir analog yapın. Yani, gösterge değerlerinin başarılı bir şekilde hesaplanmasından sonra, içine mevcut çubukların sayısını yazmanız gerekir. Hesaplamalar başarısız olursa, bir sonraki yinelemede geçmişteki her çubuktaki gösterge değerlerini yeniden hesaplamak için sıfırlamak daha iyidir.

 

Ynt: Alekseu Fedotov

kıvırcık parantez nedir

 
berkley75 :

Ynt: Alekseu Fedotov

kıvırcık parantez nedir

Parantez içinde, sin(30) fonksiyonunun argümanı
kare dizi dizinde x[25]
geçersiz başlangıç()
{
küme parantezleri içinde Bildirim bloğu
}
 
Merhaba Lütfen bana "Piyasa İzleme" penceresinde belirli bir sembolü programlı olarak nasıl göstereceğimi/kaldıracağımı söyleyin.Teşekkürler!
 
STARIJ :
Parantez içinde, sin(30) fonksiyonunun argümanı
kare dizi dizinde x[25]
geçersiz başlangıç()
{
küme parantezleri içinde Bildirim bloğu
}
Teşekkürler, hala derlenmiyor! Sonunda bir kaşlı ayraç koysanız bile, kedi. Farkettim!!!
Neden: