Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 70
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 olanlar. Lütfen bana neyin yanlış olduğunu söyle. Şimdiden teşekkürler!
Merhaba!
buraya yazıyorum çünkü mq4'te kimse yok gibi görünüyor.
Lütfen bana neyi yanlış yaptığımı söyle? 2. seçenek çalışmıyor.
Merhaba! Lütfen MT4'te bir fonksiyon yazarken yardım edin. Hesap bakiyesini biliyorum (Hesap Bakiyesi), kaç tane işlem açacağımı biliyorum (örneğin, 9) Riski biliyorum (örneğin, Hesap Bakiyesinin %3'ü), eğer varsa ilk işlemin lotunu hesaplamam gerekiyor. sonraki her lot ikiye katlanacak ve tüm anlaşmalar birer birer üst üste gelecek.
İşte olanlar. Lütfen bana neyin yanlış olduğunu söyle. Şimdiden teşekkürler!
Merhaba!
buraya yazıyorum çünkü mq4'te kimse yok gibi görünüyor.
Lütfen bana neyi yanlış yaptığımı söyle? 2. seçenek çalışmıyor.
Vurgulanan: Bir atama - "=" olmalı ve bir karşılaştırmanız var - "==".
Merhaba !
Mt4'te robot yazmayı öğreniyorum, ikili seçeneklerle başlamaya karar verdim. En basit Uzman Danışmanı yazıyorum ve derleyici başa çıkamadığım bir sürü uyarı veriyor (
Yardım: "MQL4 guruları hakkında" =))))))
Şimdiden teşekkürler!)
İşte danışman kodu.
//+------------------------------------------- --------------------+
//| Bolinger_Bands_traider.mq4 |
//| Telif hakkı 2017, Penrov Nikolay |
//| vk.com/buzamonolit |
//+------------------------------------------- --------------------+
#özellik telif hakkı "Telif hakkı 2017, Petrov Nikolay"
#özellik bağlantısı "vk.com/buzamonolit"
#özellik sürümü "1.00"
#mülkiyet katı
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
extern int Bolinger_Bands = 20; // Bollinger Bantlarının Periyodu
dış çift Delta = 0.0003; // Bir siparişin hangi mesafede açılacağı
dize Symb; // Finansın adı. alet
int Toplam; // Sipariş sayısı
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int init()
{
//----
Initialize_Objects(0);
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman sıfırlama işlevi |
//+------------------------------------------- --------------------+
int tanım()
{
//----
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int başlangıç()
{
//----
çift fiyat = Teklif;
double CurrBol_High = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_UPPER, 0);
double CurrBol_Low = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_LOWER, 0);
double PriceBol_High = fiyat - CurrBol_High;
double PriceBol_Low = fiyat - CurrBol_Low;
datetime NextClose = Time[0] + Period()*60*2;
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;
int hata;
// Siparişler için muhasebe
Sembol=Sembol(); // fin.instr'nin adı.
toplam=0; // Sipariş sayısı
for(int i=1; i<=OrdersTotal(); i++) // Sipariş üzerinden döngü
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Sonraki Varsa
{ // Siparişlerin analizi:
eğer (OrderSymbol()!=Symb)devam ederse; // Bizim Fincemiz değil. alet
if (OrderType()>1) // Beklemede
{
Alert("Bekleyen bir sipariş algılandı. Expert Advisor çalışmıyor.");
dönüş(0); // başlangıçtan çık()
}
Toplam++; // Pazar sayacı kalabalık
if (Toplam>1) // Birden fazla sipariş yok
{
Alert("Çoklu piyasa emirleri. Expert Advisor çalışmıyor.");
dönüş(0); // başlangıçtan çık()
}
}
}
ObjectSetText("Obj_Label", "TF" + Period() + ", " + DoubleToStr(fiyat, 5) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0 ], TIME_MINUTES) + ", NC@" + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " dk)", 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label2", "Siparişler: " + Toplam + ", delta " + DoubleToStr(Delta,5) + ", MA'ya uzaklık:" + DoubleToStr(PriceBol_High, 5), 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label3", "Siparişler: " + Toplam + ", delta " + DoubleToStr(Delta,5) + ", MA'ya uzaklık:" + DoubleToStr(PriceBol_Low, 5), 10, "Arial", DarkGreen );
// fiyat analizi ve açılış emirleri
if ((MathAbs(PriceBol_Low) < Delta) && (fiyat > CurrBol_Low) && (Açık[0] > CurrBol_Low+Delta) && (Toplam<1))
{
if (OrderSend(Symbol(), OP_BUY, 1.00,Bid , 3, 0, 0,"BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Green) >0) Print("Opened OK");
başka
{
err=GetLastError();
print("hata(",hata,")");
dönüş(0);
}
Print("ÇAĞRI @ " + fiyat + " " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp in " + MinutesToNextClose);
}
if ((MathAbs(PriceBol_High) < Delta) && (fiyat < CurrBol_High) && (Açık[0] < CurrBol_Yüksek-Delta) && (Toplam<1))
{
if (OrderSend(Symbol(), OP_SELL, 1.00,Bid , 3, 0, 0,"BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Red) > 0) Print("Opened OK");
başka
{
err=GetLastError();
print("hata(",hata,")");
dönüş(0);
}
Yazdır ("PUT @ " + fiyat + " " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp in " + MinutesToNextClose);
}
//----
dönüş(0);
}
//+------------------------------------------- --------------------+
int Initialize_Objects(int Win) // Kullanıcı Fonksiyonu
{ // ..nesne oluşturma
ObjectCreate("Obj_Label",OBJ_LABEL, Win, 0,0); // Bir nesne oluştur
ObjectSet("Obj_Label", OBJPROP_CORNER, 0); // Köşeye yasla
ObjectSet("Obj_Label", OBJPROP_XDISTANCE, 13); // X koordinatı
eğer (Kazanç==0)
ObjectSet("Obj_Label",OBJPROP_YDISTANCE, 15);// Y koordinatı
başka
ObjectSet("Obj_Label",OBJPROP_YDISTANCE,15);// Y koordinatı
ObjectCreate("Obj_Label2",OBJ_LABEL, Kazan, 0,0); // Bir nesne oluştur
ObjectSet("Obj_Label2", OBJPROP_CORNER, 0); // Köşeye yasla
ObjectSet("Obj_Label2", OBJPROP_XDISTANCE, 13); // X koordinatı
eğer (Kazanç==0)
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);// Y koordinatı
başka
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);// Y koordinatı
ObjectCreate("Obj_Label3",OBJ_LABEL, Kazan, 0,0); // Bir nesne oluştur
ObjectSet("Obj_Label3", OBJPROP_CORNER, 0); // Köşeye yasla
ObjectSet("Obj_Label3", OBJPROP_XDISTANCE, 13); // X koordinatı
eğer (Kazanç==0)
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);// Y koordinatı
başka
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);// Y koordinatı
dönüş(0); // Kullanıcı işlevinden çık
}
Ve işte uyarılar. neyi sevmediğini anlayamıyorum
tür dönüşümü nedeniyle olası veri kaybı Bolinger_Bands_traider.mq4 51 24
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 76 35
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 76 227
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 77 43
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 78 43
'dize'den 'sayıya' örtük dönüştürme Bolinger_Bands_traider.mq4 85 71
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 93 23
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 93 91
'dize'den 'sayıya' örtük dönüştürme Bolinger_Bands_traider.mq4 99 72
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 107 23
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 107 91
0 hata(lar), 11 uyarı(lar), derleme süresi: 204 msn 1 12
İlköğretim. Hata GetLots() işlevidir. Tüm işlev.
Nasıl doğru yazacağımı söyler misin? Maksimum lottan yineleyerek bir döngü kullanarak hesaplamak istedim.
Nasıl doğru yazacağımı söyler misin? Maksimum lottan yineleyerek bir döngü kullanarak hesaplamak istedim.
mantık nerede? İlk siparişte izin verilen maksimum lotu koyarsınız ve sonraki her sipariş için artırırsınız. En hafif tabirle bunun çok makul olmadığını düşünmüyor musunuz?
Ayrıca, döngüde, tamamen mantıksız bir yöntemle birinci dereceden partiyi azaltırsınız ve bundan önce "hesaplanan" diğer siparişlerin çoğu değişmeden kalır, ayrıca bu değerler sınırlarının ötesine geçmez. bu işlev . O zaman neden onlar?
Döngü artışının gerçek bir sayı olamayacağı gerçeğinden bahsetmiyorum bile, bu bir sayaçtır, bir tam sayı olmalıdır. Ve lotun değerini bir sayaç olarak ayarlarsınız ve her yinelemeden birer birer çıkarırsınız. Bu büyük bir hatadır, çok ciddi bir hatadır.
Mantığı önce kafanızda düzeltin, ardından koda çevirmeye çalışın.
Ve işte uyarılar. neyi sevmediğini anlayamıyorum
tür dönüşümü nedeniyle olası veri kaybı Bolinger_Bands_traider.mq4 51 24
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 76 35
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 76 227
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 77 43
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 78 43
'dize'den 'sayıya' örtük dönüştürme Bolinger_Bands_traider.mq4 85 71
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 93 23
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 93 91
'dize'den 'sayıya' örtük dönüştürme Bolinger_Bands_traider.mq4 99 72
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 107 23
'sayı'dan 'string'e örtük dönüştürme Bolinger_Bands_traider.mq4 107 91
0 hata(lar), 11 uyarı(lar), derleme süresi: 204 msn 1 12
51 numaralı bir satır yazdırın, çünkü "Tür dönüşümü nedeniyle olası veri kaybı Bolinger_Bands_traider.mq4 51 24" hatasını anlamak için burada hesaplama yapmayın
Gerisi: "'sayıdan' 'string' Bolinger_Bands_traider.mq4 107 91'e örtük dönüştürme" ihtiyacınız olanı söylüyor:
sayısal değerleri, nesneyi oluşturduğumuz bir metin dizesine çevirin - örneğin bir metin dizesi
Dönem()
olmalı
DoubleToString(Periyot(),0)
sayısal değerleri, nesneyi oluşturduğumuz bir metin dizesine çevirin - örneğin bir metin dizesi
Dönem()
olmalı
DoubleToString(Periyot(),0)
Ve ne zamandan beri nokta tipi Double ?