Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 383

 
clubsmi :

insanlar lütfen bana MQL4'te yüzdeleri nasıl hesaplayacağımı söyleyin

örneğin x=10+3% programlı olarak nasıl yazılır?

Kılavuzda hiçbir şey bulamıyorum.



x=10*1.03
 
r772ra :


x=10*1.03



TAMAM! ama onları her seferinde yeniden hesaplamayacağım, yüzdeleri hesaplayan bir fonksiyona ihtiyacım var

y=3; // chilo her tik ile sürekli değişir

x=10+yP; // P yerine yüzdelere ihtiyacımız var. ama onları mql olarak yazamıyorum

 
if (Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend ( Symbol (), OP_BUY ,Lots_Typ, Ask , 5 , 0 , 0 );
}
if ( AccountProfit () > 50 )
{ 
OrderClose ( Symbol (), 5 , Ask , 0 );
}
Mantıksal kod zinciri:

1 Satır 7, satır 1'den yüksekse, satır 1 satır 6'dan daha yüksekse,
2 o zaman
3'te, Lot_Typ hacmiyle, kapanış fiyatında SL ve TP olmadan 5 piplik olası bir kayma olan bir satın alma emri açılır.

1 Bu hesabın potansiyel karı 50 dolardan fazla ise,
2 o zaman
3, sahip oldukları özelliklere (hacim, alım/satım, ...) bakılmaksızın tüm siparişleri kapatır.

Mantıksal zincir doğru bir şekilde oluşturulmuştur, ancak mantıksal zincirdeki kod değildir.

 OrderClose ( Symbol (), 5 , Ask , 0 );
Hata burada yatıyor.
Yukarıdaki koda göre mantıksal bir zincir oluşturursak, şunu elde ederiz:
Kapanış fiyatı ve olası 0 piplik bir kayma ile 5 lotluk bir emrin kapatılması.

Nasıl düzeltilir? Tavsiye lütfen.
 
clubsmi :



TAMAM! ama onları her seferinde yeniden hesaplamayacağım, yüzdeleri hesaplayan bir fonksiyona ihtiyacım var

y=3; // chilo her tikte değişmeye devam ediyor

x=10+yP; // P yerine yüzdelere ihtiyacımız var . ama onları mql olarak yazamıyorum

neye göre?
 
clubsmi :



TAMAM! ama onları her seferinde yeniden hesaplamayacağım, yüzdeleri hesaplayan bir fonksiyona ihtiyacım var

y=3; // chilo her tikte değişmeye devam ediyor

x=10+yP; // P yerine yüzdelere ihtiyacımız var. ama onları mql olarak yazamıyorum

 //+----------------------------------------------------------------------------+
double Percent( double x, double y) { return (x* 0.01 *y);}
//+----------------------------------------------------------------------------+

x - sayı, y - istenen yüzde

x sayısını ve ondan gereken y yüzdesini iletiyoruz, çıktıda x sayısının y yüzdesini alıyoruz

 
Link_x :
Mantıksal kod zinciri:

1 Satır 7, satır 1'den yüksekse, satır 1 satır 6'dan daha yüksekse,
2 o zaman
3'te, Lot_Typ hacmiyle, kapanış fiyatında SL ve TP olmadan 5 piplik olası bir kayma olan bir satın alma emri açılır.

1 Bu hesabın potansiyel karı 50 dolardan fazla ise,
2 o zaman
3, sahip oldukları özelliklere (hacim, alım/satım, ...) bakılmaksızın tüm siparişleri kapatır.

Mantıksal zincir doğru bir şekilde oluşturulmuştur, ancak mantıksal zincirdeki kod değildir.

Hata burada yatıyor.
Yukarıdaki koda göre mantıksal bir zincir oluşturursak, şunu elde ederiz:
Kapanış fiyatı ve olası 0 piplik bir kayma ile 5 lotluk bir emrin kapatılması.

Nasıl düzeltilir? Tavsiye lütfen.

Sevgili, Belgeleri dikkatlice okuyun,

özellikle

bool SiparişKapat ( int bilet, çift lot, çift fiyat, int kayma, renk Renk=CLR_NONE)
Bir pozisyonu kapatmak. İşlev başarıyla tamamlandığında TRUE döndürür. İşlev başarısız olduğunda YANLIŞ döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.
Seçenekler:
bilet - Siparişin benzersiz seri numarası.
çok - Kapatılacak lot sayısı.
fiyat - Kapanış fiyatı.
kayma sayfası - Puan cinsinden maksimum kaymanın değeri.
renk - Grafikteki kapat okunun rengi. Parametre yoksa veya değeri CLR_NONE'a eşitse, ok grafikte görüntülenmez.
Misal:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
    {
     OrderClose(order_id,1,Sor,3,Kırmızı);
     dönüş(0);
    }

 
r772ra :

Sevgili, Belgeleri dikkatlice okuyun,

özellikle

bool SiparişKapat ( int bilet, çift lot, çift fiyat, int kayma, renk Renk=CLR_NONE)
Bir pozisyonu kapatmak. İşlev başarıyla tamamlandığında TRUE döndürür. İşlev başarısız olduğunda YANLIŞ döndürür. Bir hata hakkında bilgi almak için GetLastError() işlevini çağırmanız gerekir.
Seçenekler:
bilet - Siparişin benzersiz seri numarası.
çok - Kapatılacak lot sayısı.
fiyat - Kapanış fiyatı.
kayma sayfası - Puan cinsinden maksimum kaymanın değeri.
renk - Grafikteki kapat okunun rengi. Parametre yoksa veya değeri CLR_NONE'a eşitse, ok grafikte görüntülenmez.
Misal:

Bütün bunlar biliyorum.
Özellikleri ne olursa olsun tüm siparişlerin kapanması için nasıl yapılır?
 
Link_x :
Bütün bunlar biliyorum.
Özellikleri ne olursa olsun tüm siparişlerin kapanması için nasıl yapılır?

Bilirsin, aferin

 OrderClose ( Symbol (), 5 , Ask , 0 ) //зто твое

OrderClose (order_id, 1 , Ask , 3 ,Red); // А зто пример из документации

// Найди отличие
 
artmedia70 :

x - sayı, y - istenen yüzde

x sayısını ve ondan istenen y yüzdesini iletiyoruz, çıktıda x sayısının y yüzdesini alıyoruz



neye ihtiyacın var, çok teşekkür ederim ... her şeyin ne kadar kolay olduğu ortaya çıktı, ama lanet olası yarım gün kafamı kırıyorum !! tekrar teşekkürler!

 
r772ra :

Bilirsin, aferin


Örneğimde: rastgele sipariş numarası, hacim - 5, kapanış fiyatı , kayma 0, ok yok.
Dokümantasyon örneğinde: sipariş numarasının order_id, hacim 1, kapanış fiyatına göre hesaplanması, kayma 3 ile ok kırmızıdır.

1 sipariş numarası hesaplaması var - sipariş numarası hesaplaması yok
2 cilt (1) - cilt (5)
3 kayma (3) - kayma (0)
4 kırmızı ok - ok yok

Farklılıklar bulundu.
Şimdi göreve dönelim.

Görev 1
İstisnasız tüm açık siparişleri kapatacak bir kod yazın.

Benim mantığım.
Böyle bir kod yazmak mümkündür, ancak soru ortaya çıkar: "Nasıl?".
1 - tüm açık siparişleri (toplam hacim, sipariş küme numarası, alış/satış, izin verilen kayma) izleyen bir kod oluşturulur.
2 - Siparişleri açan ve tüm bu siparişleri izleyen koda veri gönderen bir kod oluşturulur (bir çeşit veri tabanı oluşturulur).
3 - Belirli koşullar altında tüm siparişleri kapatan ve yalnızca "özel bir veritabanından" kullanılmayan verileri alan bir kod oluşturulur.
Veriler yeniden kullanılmaz.

Bunu yapabilirsiniz, ancak bence daha az hantal bir seçenek daha var.
Bu yüzden soruyorum: "Nasıl?".