Kodlama konusunda yardıma ihtiyacınız var - sayfa 8

 

Jo

Bunun gibi bir şey:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
Merhaba,

Bir göstergede bir uyarıyı nasıl kodlayabilirim?

Örneğin, MACD[0]>MACD[1] olduğunda nasıl uyarı verilir?

Yardım için teşekkürler.

Jo
 
mladen:
Jo

Bunun gibi bir şey:

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

Teşekkürler Mladen, ama nerede?

mesajlarım vardı:

Kırmızı -If_function tanımlanmadı

Red-Alert_Semicolon bekleniyor

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

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Gümüş

#özellik göstergesi_renk2 Kırmızı

#özellik göstergesi_width1 2

//---- gösterge parametreleri

harici int FastEMA=12;

harici int YavaşEMA=26;

harici int SignalSMA=9;

//---- gösterge tamponları

çift MacdBuffer[];

çift SignalBuffer[];

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

//---- çizim ayarları

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

GöstergeDigits(Rakam+1);

//---- gösterge arabellek eşlemesi

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- DataWindow ve gösterge alt pencere etiketi için isim

GöstergeShortName("MACD("+HızlıEMA+","+YavaşEMA+","+SinyalSMA+")");

SetIndexLabel(0,"MACD");

SetIndexLabel(1,"Sinyal");

//---- başlatma tamamlandı

dönüş(0);

}

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

//| Hareketli Ortalamalar Yakınsama/Iraksaklık |

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

int başlangıç()

{

int limiti;

int counted_bars=IndicatorCounted();

//---- son sayılan çubuk yeniden sayılacak

if(counted_bars>0) counted_bars--;

limit=Barlar-sayılan_barlar;

//---- 1. tamponda sayılan macd

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

MacdBuffer=iMA(NULL,0,HızlıEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- 2. tamponda sayılan sinyal hattı

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

SignalBuffer=iMAOnArray(MacdBuffer,Barlar,SignalSMA,0,MODE_SMA,i);

//---- tamamlamak

dönüş(0);

}

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

 

Kodunuzdaki son dönüşten hemen önce (bu şekilde yalnızca geri kalan tüm işlemler yapıldığında yürütülmesini sağlarsınız)

Jovager:
Teşekkürler Mladen, ama nerede?

mesajlarım vardı:

Kırmızı -If_function tanımlanmadı

Red-Alert_Semicolon bekleniyor

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

#özellik göstergesi_separate_window

#özellik göstergesi_tamponları 2

#özellik göstergesi_color1 Gümüş

#özellik göstergesi_renk2 Kırmızı

#özellik göstergesi_width1 2

//---- gösterge parametreleri

harici int FastEMA=12;

harici int YavaşEMA=26;

harici int SignalSMA=9;

//---- gösterge tamponları

çift MacdBuffer[];

çift SignalBuffer[];

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

//| Özel gösterge başlatma işlevi |

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

int init()

{

//---- çizim ayarları

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

GöstergeDigits(Rakam+1);

//---- gösterge arabellek eşlemesi

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- DataWindow ve gösterge alt pencere etiketi için isim

GöstergeShortName("MACD("+HızlıEMA+","+YavaşEMA+","+SinyalSMA+")");

SetIndexLabel(0,"MACD");

SetIndexLabel(1,"Sinyal");

//---- başlatma tamamlandı

dönüş(0);

}

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

//| Hareketli Ortalamalar Yakınsama/Iraksaklık |

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

int başlangıç()

{

int limiti;

int counted_bars=IndicatorCounted();

//---- son sayılan çubuk yeniden sayılacak

if(counted_bars>0) counted_bars--;

limit=Barlar-sayılan_barlar;

//---- 1. tamponda sayılan macd

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

MacdBuffer=iMA(NULL,0,HızlıEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- 2. tamponda sayılan sinyal hattı

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

SignalBuffer=iMAOnArray(MacdBuffer,Barlar,SignalSMA,0,MODE_SMA,i);

//---- tamamlamak

dönüş(0);

}

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

Lütfen zaman çerçevesini "0" olarak kullanırken Sıfır bölme hatasını düzeltin

pivot_crazy.mq4 Birisi lütfen zaman çerçevesini "0" olarak kullanırken sıfır bölme hatasını düzeltebilir mi?

Teşekkürler.

Dosyalar:
 

Denemek. şimdi düzeltildi

privateer:
pivot_crazy.mq4 Birisi lütfen zaman çerçevesini "0" olarak kullanırken sıfır bölme hatasını düzeltebilir mi Teşekkürler.
Dosyalar:
 

Teşekkürler mladen bir cazibe gibi çalışıyor

mladen:
Denemek. şimdi düzeltildi

teşekkür ederim mladen bir cazibe gibi çalışıyor

 

bu konuda yardıma ihtiyacım var, martingale işlevi var ama düzgün çalışmıyor, örneğin bir kayıp martingale işlevinde kapatılan bir pozisyon, bir kayıpta kapatılan son pozisyonun lotlarını çarpmalıysa, ancak orada martingale yapan kodda bir hata var burada düzgün bir şekilde çalışmak için ea universalmacrossea.mq4

Dosyalar:
 

Bir kayıptan sonra yeni emir açmanın bu yolu martingale değildir + martingale açık pozisyonlarla çalışır

blondutrader:
bu konuda yardıma ihtiyacım var, martingale işlevi var ama düzgün çalışmıyor, örneğin bir kayıp martingale işlevinde kapatılan bir pozisyon, bir kayıpta kapatılan son pozisyonun lotlarını çarpmalıysa, ancak orada martingale yapan kodda bir hata var burada düzgün bir şekilde çalışmak için ea universalmacrossea.mq4
 

Her işlemde paramın %5'i ile işlem yapmak istediğimde lot miktarımı nasıl hesaplayabilirim?

 

güneş ışığı,

Bu işlevi kullanmayı deneyin:

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
Her işlemde paramın %5'i ile işlem yapmak istediğimde lot miktarımı nasıl hesaplayabilirim?