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

 
Valeriy Yastremskiy # :
Böyle bir şey yok. Prosedürel bir dil değildir. Burada program kesinlikle yukarıdan aşağıya doğrudur. Ve işlev çağrıları, eğer öyleyse, döngülerin olduğu her şeye karar verir. ve OOP)
Anladım. Anladım. Açıklama için teşekkürler.
 
Tretyakov Rostyslav # :

Teşekkür ederim!

 
Tretyakov Rostyslav # :

Hey

     if ( OrderSelect (FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
       if (OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage, clrPink );
        }
    } 
   else 
     Print (" OrderSelect () вернул ошибку - ", GetLastError ());

Bilette siparişin karını aldım, -x'e ulaşıldığında kapatmak istiyorum.

Ve arka arkaya tüm siparişlerin kapanışını alıyorum.

Bana nasıl doğru yapılacağını söyle?

 
Alexander Avksentyev # :

Hey

Bilette siparişin karını aldım, -x'e ulaşıldığında kapatmak istiyorum.

Ve arka arkaya tüm siparişlerin kapanışını alıyorum.

Bana nasıl doğru yapılacağını söyle?

Bunu dene

 int min_ticket=FindTicketOrder();
     if ( OrderSelect (min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
       if (OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage, clrPink );
        }
    } 
   else 
     Print (" OrderSelect () вернул ошибку - ", GetLastError ());

Tüm işlevi yayınlayın, böylece ne yaptığınız netleşir.

 //+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки ;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev # :

Hey

Bilette siparişin karını aldım, -x'e ulaşıldığında kapatmak istiyorum.

Ve arka arkaya tüm siparişlerin kapanışını alıyorum.

Bana nasıl doğru yapılacağını söyle?

Yalnızca bir OrderClose çağrısı görürsem tüm siparişleri nasıl kapatıyorsunuz?

Bu kodun nereden çağrıldığı pek belli değil... Robotun algoritması da belli değil...
 
Mihail Matkovskij # :

Yalnızca bir OrderClose çağrısı görürsem tüm siparişleri nasıl kapatıyorsunuz?

Açıldığı anda siparişi kapatır

 
Tretyakov Rostyslav # :
İstediğin bu değildi - bu bir örnek. Yarı otomatik ticaret için bir danışman yaptım.


kendin yazmak istediğin şey

Eğer yardım edebilirsem.

Bu yüzden, böyle bir Hızlı Bekleyen Siparişler Paneli EA için neye ihtiyacım olduğunu daha spesifik olarak yazacağım, bu listeden kısmen kod parçalarını buldum (yüzde 20), ancak gerisi sizden istenmeli meslektaşlarım.


1) kabuk: grafikte düğmeleri olan bir puan tablosu olarak görüntüleyin: BUY_lp(___pip olarak daha düşük ASK), SELL_hp (___pip olarak daha yüksek BID) - pip olarak sayı puan tablosuna manuel olarak girilir, BUY_lt (____saniyeye kadar daha düşük ASK),SELL_ht ( ____saniyeye kadar daha yüksek BID ) - sayı puan tablosuna manuel olarak girilir, CLOSE_satın alır, CLOSE_sells - tüm siparişleri kapatır.

a) grafikte bir düğme oluşturmak için kod; burada bir arka plan nesnesi olarak çetele;

b) bu puan tablosuna değerleri girmek için kod (pip, saniye) bunun için özel alanlar;

c) pip değerinin belirli bir hafıza dosyasına kaydedilmesi, burada düğmeye basıldıktan sonra fiyat sabitlenir ve piyasaya girmeniz gereken fiyat için pip sayısı eklenir / çıkarılır;

d) seçilen "saniye cinsinden" süre için fiyatın minimum / maksimum değerinin sürekli olarak hesaplandığı belirli bir bellek dosyasına saniye değerini kaydetme;

2) içeride: yürütme.

a) BUY_lp veya SELL_hp düğmesine bastıktan sonra mevcut fiyatla karşılaştırmak için pip cinsinden değeri ve sabit fiyatı dosyadan okumak;

b) BUY_lt veya SELL_ht butonuna bastıktan sonra saniye cinsinden değeri ve değişen maksimum/minimum fiyatı dosyadan okuyarak cari fiyat ile karşılaştırmak;

c) cari fiyat gerekli değere eşit olduğunda - piyasaya girin (bir emir açın);

d) emri veya tüm emirleri kapatma düğmesi, yürütme moduna bağlı olarak düğme, "pip ile" bir giriş varsa farklı çalışmalıdır, buna göre, benzer sayıda pip ile kapattıktan sonra, kapanış "kapat" tıklandığında fiyat "daha iyi" yönde farklılık göstermelidir, ancak "saniye olarak" ise, belirtilen süre için en iyi fiyat hesaplanmalıdır (bu fiyat bekleniyor, ancak düğmeye basıldığı anda daha düşük/yüksek değil). basılır).

 
Alexander Avksentyev # :

Açıldığı anda siparişi kapatır

İyi evet. Yayılma nedeniyle girişten sonra kâr her zaman negatiftir... x'in değerini düşürmeyi deneyin.

Ve puan cinsinden kâr hesaplamak için kendi işlevinizi yapmak daha iyidir (tabii ki, mevduat para biriminde ayarlamanız gerekmiyorsa).
 
Mihail Matkovskij # :

İyi evet. Yayılmanın varlığından dolayı giriş anında kâr her zaman negatiftir... x'in değerini düşürmeye çalışın.

-x yayılmadan daha az, çıktısı Yazdırmaya

 if (OrderProfit()<=-x);

koşullar eşleşirse doğru olacaktır. Kapat komutu ekliyorum. hemen kapanır

 
Mihail Matkovskij # :

İyi evet. Yayılma nedeniyle girişten sonra kâr her zaman negatiftir... x'in değerini düşürmeyi deneyin.

Ve puan cinsinden kâr hesaplamak için kendi işlevinizi yapmak daha iyidir (tabii ki, mevduat para biriminde ayarlamanız gerekmiyorsa).

Siz de puan verebilirsiniz, pek bir fark yok. sadece kolaylaştırmak istedim