Nasıl kodlanır? - sayfa 106

 

Bu fiyata işe yarıyor. Bir aptalın en yüksek ve en alçağını bulmak istiyor.

Lüks

 

Merhaba,

Bunu deneyebilirsiniz:

....

int highest=0, lowest=0, bar=WindowBarsPerChart();

for(int shift=0;shift<bar;shift++)

{

double indie=iCustom(.........,shift);

if(highest<indie) highest=indie;

if(lowest==0) lowest=indie;

if(lowest>indie) lowest=indie;

}

.....

not: bu kod mevcut açık mumu da hesaplar, sadece kapalı mumu hesaplamak istiyorsanız shift=1 kullanın.

Bu yardımcı olur umarım,

Ardie

 
:: iBarShift sizin için o gün/saatte başlayan çubuğu bulacaktır... veya o gün için bitiş çubuğunu da bulacaktır:saat... (yüksek/düşükünüzü bulmak için hangi zaman çerçevesine veya tabloya başlamak istediğinize bağlıdır).

int iBarShift(dize sembolü, int zaman çerçevesi, tarih saat, bool tam=yanlış)

sonraki...

:: iHighest ve iLowest sonuçlarını bulmak için bu çubuk konumlarını kullanın

int iHighest( string sembolü, int zaman çerçevesi, int tipi, int sayısı=WHOLE_ARRAY, int başlangıç=0)

int iLowest( string sembolü, int zaman çerçevesi, int tipi, int sayısı=WHOLE_ARRAY, int başlangıç=0)

:: sonuçlar ve bitti , bunda herhangi bir döngü kullanmayın!

 

Yeniden boyama göstergesini programlı olarak yenileyin

Merhaba,

Her x dakikada bir yeniden boyama göstergesini yenilemenin bir yolunu bulmaya çalışıyorum.

Şu anda onu yenilemenin tek yolu, grafikteki göstergeye tıklayıp ardından "tamam"a tıklamaktır. MQL4 kodu ile otomatikleştirebilir miyiz?

codersguru'nun sitesinde bir şey buldum, Programlı Olarak Grafiklerinizi Yenileyin | www.metatrader.info , ama benim için çalışmıyor gibi görünüyor. Veya deneyip farklı sonuç alan (çalışıyor) var mı?

Teşekkür ederim

 

İngilizcem için özür dilerim.

Sayı kez sayı koşulunun çubuk başına yalnızca bir kez doğru olmasını istiyorum. Bilgisayar çubuk başına birçok kez ekler. Ne yanlış yapıyorum?

 
IngvarDagmar:
İngilizcem için özür dilerim. Sayı kez sayı koşulunun çubuk başına yalnızca bir kez doğru olmasını istiyorum. Bilgisayar çubuk başına birçok kez ekler. Ne yanlış yapıyorum?

Bunun gibi bir işlev kullanın ...

bool NewBar() {

static datetime LastTime = 0;

if (Time[0] != LastTime) {

LastTime = Time[0];

return (true);

} else

return (false);

}

[/php]

Then put an if statement round your main code, like...

[php]

if(NewBar() == true){

// do the main processing here

}

Umarım yardımcı olur.

Lüks

 

Bu çok hoştu, Lux.

Bunu buldum:

Her çubuğu yalnızca bir kez işleyin - MQL4 forumu

Otomatikleştirilmiş 2008.01.15 18:54 Yeni bir çubuğun ilk işaretinde (yani önceki çubuk kapandıktan hemen sonra) kodunuzu çalıştırabilirsiniz.

İşte yeni bir çubuk oluşmuşsa DOĞRU döndürecek bir işlev:

// Bu işlev, bir çubuğu ilk işaretlediğinde, yani önceki çubuk kapandıktan sonra DOĞRU döndürür

bool NewBar()

{

if(ÖncekiÇubukZamanı<Zaman[0])

{

ÖncekiBarTime = Zaman[0];

dönüş(doğru);

}

dönüş(yanlış); // if - else ifadesinin yürütülmemesi durumunda

} EA'nızın başında datetime BeforeBarTime bildirmeniz gerekir...

o zaman kodunuzda sadece kullanabilirsiniz

eğer ( NewBar() )

{

...... burada bir çubuk kapandıktan sonra yürütülmesi gereken kod ....

} teşekkür ederim

otomatikfx@gmail.com

-------------------------------------------------- -

STATIC kullandığınızı fark ettim... Araştırdım... Global değişkene karşı STATIC kullanmanın avantajı nedir?

 

çoklu giriş

lütfen yardım et. Aşağıdaki giriş parametreleriyle bir ea oluşturmak için yardıma ihtiyacım var veya bulmak istiyorum. her biri hayır olan dört ayrı ticari giriş . lot, zararı durdur, sondaki dur, başa baş ve kar hedefi. Uzman danışman butonuna tıklandığında işlemler açılacaktır.

teşekkür ederim

 

Sondaki durdurma seçeneğiyle ilgili yardıma ihtiyacınız var

Bu EA'yı MQL4 forumunda buldum, oldukça ilginç bir EA.

Birisi, yalnızca benim belirlediğim isabetli kâr değerinden sonra etkinleştirmeyi ayarlayabilecek bir takip eden durdurma seçeneği eklemeye yardımcı olabilir mi?

themastermind2.mq4

Dosyalar:
 

Herkese selam..

Yazdığım EA ile ilgili bir sorunum var .. aslında, MACD göstergesine dayanan EA .. MACD 'n' şekline dönüştüğünde, Satış sonrası aç ve MACD 'u' şekline dönüştüğünde, EA açılacak Satın almak..

sorun şu ki, EA herhangi bir gönderiyi açmadı .. ayrıca bazı geriye dönük testler yaptıktan sonra, bu EA tarafından açık bir gönderi yok .. birisi kodda neyin yanlış olduğunu bulmama yardım edebilir mi?

işte kod..

extern double TakeProfit = 20;

extern double Lots = 0.1;

extern double StopLoss = 20;

extern double MagicNumber = 17384;

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

double MacdBuffer1[];

double MacdBuffer2[];

double MacdBuffer3[];

double MacdBuffer4[];

double MacdBuffer5[];

double MacdBuffer6[];

double MacdBuffer7[];

double MacdBuffer8[];

int init()

{

//----

//SetIndexBuffer(0, lag1_buffer);

//SetIndexBuffer(1, lag2_buffer);

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)

MacdBuffer1=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

MacdBuffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-1);

MacdBuffer3=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+1);

MacdBuffer4=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-2);

MacdBuffer5=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+2);

MacdBuffer6=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-3);

MacdBuffer7=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+3);

/*Alert( "MacdBuffer7 =",MacdBuffer7);

Alert( "MacdBuffer5 =",MacdBuffer5);

Alert( "MacdBuffer3 =",MacdBuffer3);

Alert( "MacdBuffer1 =",MacdBuffer1);

Alert( "MacdBuffer2 =",MacdBuffer2);

Alert( "MacdBuffer4 =",MacdBuffer4);

Alert( "MacdBuffer6 =",MacdBuffer6);*/

//----

int ticket_buy, ticket_sell, total;

total=OrdersTotal();

//MACD become 'u' shape

if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1

&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6)

{

if (total < 1) {

ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"scalp 1 min - buy",MagicNumber,0,Green);

if(ticket_buy>0)

{

if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

} else {

}

}

//MACD become 'n' shape

if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1

&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)

{

if (total < 1) {

ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"scalp 1 min - sell",MagicNumber,0,Red);

if(ticket_sell>0)

{

if(OrderSelect(ticket_sell,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

} else {

}

}

//----

return(0);

}

//+------------------------------------------------------------------+

umarım birisi sorunu çözmeme yardım edebilir.. kod programlamada iyi değilim.. teşekkürler..