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
...
Kodda bir hata değil
Araçlar->Geçmiş merkezine gidin ve ardından test etmek istediğiniz sembolden 1 dakikalık veri seçip indirin (%90 doğruluk için tek ihtiyacınız olan 1 dakikalık veridir, gerisini indirmenize gerek yoktur)
Merhaba Kodlayıcılar
MQL-Code'daki ilk adımlarımı hâlâ öğreniyorum.
dergide aşağıdaki mesajı almamın nedeni nedir:
Test oluşturucu:
eşleşmeyen veri hatası (hacim sınırı 159 2009.05.06 19 15 aşıldı)
kodda nereye bakmam gerekiyor?
teşekkürlerArkadaşım ve ben bir EA üzerinde çalışıyoruz. Bir aşamada (EA) belirli bir zamanda, örneğin 17:00 EST... vb. fiyatı okuması ve alması gerekiyor.
Herhangi bir kıdemli lütfen fiyat çubuklarını geriye doğru saymak yerine nasıl yapılacağını tavsiye edebilir mi? Belki zaten bunun için yazılmış bir fonksiyon vardır. Kibarca yardım. Hepinize teşekkür ederim ve Tanrı Korusun!
B rgds/bollukiBarShift(..), grafiğinizdeki çubuk sayısını bulmanıza yardımcı olur, ardından Kapat veya Aç'ı kullanın.
iBarShift(..), grafiğinizdeki çubuk sayısını bulmanıza yardımcı olur, ardından Kapat veya Aç'ı kullanın.
Teşekkürler Roger. Bu yardımcı oldu. Ve daha açık hale getirmediğim için üzgünüm. Hem Bid & Ask fiyatlarına ihtiyacımız var. Onları nasıl alırız? Aptalca bir soruysa mazur görün
B rgds/bolluk
Veri hatası
merhaba mladen
Hızlı yanıtın için teşekkürler.
Başka bir EA ile test ettiğimde iyi çalışıyor çünkü tickdata'dan bir sorun olmadığını düşünüyorum.
Özel Göstergede sorun olduğunu düşünüyorum.
Indi'yi takip edeceğim: AllAverages_v2.3
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF,"AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,0);
şimdi şu Mesajım var: iCustom işlevinde geçersiz dizin arabellek numarası
Bu iCustom nasıl doğru bir şekilde tanımlanır?
Merhaba mladen sorunu buldum
Bir parametreyi unuttum: Renk
doğru tanım:
double ALL_AVERAGES_0 = iCustom(NULL,ALL_AVERA_TF,"AllAverages_v2.3",ALL_AVERA_PERIOD,ALL_AVERA_SHIFT,ALL_AVERA_METHOD,ALL_AVERA_PRICE,ALL_AVERA_COLOR,0));
Kodda bir hata değildir Araçlar->Geçmiş merkezine gidin ve ardından test etmek istediğiniz sembolden 1 dakikalık veri seçip indirin (%90 doğruluk için tek ihtiyacınız olan 1 dakikalık veridir, gerisini indirmenize gerek yoktur)
Roger'a teşekkürler. Bu yardımcı oldu. Ve daha açık hale getirmediğim için üzgünüm. Hem Bid & Ask fiyatlarına ihtiyacımız var. Onları nasıl alırız? Aptalca bir soruysa mazur görün B rgds/bolluk
Grafiklerdeki tüm fiyatlar Tekliftir. Ask=Teklif+MarketBilgisi(Symbol(),MODE_SPREAD)*Puan;
İşlemleri Kısıtlama
Bu yüzden şablon üreten EA oluşturuculardan biriyle temel bir EA yazmaya başladım. EA şablonunun öncülünü indirmiş görünüyorum, ancak EA'nın maksimumda yalnızca bir ticarete girmesini sağlayacak bir yola ihtiyacım var. Şu anda esnaf üretmeye devam ediyor ve düşüşün saçma olmasına neden oluyor. İşte ticaret lotu kodu:
//Konumu kontrol et
bool IsTrade = Yanlış;
for (int i = 0; i < Toplam; ben ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = Doğru;
if(OrderType() == OP_BUY) {
//Kapat
//+------------------------------------------- -------------------+
//| Sinyal Başla(Çıkış Satın Al) |
//+------------------------------------------- -------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Sipariş = SIGNAL_CLOSEBUY;
//+------------------------------------------- -------------------+
//| Sinyal Sonu(Çıkış Satın Al) |
//+------------------------------------------- -------------------+
if (Sipariş == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Barlar != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Sinyal Uyarısı]", "[" + Symbol() + "] " + DoubleToStr(Teklif, Rakamlar) + " Satın Alma Kapat");
if (!EachTickMode) BarCount = Çubuklar;
IsTrade = Yanlış;
devam etmek;
}
//Sondaki durdurma
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Nokta * TrailingStop) {
if(OrderStopLoss() < Teklif - Nokta * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Çubuklar;
devam etmek;
}
}
}
} başka {
//Kapat
Herhangi biri yardımcı olabilirse, çok makbule geçer.
Bu yüzden şablon üreten EA oluşturuculardan biriyle temel bir EA yazmaya başladım. EA şablonunun öncülünü indirmiş görünüyorum, ancak EA'nın maksimumda yalnızca bir ticarete girmesini sağlayacak bir yola ihtiyacım var. Şu anda esnaf üretmeye devam ediyor ve düşüşün saçma olmasına neden oluyor. Herhangi biri yardımcı olabilirse, çok makbule geçer.
{
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 >= CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
}Teşekkürler OnTheRoad
Bu EA buldum, bazılarını anlamıyorum.
bool get_signal()
{
bool enable_trade = yanlış;
int trend_up = 0;
int trend_down = 0;
int i;
ArrayInitialize( TradeSign, false );
if( Çubuklar >= 100 ){
for( i = 0 ; i < DEF_MA_NUM ; i++ ){
Buf_MA[0][ i ] = calc_SMA(PERIOD_M30, MA_prm_1, i);
Buf_MA[1][ i ] = calc_SMA(PERIOD_M30, MA_prm_2, i);
Buf_MA[2][ i ] = calc_SMA(PERIOD_M30, MA_prm_3, i);
Buf_MA[3][ ben ] = calc_SMA(PERIOD_M30, MA_prm_4, ben);
Buf_MA[4][i ] = calc_SMA(PERIOD_M30, MA_prm_5, ben);
}
çift vRSI = iRSI( Symbol(), PERIOD_M5, RSI_period5, PRICE_CLOSE, 0 );
çift vRSI2 = iRSI( Symbol(), PERIOD_M1, RSI_period1, PRICE_CLOSE, 0 );
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] < Buf_MA[1]) && (Buf_MA[1] < Buf_MA[0])){
trend_up++;
}
}
if((trend_up > 3) && (vRSI <= RSI_lower) && (vRSI2 <= RSI_lower)){
TradeSign[SIG_Buy] = doğru;
enable_trade = doğru;
}
for( i = 0 ; i < DEF_MA_TYP ; i++ ){
if((Buf_MA[2] > Buf_MA[1]) && (Buf_MA[1] > Buf_MA[0])){
trend_down++;
}
}
if((trend_down > 3) && (vRSI >= RSI_upper) && (vRSI2 >= RSI_upper)){
TradeSign[SIG_Sell] = doğru;
enable_trade = doğru;
}
}
dönüş(enable_trade);
}
double calc_SMA( int zaman çerçevesi, int periyodu, int ofset)
{
çift vMA = 0;
çift toplam=0;
int i;
for( i = 0 ; ben < nokta ; i++ ){
toplam += iClose ( Symbol(), zaman çerçevesi, i + offset );
}
vMA = toplam / nokta;
dönüş(vMA);
}
"trendup>3" olan bir kısım var, bu diziden mi hesaplanıyor? Bir dizi nasıl çalışır, yani "trendup>3" verebilir mi? Bu, tek bir satırdan ortalamayı bilmek için mi (bu satırın yukarı veya aşağı gitmesi muhtemel)? Nasıl çalıştığını anlamıyorum.Hedef kâra ulaşıldığında uzmanlar nasıl sıfırlanır? martingale stratejisini kullanıyorum ama sırayla kura açmıyor...
örnek: lot 0.1, 0.2, 0.4, 0.8, 1.6
açık lotlar: 0.1, 0.2, 0.4 -> lot 0.4'te kar al ama sonraki lotlar 0.8 , 0.1, 0.2, 0.4...
yardımcı olabilecek var mı...???
for(int i=0;i<OrdersTotal();i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderComment()==Name_ExpertS)
{ T++;
if(OrderType()==OP_BUY) s=1;
if(OrderType()==OP_SELL) s=2;
Last=OrderOpenPrice();
}}
if (Lots<0.1) Lots=0.1;
for (int j=0;j<T;j++)
{
Lots=LotsUP[j];
}Kriterli Yüksek/Düşük
Bir mumun gerçek yüksek veya gerçek düşük olduğunu belirtmeden önce belirli şeyleri arayan bir göstergeyi kodlamaya çalışıyorum. Bu temel olarak kriterlerdir (açıklamaya yardımcı olması için bir grafik ekledim):
1. Önceki 20 kapanışın hepsinden daha düşük olan Kapat'ı arayın (ikinci ok bu noktadır), ardından (2) 12 çubuk sonra kapanış, önceki 12 kapanıştan daha yüksek olmalıdır (üçüncü ok). Bu yükseliş trendi, (3) önceki kapanıştan (dördüncü ok) daha düşük olan bir kapanış olana kadar devam edecektir.
iLowest işlevini çok fazla başarı olmadan kullanmaya çalışıyorum. En iyi seçeneğimin bir dizi kullanmak olduğunu düşünüyorum ama diziler hakkındaki bilgim sınırlı.
ArrayMinimum ve ArrayMaximum'un nasıl kullanılacağına dair herhangi bir fikir veya örnek var mı? Veya iLowest ve iHighest'i çalıştırmanın bir yolu varsa?