[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 281
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
Ve aniden orada 60 için değil, 70 dolar için bir kodu olacak mı? :) ;)
Hey! Artı puanlarda bir oklava sırasını nasıl belirleyeceğimi söyle?
Bir alış pozisyonu açılırsa, pozisyon açılış fiyatı mevcut Alış fiyatından çıkarılmalıdır. Pozisyon satılıksa, mevcut Satış fiyatını açılış fiyatından çıkarın.
İzciler Bid veya Ask yerine OrderClosePrice() kullanabileceğinizi bildirdi
Sevgili forum kullanıcıları, bir değişkeni iCustom'dan ArrayMaximum'a nasıl aktaracağımı söyler misiniz?
int ArrayMaximum(çift dizi[], int sayı=BÜTÜN_ARRAY, int başlangıç=0)
Maksimum değere sahip öğeyi arayın. İşlev, dizideki maksimum öğenin konumunu döndürür.Arama bir değişken değil, bir süreçtir. Yani, bir dizi öğesine bir gösterge değeri atayabilir ve ardından ArrayMaximum'u kullanarak dizide en büyük öğeyi arayabilirsiniz.
Bunu yapmak için ArrayMaximum'un ne olduğunu okumanız gerekir.
int ArrayMaximum(çift dizi[], int sayı=BÜTÜN_ARRAY, int başlangıç=0)
Maksimum değere sahip öğeyi arayın. İşlev, dizideki maksimum öğenin konumunu döndürür.Arama bir süreçtir, bir değişken değil. Yani, bir dizi öğesine bir gösterge değeri atayabilir ve ardından ArrayMaximum'u kullanarak dizide en büyük öğeyi arayabilirsiniz.
Herkese iyi günler, bilgisayarın önünde oturuyorum ve kafamı klavyeye vuruyorum - koddaki bir hatayı düzeltemiyorum ... lütfen yeni başlayanlara yardım edin.
İşte benim baykuş kodum:
harici çift Kar Al = 500;
harici çift Lot = 0.1;
harici çift Stoploss = 30;
harici çift sondaki durdurma = 30;
harici dize Gösterge_1 = "SAR (SAR_STEP)";
harici çift SAR_Adım =0.02;
harici çift SAR_MaxStep =0.2;
harici çift GeneralShift = 0; // 0 - kapatılmamış çubuk, 1 - kapalı.
// Bunlar olacak değişkenlerdir.
// sırasında görüntülenir
// uzmanın çizelge ile bağlantıları
//+------------------------------------------- --------------------+
//| |
//+------------------------------------------- --------------------+
int başlangıç()
{
çift a;
intb;
int toplam, bilet, cnt;
// Programda kullanılacak değişkenler
if(çubuklar<100)
{
Print("100'den küçük barlar");
dönüş(0);
}
// Bu koşul, grafik geçmişinde 100'den fazla mum çubuğu olup olmadığını kontrol eder ve yoksa,
// hata mesajı verir. Dikkatinizi soruna çekmek için gerekli
// bilgi eksikliği
if(Kâr Al<5)
{
Print("Kar Al 5'ten az");
dönüş(0);
}
// Bu koşul, Kâr Al seviyesini kontrol eder (dış değişkenlerden birinin,
// kar alma seviyesini kontrol eder. olup olmadığını kontrol etmek için gerekli
// DC'niz için izin verilmeyen bir kar alma seviyeleri ayarladınız mı
// seviye. Sadece danışman çalışmazsa, açıkça bilmeniz için gereklidir.
// burada yanlış olan ne? koymanızı şiddetle tavsiye ederim.
toplam=SiparişToplam();
if(toplam<1)
// Aynı anda birkaç aynı pozisyonu açmamak için bu kontrol gereklidir. Mevcut değilse, diyelim ki, Uzman Danışmanınız stokastik aşırı alım bölgesindeyken tetiklenirse, tüm marjı kullanana kadar her kene için bir anlaşma yapacaktır.
// Bu nedenle, açılan pozisyon sayısını sınırlamak için şunu koyun
// sınırlayıcı. Eğer öyleyse, danışman belirli bir süreden daha fazlasını açmayacaktır.
// pozisyon sayısı <x
{
// açık sipariş tanımlanmadı
if(AccountFreeMargin()<(1000*Lots));
{
Print("Paramız yok. Serbest Marj = ", AccountFreeMargin());
dönüş(0);
}
// Başka bir yardımcı kod parçası. Hesapta yeterli bakiye yoksa,
// hata verecektir. Danışman çalışıyorsa bu parça tamamen işe yaramaz
// gerçek zamanlı, ancak geriye dönük test için çok kullanışlı.
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Kapat[0]); // BUY'ı aç
// Sonunda en ilginç kısma geldik. Bu X'ler yerine, eklemeniz gerekir
// satın almanın gerçekleştiği koşul.
{
bilet=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Puan,"yorum",16384,0,Yeşil);
// Satın alma koşulları bunlardır. Prensip olarak, burada hiçbir şeyin değiştirilmesi gerekmez, ancak genişletmek
// görünüm, burada yazılanları deşifre edeceğim. Burada ne satın alınacağı yazıyor
// (OP_BUY) mevcut sembol (EA'nın bağlı olduğu para birimi çifti),
// anlaşma boyutu Lotlar (başlangıçta bir değişken kümesi). Market fiyatları
// kayma 3 ve zararı durdur ve karı al olarak ayarlanmış
// başlangıçta, anlaşma bir "yorum" yorumuyla olacak, tanımlayıcı numarası 0 olacak ve
// satın alınan yer, grafikte tanımlayıcı kodlu yeşil bir ok olacak
// 16384
if(bilet>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SATIN AL emri açıldı : ",OrderOpenPrice());
}
else Print("SATIN AL emri açılırken hata oluştu : ",GetLastError());
dönüş(0);
}
// Bu blok sadece her şeyin yolunda gidip gitmediğini günlüğe kaydetmek için gereklidir.
// Veya, aksi takdirde, bir şeyin başarısız olmasına neden olan hatayı günlüğe kaydedin.
// Şimdi satış oranı için de aynısını yapın. YYYYYYYY - koşullar yerine
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Kapat[0])
{
bilet=SiparişGönder(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Kırmızı);
if(bilet>0)
{
if(OrderSelect(bilet,SELECT_BY_TICKET,MODE_TRADES)) Print(" SAT emri açıldı : ",OrderOpenPrice());
}
else Print("SATIŞ emrini açarken hata: ",GetLastError());
dönüş(0);
}
dönüş(0);
}
// Şimdi çıkış için. Burada da hiçbir şey değişmedi, sadece RRRRRRR - koşul
// SATIN AL, ZZZZZZZZ ile bir anlaşmayı kapat - SELL ile
for(cnt=0;cnt
//for'a yardımıyla tüm açık pozisyonlar sıralanır
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // açık pozisyonu kontrol edin
OrderSymbol()==Symbol()) // sembolü kontrol edin
{
if(OrderType()==OP_BUY) // uzun pozisyon açıldı
{
// kapatılmalı mı?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Kapat[0]) // SATIN AL'ı kapat.
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Teklif Noktası*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
dönüş(0);
}
}
}
}
else // Kısa pozisyonla aynı
{
// kapatılmalı mı?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Kapat[0])//kapat SAT
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // konumu kapat
dönüş(0); // çıkış
}
// takip eden durdurmayı kontrol et
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Nokta*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
dönüş(0);
}
}
}
}
}
}
}
dönüş(0);
//--------
}
//-------- son.
Acemi bir autotrader bir hatayı yakalamaz!!! LÜTFEN HERKESE YARDIMCI OLSUN!!!!!!!!!!!!!!!!!!!!
'}' - dengesiz parantezler C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Sarantos V101.mq4 (167, 1)