[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 347
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Sevgili uzmanlar, lütfen birisinin basit bir Uzman Danışman yapmak için bu kodu değiştirmesine yardım edin. Özü basittir - mevcut fiyatta belirtilen duraklarla Satış ve Bui 2 pozisyon açın. Ardından, alımlardan biri veya her ikisi birden tetiklendiğinde, yeni pozisyonlar açıyoruz vb. İşin özü basit gibi görünüyor ama yine de çalışmıyor.Şimdiden teşekkürler!
//+------------------------------------------------------------------+
//| 2DiffOrders.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern double lots=0.01;
extern int SL_in_pips;
extern int TP_in_pips;
int x2;
int init()
{
if(SL_in_pips<=MarketInfo(Symbol(),MODE_STOPLEVEL) && SL_in_pips>0)
{
SL_in_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);
Alert("Stoploss установлен слишком близко к цене открытия. Должен быть минимум ",MarketInfo(Symbol(),MODE_STOPLEVEL),"pt.");
}
if(TP_in_pips<=MarketInfo(Symbol(),MODE_STOPLEVEL) && TP_in_pips>0)
{
TP_in_pips=MarketInfo(Symbol(),MODE_STOPLEVEL);
Alert("Takeprofit установлен слишком близко к цене открытия. Должен быть минимум ",MarketInfo(Symbol(),MODE_STOPLEVEL),"pt.");
}
x2=1;
while(x2!=0)
{
if(OrderSend(Symbol(),0,lots,Ask,2,Bid-15*Point,Bid+15*Point,0)!=-1)
{
Alert("Ордер типа BUY успешно открыт");
OrderSend(Symbol(),1,lots,Bid,2,Ask+15*Point,Ask-15*Point,0);
x2=GetLastError();
if(x2==0)
Alert("Ордер типа SELL успешно открыт");
if(x2!=0)
Alert("Ордер типа SELL не открыт. Ошибка №: ",x2);
}else
{
x2=GetLastError();
if(x2!=0)
Alert("Ордер типа BUY не открыт. Ошибка №: ",x2);
}
}
//----
return(0);
Sadece tam olarak görünüyor, ancak makine gösteriminde son bit farklı değerler alabilir. Onlar. 2.9999, 3 veya 3.00000001
Bu tür yanlış anlamalardan kurtulmak için MQL, NormalizeDouble() işlevine sahiptir.
evet, NormalizeDouble() yardımcı olur, teşekkürler.
ama yine de, basit bir bölme gibi bunun nasıl mümkün olduğu açık değil. ve eğer 0,5 veya 0,9 veya hatta 0,31 tüm kurallar 0,1'e bölünürse.
ve burada açıkça 2.9 çıkıyor, net değil ... hesap makinesi daha doğru çözüyor :-)
yardımları için Reshetov ve splxgf'e teşekkürler.
ama yine de, basit bir bölme gibi bunun nasıl mümkün olduğu açık değil. ve eğer 0,5 veya 0,9 veya hatta 0,31 tüm kurallar 0,1'e bölünürse.
ve burada açıkça 2.9 çıkıyor, net değil ... hesap makinesi daha doğru çözüyor :-)
Hesap makineleri, sonuçları yuvarlamak için yerleşik işlevlere sahiptir. Ayrıca karar verirler çünkü kayan noktalı sayıları hesaplamak için aynı matematik yardımcı işlemcisini kullanırlar.
Merhaba!
Söyle bana, lütfen, kim yapabilir!
Kendim nasıl yapacağımı anlamıyorum.
Görev:
EA, günde bir kez 1-2 sipariş verir.
Değişkenin başlangıç değeri manuel olarak ayarlanır ve 1 ile 10 arasında bir değer alabilir.
Önceden ayarlanmış değişkeni 1'lik artışlarla - 10 değerine değiştirmek gerekir.
TP o gün yürütülmezse, danışmanın her iş gününde yalnızca 1'e kadar.
TP - değişkeni yürütüldüğünde, - 1 değeri döndürülür.
SL hesaplaması uygun değildir, çünkü bir veya iki tane olabilir ve değer günde sadece bir kez değiştirilebilir.
Onlar.
Değişken = 1
1. Gün SL - değişken =2
2. Gün SL - değişken =3
3. Gün SL - değişken =4
4. Gün TP - değişken =1
5. Gün SL - değişken =2
... vb.
Yardım!
Teşekkür ederim.
Sevgili uzmanlar, lütfen birisinin basit bir Uzman Danışman yapmak için bu kodu değiştirmesine yardım edin. Özü basittir - mevcut fiyatta belirtilen duraklarla 2 Satış ve Bui pozisyonu açın. Ardından, alımlardan biri veya her ikisi birden tetiklendiğinde, yeni pozisyonlar açıyoruz vb. İşin özü basit gibi görünüyor ama yine de çalışmıyor.Şimdiden teşekkürler!
Uzmanlar, lütfen yardım edin.
Bir periyotluk momentumu hesaplayan ve onu büyük bir periyotla bütünleştiren ve ardından bunu bir gösterge olarak gösteren bir kod var.
Ortaya çıkan eğrinin ortalamasını bulan ve bunu bir gösterge olarak görüntüleyen belirli bir periyoda sahip bir gösterge yazmanız gerekir.
Kodu ekliyorum:
#özellik göstergesi_separate_window
#özellik göstergesi_tamponları 1
#özellik göstergesi_color1 DodgerBlue
#özellik göstergesi_width1 2
//------- Göstergenin harici parametreleri ------------------------------------ -- ---+
harici int MTM_Period = 1;
//harici int MTM_Integr_Period = 1000;
//harici int Applied_Price = 0; // Kullanılan fiyat:
// 0 - PRICE_CLOSE
// 1 - PRICE_OPEN
// 2 - PRICE_HIGH
// 3 - PRICE_LOW
// 4 - PRICE_MEDIAN
// 5 - PRICE_TYPICAL
// 6 - PRICE_WEIGHTED
harici int NumberOfBars = 1000; // Hesaplanacak çubuk sayısı (0-tümü)
//------- Gösterge arabellekleri --------------------------------- ------ ------+
çift buf0[];
//+------------------------------------------- ------------------------------+
//| özel gösterge başlatma işlevi |
//+------------------------------------------- ------------------------------+
geçersiz init() {
SetIndexBuffer(0, buf0);
SetIndexEmptyValue(0, 0);
SetIndexLabel(0, "i-mtm_integr");
SetIndexStyle(0, DRAW_LINE);
}
//+------------------------------------------- ------------------------------+
//| özel gösterge sıfırlama işlevi |
//+------------------------------------------- ------------------------------+
geçersiz tanım() {
Yorum("");
}
//+------------------------------------------- ------------------------------+
//| özel gösterge yineleme işlevi |
//+------------------------------------------- ------------------------------+
geçersiz başlangıç() {
int LoopBegin, i,j, per=3;
çift mtm, mtmsum;
if (NumberOfBars==0) LoopBegin=Bars-1;
başka LoopBegin=NumberOfBars;
LoopBegin=MathMin(LoopBegin, Çubuklar-1);
for (i=LoopBegin; i>=0; i--) {
mtm=Kapat[i]-Kapat[MTM_Period+i];
mtmsum=mtmsum+mtm;
buf0[i]=mtmsum;
}
/* for (i=LoopBegin-per;i>=per;i--){
mtm=Kapat[i]-Kapat[MTM_Period+i];
mtmsum[i]=0+mtm;
for (j=per;j<=0;j--){
mtmsum[i]=0+mtmsum[i+j];
mtmsum[i]=mtmsum[i]/başına;
buf0[i]=mtmsum[i];
}
}*/
}
//+------------------------------------------- ------------------------------+
Uzmanlar, lütfen yardım edin.
Bir periyotluk momentumu hesaplayan ve onu büyük bir periyotla bütünleştiren ve ardından bunu bir gösterge olarak gösteren bir kod var.
Ortaya çıkan eğrinin ortalamasını bulan ve bunu bir gösterge olarak görüntüleyen belirli bir periyoda sahip bir gösterge yazmanız gerekir.
Sadece tam olarak görünüyor, ancak makine gösteriminde son bit farklı değerler alabilir. Onlar. 2.9999, 3 veya 3.00000001
Bu tür yanlış anlamalardan kurtulmak için MQL, NormalizeDouble() işlevine sahiptir.
NormalizeDouble() işlevi neden tüm Ask, Bid, Low vb. değerler için varsayılan olarak çalışmıyor?
Herkes bununla karşılaştı, sonra herkes "manuel" düzeltmek zorunda.. MT'nin kendisinin doğurduğunu okuyamaması garip.
Teşekkürler, verilerin start() içinde bulunacağına dair bir garanti var mı?
emin olmak için RefreshRates() kullanmayı deneyebilirsiniz - standart Metaeditor yardımındaki örneklere bakın
Expert Advisor optimizasyonunda "Rapor olarak kaydet" seçeneği var ama Internet Explorer'da "Giriş Parametreleri" görünmüyor,
html koduna bakılırsa, içinde mevcutlar. Genel olarak, bu parametreler uğruna optimizasyon başlatıldı.
Onları kaşifte nasıl göreceğini bilen var mı?
(ayrı bir komutla bir metin dosyasına kopyalamak hala mümkündür, ancak IE'de görmek tercih edilir)