Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 246
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Teşekkür ederim. Deneyeceğim. İşe yarayacağından emin değilim)
1. Bir sipariş açarken, dizi meşgul değilse (muhtemelen = 0) Biletini diziye yazmanız gerekir, böylece numaralandırmada ondan bir rapor tutabilirsiniz.
2. Emir kapatıldıktan sonra (kapatılmayabilir), kapatılan emirlerin kar raporu başlatılır. Belirli bir kâra ulaşıldığında, yani: kâr tutarı + aynı kâr >= herkesten önce veya maksimum zararla (henüz karar verilmemiş) açılan bir açık emrin (emri 123 diyelim) kârı.
3. Aşağıdaki koşullar karşılanırsa: "kar miktarı + aynı kar >= açık bir emrin karı (123 numaralı emri diyelim)", 123 numaralı emir kapatılır ve dizi sıfırlanır (muhtemelen = 0 olur).
1. Bir danışman verdiğinizde, dikkate almak isteyip istemediğiniz açık ve kapalı emirleriniz var mı ve danışmanın işi her seferinde açık emir olmadan başlıyor ve daha önce kapatılmış emirleri hesaba katmıyor mu?
2. Hiç belli değil. Birden fazla emriniz var, bir emri kapatırken, kâr toplam toplam olarak kabul edilir ve kapatılan emrin kârına ilişkin veriler vardır. Ve kapanmamış siparişler için kar verileri var, hesaplanabiliyor. Neyle kıyaslanır. Örneğin, 3 sipariş var. 1 kapalı, 2 kapalı, 3 açık. Pr1, Pr2 ve hesaplanan Pr3 karları vardır. Neyi neye benzetiyoruz. Aynı zamanda, kapatılmamış bir sipariş için komisyon ve takasları dikkate almadığımızı anlıyoruz.
3. Hiç net değil, diziyi biletlerle sıfırlarsanız, o zaman nasıl? Piyasa emirleri piyasada kalacaktır. Onları nasıl kapatacaksınız?
Soru: Çubuğun Yüksek değeri nasıl korunur a ve düşük çubuk b onları bir gösterge hattı ile bağlamak için?
Bunun için iki ek dizi daha oluşturmam gerekir mi?
Evet. arabellek dizisi.
Yani, ZigZag'da olduğu gibi çıkıyor. Ve ikisinin çizmemesi için bazı özel işlevler uygulamanız mı gerekiyor?
1. Bir danışman verdiğinizde, dikkate almak isteyip istemediğiniz açık ve kapalı emirleriniz var mı ve danışmanın işi her seferinde açık emir olmadan başlıyor ve daha önce kapatılmış emirleri hesaba katmıyor mu?
2. Hiç belli değil. Birden fazla emriniz var, bir emri kapatırken, kâr toplam toplam olarak kabul edilir ve kapatılan emrin kârına ilişkin veriler vardır. Ve kapanmamış siparişler için kar verileri var, hesaplanabiliyor. Neyle kıyaslanır. Örneğin, 3 sipariş var. 1 kapalı, 2 kapalı, 3 açık. Pr1, Pr2 ve hesaplanan Pr3 karları vardır. Neyi neye benzetiyoruz. Aynı zamanda, kapatılmamış bir sipariş için komisyon ve takasları dikkate almadığımızı anlıyoruz.
3. Hiç net değil, diziyi biletlerle sıfırlarsanız, o zaman nasıl? Piyasa emirleri piyasada kalacaktır. Onları nasıl kapatacaksınız?
Tekrar )))
Açık siparişler var, diyelim ki 5 adet, hepsi olumsuz. Bunlardan ilki (123) çok 0,5'ti, ancak kırmızıya döndü. 0.1 lot ile yeni bir emir (456) açın, bu emrin biletini açın ve açılışta diziye yazın. Sonra aynı partiye sahip başka bir sipariş dizisi gelir, olumlu bir şey, olumsuz bir şey. Ama sipariş 123 negatif ve açık kalır. 456. siparişten sonra tüm kapatılan siparişlerin karı (aynı zamanda kapalıdır) 123. sıranın kârından büyük olduğu anda, ilk ve hala açık olduğu için 123. siparişi buluruz, kapatın ve diziyi sıfırlayın.
Birkaç açık sipariş var, belirli koşullar altında bir tane daha açıyoruz. Diyelim ki sipariş toplamı>=5
sipariş gönderimi (bilet 456)
sipariş başarıyla açılırsa
dizi boşsa
bilet 456 diziye yazılır
sipariş 456 kârla kapatıldı (artı veya eksi ne olursa olsun), ardından diğer siparişler açıldı ve kapatıldı, ancak bilet 456 dizide saklandı.
CalCloseProfi () - fonksiyon kapatılan siparişlerin karını kontrol eder
Sihirli, satın al, sat, bilet 456 (diziden alınan) ve üzeri siparişten başlayarak kapalı siparişleri yineler ve karlarını hesaplar
FirstOrder() - fonksiyon açık emirler arasında ilk açılışı arar (teoride 123'ü bulmalıdır))
eğer kar CalCloseProfi > FirstOrder ise, o zaman 123. sırayı kapatıp diziyi sıfırlıyoruz, böylece daha sonra koşullar sağlanırsa, oraya tekrar bir bilet yazabilir.
başka nasıl anlatılır bilmiyorum)
Bu fonksiyonların hangi koşullarda yürütüleceğini yazabilirim ama dizilere rastlamadım.
Açılırken OrederTicket gibi bir diziye bilgiyi nasıl sokacağımıza ve daha sonra nasıl alacağımıza dair bir örneğe ihtiyacımız var.
Bir Double dizisi kullanmanız, bir kısmına sihir yazmanız önerilir, böylece aynı hesap üzerinde farklı ayarlarla çalışırken karışmazlar (veya belki gerekli değildir, dizilerde güçlü değildir)
Şimdiden teşekkürler
Tekrar )))
Açık siparişler var, diyelim ki 5 adet, hepsi olumsuz. Bunlardan ilki (123) çok 0,5'ti, ancak kırmızıya döndü. 0.1 lot ile yeni bir emir (456) açın, bu emrin biletini açın ve açılışta diziye yazın. Sonra aynı partiye sahip başka bir sipariş dizisi gelir, olumlu bir şey, olumsuz bir şey. Ama sipariş 123 negatif ve açık kalır. 456. siparişten sonra tüm kapatılan siparişlerin karı (aynı zamanda kapalıdır) 123. sıranın kârından büyük olduğu anda, ilk ve hala açık olduğu için 123. siparişi buluruz, kapatın ve diziyi sıfırlayın.
Birkaç açık sipariş var, belirli koşullar altında bir tane daha açıyoruz. Diyelim ki sipariş toplamı>=5
sipariş gönderimi (bilet 456)
sipariş başarıyla açılırsa
dizi boşsa
bilet 456 diziye yazılır
sipariş 456 kârla kapatıldı (artı veya eksi ne olursa olsun), ardından diğer siparişler açıldı ve kapatıldı, ancak bilet 456 dizide saklandı.
CalCloseProfi () - işlev, kapatılan siparişlerin karını kontrol eder
Sihirli, satın al, sat, bilet 456 (diziden alınan) ve üzeri siparişten başlayarak kapalı siparişleri yineler ve karlarını hesaplar
FirstOrder() - fonksiyon açık emirler arasında ilk açılışı arar (teoride 123'ü bulmalıdır))
eğer kar CalCloseProfi > FirstOrder ise, o zaman 123. sırayı kapatıp diziyi sıfırlıyoruz, böylece daha sonra koşullar sağlanırsa, oraya tekrar bir bilet yazabilir.
başka nasıl anlatılır bilmiyorum)
Bu fonksiyonların hangi koşullarda yürütüleceğini yazabilirim ama dizilere rastlamadım.
Açılırken OrederTicket gibi bir diziye bilgiyi nasıl sokacağımıza ve daha sonra nasıl alacağımıza dair bir örneğe ihtiyacımız var.
Bir Double dizisi kullanmanız, bir kısmına sihir yazmanız önerilir, böylece aynı hesap üzerinde farklı ayarlarla çalışırken karışmazlar (veya belki gerekli değildir, dizilerde güçlü değildir)
Şimdiden teşekkürler
Tünaydın. Bana neden hata verdiğini söyle: dizi '.......' içinde aralık dışı (152,41)
bilet = OrderSend(Symbol(), OP_SELL, lastlot, Bid, Slippage, 0, tpl, Magic, 0, Red);
eğer (bilet<1)
{
Print("Satışa açılma hatası");
}
if (bilet >1 && SaveTick[1] <= 0 && SaveTick[0] == Magic)
{
FindTicket();
Print(" Bilet sipariş: ", FindTicket(), " Dizi sipariş: ", SaveTick[1], " Array Magic: ", SaveTick[0]);
}
int FindTicket()
{
int eski bilet;
int tik=0;
bilet=0;
ArrayResize( SaveTick, 2 );
for(int cnt = SiparişlerToplam ()-1; cnt>=0; cnt--)
{
if(OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
oldticket = OrderTicket();
if (eski bilet > bilet)
{
bilet = eski bilet;
tick = OrderTicket();
SaveTick[1] = tik;
SaveTick[0] = Büyü;
}
}
}
}
dönüş(tik);
}
Tünaydın. Bana neden hata verdiğini söyle: dizi '.......' içinde aralık dışı (152,41)
Kodu doğru şekilde yapıştırın, alt S veya simgeye göre ipucu kodu.
SaveTick dizisine neden ihtiyacınız var?
Yalnızca 2 dizi öğesi kullanıyorsunuz. Bir fonksiyonda bildirirseniz, bunları global veya statik değişkenlerle değiştirin.
2 değişken için bir dizi kullanmak mantıklı değil.
Ve görünüşe göre, SaveTick dizisinin boyutunu ayarlayan FindTicket() işlevini çağırmadan önce dizileri çağırıyorsunuz. Ve dizi sınırların dışında.