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

 

Merhaba. MT4 için bir Expert Advisor yazmak istiyorum, görevlerinden biri M1'de bir saat içinde Fibo çizgileri çizmek. Yani, 11.00'in başlangıcında, yüksek ve alçaklara odaklanarak 10.00 - 10.59 aralığında çizgiler çizmelidir. Farklı yollar denedim, en son ne olduğunu ortaya koydu. Büyük olasılıkla, çizim seviyeleri için kodu kısaltabilirsiniz. Sorun, verilen alanda çizgiler çizmemesidir.

int timemin=TimeDakika(Zaman[59]==0);
int timehour=TimeHour(Time[1] && TimeDakika(Zaman[0]));
int timemin1=TimeDakika(Zaman[0]==0);
int timehour1=TimeHour(Time[1] && TimeDakika(Zaman[59]));

int max=iEn Yüksek(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLow(Symbol(),1,MODE_LOW,60,timehour);

çift çubuk=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Yeni seviye

eğer (barup)
{
WindowRedraw();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Süre[dk],Düşük[dk],Süre[zamansaat1],Yüksek[maks]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
eğer (bardn)
{
WindowRedraw();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Süre[maks],Düşük[maks],Süre[zamansaat1],Yüksek[dak]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //İlk fiyatı seçer
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2); //İkinci fiyatı seçer ve grafiği çizer
çift Fark=f2-f1;
string a11=DoubleToStr(f2-Diff*0.0,Rakamlar);
string a12=DoubleToStr(f2-Diff*0.236,Rakamlar);
string a13=DoubleToStr(f2-Diff*0.382,Rakamlar);
string a14=DoubleToStr(f2-Diff*0.50,Rakamlar);
string a15=DoubleToStr(f2-Diff*0.618,Rakamlar);
string a16=DoubleToStr(f2-Diff*1.0,Rakamlar);

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0);

bool a111=ObjectSetFiboDescription("FiboLevels",0,"0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1,"23.6");
bool a133=ObjectSetFiboDescription("FiboLevels",2,"%38,2");
bool a144=ObjectSetFiboDescription("FiboLevels",3,"50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4,"%61.8");
bool a166=ObjectSetFiboDescription("FiboLevels",5,"100.0%");

 
Georgy Sled :

Merhaba. MT4 için bir Expert Advisor yazmak istiyorum, görevlerinden biri M1'de bir saat içinde Fibo çizgileri çizmek. Yani, 11.00'in başlangıcında, yüksek ve alçaklara odaklanarak 10.00 - 10.59 aralığında çizgiler çizmelidir. Farklı yollar denedim, en son ne olduğunu ortaya koydu. Büyük olasılıkla, çizim seviyeleri için kodu kısaltabilirsiniz. Sorun, verilen alanda çizgiler çizmemesidir.

çift çubuk=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));

double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Yeni seviye

eğer (barup)
{
WindowRedraw();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Süre[dk],Düşük[dk],Süre[zamansaat1],Yüksek[maks]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
eğer (bardn)
{
WindowRedraw();
ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Süre[maks],Düşük[maks],Süre[zamansaat1],Yüksek[dak]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}

bu daha mı kısa bool barup=... WindowRedraw(); yine de yürütülecek - if öğesinden kaldırıldı

   ObjectDelete ( "FiboLevels" ); //------Новый уровень
   WindowRedraw ();

   if ( iOpen ( Symbol (), 60 , 1 )> iClose ( Symbol (), 60 , 1 ))
   {
       ObjectCreate ( 0 , "FiboLevels" , OBJ_FIBO , 0 , Time [min], Low [min], Time [timehour1], High [max]);
       ObjectSet ( "FiboLevels" , OBJPROP_COLOR , clrGreen );
   }
   else
   {
       ObjectCreate ( 0 , "FiboLevels" , OBJ_FIBO , 0 , Time [max], Low [max], Time [timehour1], High [min]);
       ObjectSet ( "FiboLevels" , OBJPROP_COLOR , clrRed );
   }

daha da kısa olabilir ... dosyama bakın

Dosyalar:
Proba.mq4  3 kb
 
Artyom Trishkin :

Lütfen kodu doğru yapıştırın.


Daha da net:


Kodu nasıl doğru bir şekilde ekleyeceğinizi açıkladığınız için teşekkür ederiz))) yardımcı oldu) Lütfen kontrol edin ve pliz'in kodu doğru yazmasına yardımcı olun, çok minnettar olacağım! (bugün televizyonum kaynadı Samsung nasıl düzeltileceğini öğrendi ama bu kodla baş edemiyorum ((((((((((((((((((
 
void fOrderOpen() {...
     if ( iTime ( Symbol (), PERIOD_M1 , 0 )) {
     if ((fMarketOrders( OP_BUY ))) { ....{
int irvbuy= OrderSend ( Symbol (), OP_BUY ,Lots, Ask , 3 , 0 , 0 , NULL , 12345 , 0 , 0 ); 

Beyler, neden her tik ile sipariş açıyorum? Bana bara nasıl konsantre olacağımı söyle?

 
Rustam Bikbulatov :

Beyler, neden her tik ile sipariş açıyorum? Bana bara nasıl konsantre olacağımı söyle?

ATS'de açıklanan şartlara göre açılışa yeşil ışık yakıyor ve bu şekilde açıyor.
Bu durumda birçok çözüm var. Her şey sizin için neyin daha kabul edilebilir olduğuna bağlı.
Bir sonraki emrin ancak fiyat sonuncudan N. puan kadar gitmişse açıldığı söylenebilir. 1 barda birden fazla sipariş açmayacağı söylenebilir. Vb..
İhtiyacınız olan koşulları yazın ve çekte uygulayın.

 
Konstantin Nikitin :

ATS'de açıklanan şartlara göre açılışa yeşil ışık yakıyor ve bu şekilde açıyor.
Bu durumda birçok çözüm var. Her şey sizin için neyin daha kabul edilebilir olduğuna bağlı.
Bir sonraki emrin ancak fiyat sonuncudan N. puan kadar gitmişse açıldığı söylenebilir. 1 barda birden fazla sipariş açmayacağı söylenebilir. Vb..
İhtiyacınız olan koşulları yazın ve çekte uygulayın.

Bunun yeri için      if ( iTime ( Symbol (), PERIOD_M1 , 0 )) { bir çubukta sipariş açmak için ne yazmalı?

 
Rustam Bikbulatov : Çocuklar, neden siparişlerim her tikte açılıyor? Bana bara nasıl konsantre olacağımı söyle?

Soru defalarca soruldu ve defalarca cevaplandı. Aramayı kullanma, örneğin burada

 
STARIJ :

Soru defalarca soruldu ve defalarca cevaplandı. Aramayı kullanma, örneğin burada

Sayesinde!

 

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?

 
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?

Burada kesinlikle yardımcı olacaktır. Ve bu konuda böyle bir uzman yok.