Nasıl kodlanır? - sayfa 182

 

...

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)

Badguy:
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ürler
 
abundance:
Arkadaşı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/bolluk

iBarShift(..), grafiğinizdeki çubuk sayısını bulmanıza yardımcı olur, ardından Kapat veya Aç'ı kullanın.

 
Roger09:
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));

mladen:
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)
Dosyalar:
 
abundance:
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.

 
Styex:
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.
if (OrdersTotal() == 0)

{

//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.
Dosyalar:
 

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ı...???

int T=0;

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?

Dosyalar:
Neden: