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

 

Dratuti. Böyle bir panel nasıl yapılır?

 
Andrey Sokolov :

Dratuti. Böyle bir panel nasıl yapılır?

Kod tabanında bir örnek alın ve yeniden yapın, her zevke uygun panelleri olan birçok danışman var. Her şey arka planda başlar
 
Andrey Sokolov :

Dratuti. Böyle bir panel nasıl yapılır?

grafik nesneler.
 
 
trader781 :

Test cihazında bile birleşerek martingale başka bir domuz geğirmesi yazmaya devam ediyorum, aksi halde nasıl geyik yetiştirebiliriz.

Şu anda, önceki emir(ler) kapandıktan sonra bir sonraki emri açma olasılığından sorumlu olması gereken istenen bir parametre var.

2 senaryo yapmak gerekiyor

1) değer doğruysa

sipariş aç

biz işliyoruz

kapat

Ve yeni

2) eğer yanlışsa

sipariş açma

biz işliyoruz

Kapat

ve ExpertRemove yaparken iyi eğlenceler

bütün sorun bu iki koşulun birbirini dışlamasıdır, ancak bunları 1 Uzman Danışmanda birleştirmeniz gerekir çünkü

1) başlangıçta, değer ayarlanır

2) giriş ve işleme koşullarında, işleme için kabul edilir (doğruysa, açık)

3) kapattıktan sonra false olarak ayarlayın

İlgilenen varsa, seçenekleri duymaktan memnuniyet duyarım.
Mantık sıkıntıda.

Her şey basit:

  1. sipariş aç
  2. siparişin işlenmesi
  3. siparişi kapat
  4. durumunu kontrol et ve...
    • doğruysa, ExpertRemove()
  5. ve yeni bir şekilde
 
Artyom Trishkin :
Mantık sıkıntıda.

Her şey basit:

  1. sipariş aç
  2. siparişin işlenmesi
  3. siparişi kapat
  4. durumunu kontrol et ve...
    • doğruysa, ExpertRemove()
  5. ve yeni bir şekilde
Görünüşe göre bir şey doğru değil, eğer doğruysa - lahanayı kesmeniz gerekiyor, çalılara değil)
 
Vitaly Muzichenko :
Görünüşe göre bir şey doğru değil, eğer doğruysa - lahanayı kesmeniz gerekiyor, çalılara değil)
Yanılmışım. Yanlış. Şey, orada neyin kontrol edildiğini bilmiyorum ... Kahretsin, mantık kaldı.
Yoksa sadece sohbet etmek mi istiyorsunuz?
 

Lütfen bana söyle. Expert Advisor, terminalde emir açmaz. Derleme çalışıyor, çizelgelere göre siparişler açılmalıdır. Aslında, değiller. Kodu ekliyorum.

double Lot=NormalizeDouble((AccountFreeMargin()/100*Percent)/MarketInfo(Symbol(),MODE_MARGINREQUIRED),1);//Lot Sayısının Belirlenmesi
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,0);//geçerli çubuğun ana satırının MACD parametreleri
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,1);//önceki çubuğun ana satırının MACD parametreleri
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,2);//2 çubuk ofsetli ana hat MACD parametreleri
double StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//Parametreler Geçerli çubuğun ParabolikSAR parametrelerine dayalı izleme durdurma
double Önceki_StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//Önceki çubuğun ParabolicSAR parametrelerine göre StopLoss parametreleri
double PSARCurrent=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//Mevcut çubuğun ParabolikSAR parametreleri
double PSARPrevious=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//önceki çubuğun ParabolikSAR parametreleri
//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{
statik tarihsaat New_Time=TimeCurrent();// Geçerli çubuğun saati
bool New_Bar=false; // Yeni çubuk bayrağı
int bilet,toplam,cnt;
//------------------------------------------------ ----------------------------
{
New_Bar=yanlış; // Yeni çubuk yok
if(Time[0]==New_Time) // Zamanı karşılaştır
{
New_Bar=true; // Yeni bir çubuk aldım
if(New_Bar==false) // Bar yeni değilse..
dönüş; // ..sonra ayrılıyoruz
}
}
total=OrdersTotal();// Sipariş Sayısının Belirlenmesi
if(toplam<1)
{
//--- açık sipariş yok
if((AccountFreeMargin()/100*Percent)<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT)))
//Minimum lotu açmak için fon olup olmadığını kontrol etme
{
Print("Yetersiz bakiye. Ücretsiz fon = ",AccountFreeMargin());
dönüş;
}

//--- uzun pozisyon açma koşulu (AL)
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0)
&&
PSARCurrent<iOpen(NULL,0,1))
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,0,NULL,MAGICNUMBER,0,Yeşil);
if(bilet>0)//konum açıklığı kontrol ediliyor
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SATIN AL emri açıldı : ",OrderOpenPrice());
başka
Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş;
}
}

//--- kısa pozisyon açma koşulu (SAT)
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0)
&&
PSARCurrent>iOpen(NULL,0,1))
{
bilet=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,0,NULL,MAGICNUMBER,0,Kırmızı);
if(bilet>0)//konum açıklığı kontrol ediliyor
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES))
Print("SAT emri açık : ",OrderOpenPrice());
başka
Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş;
}
}
//--- "açık sipariş yok" bloğundan çık

}
//--- pazara doğru girmek önemli ama ondan doğru çıkmak daha önemli
for(cnt=0;cnt<toplam;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MAGICNUMBER && // sipariş sihirli numarası kontrol ediliyor
OrderSymbol()==Symbol()) // sipariş sembolü kontrol ediliyor
{
//--- uzun pozisyon açık
if(OrderType()==OP_BUY)
{
//--- kapatılmalı mı?
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0)
&&
PSARCurrent>iOpen(NULL,0,1))
{
//--- siparişi kapat ve çık
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
Print("Hata kapatma sırası ",GetLastError());
dönüş;
}
//------------------StopLoss ile siparişin değiştirilmesi
if(StopLoss>Önceki_StopLoss && StopLoss<iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Önceki_StopLoss,0,0,Mavi))
Print(" Sipariş değiştirme hatası . Hata kodu=",GetLastError());
başka
Print("Zararı Durdur emri fiyatı başarıyla değiştirildi.");
dönüş;
}
}

başka // kısa git
if(OrderType()==OP_SEL)
{
//--- kapatılmalı mı?
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0)
&&
PSARCurrent<iOpen(NULL,0,1))
{
//--- siparişi kapat ve çık
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print("Hata kapatma sırası ",GetLastError());
dönüş;
}
//-----------------StopLoss ile sipariş değişikliği
if(StopLoss<Önceki_StopLoss && StopLoss>iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Önceki_StopLoss,0,0,Mavi))
Print("Sıra değiştirilirken hata oluştu. Hata kodu=",GetLastError());
başka
Print("Zararı Durdur emri fiyatı başarıyla değiştirildi.");
dönüş;
}
}
}

//------------------------------------------------ -------------------------------------------------- -----

 
trader781 :

evet, daha kolay

ya bu seçeneği yedek olarak bırakırsanız ve böyle yaparsanız

durumunu kontrol et ve...
  • doğruysa, bot minimum etkinlikle, tercihen hiç etkinlik olmadan kilitlenir

yani, daha fazla çalışma için girişi nasıl engelleyebilirim

dönüş(0); ancak bu arzu edilen bir şey değildir - başka hiçbir şeyi işlemeyecektir.