Nasıl kodlanır? - sayfa 210

 

Çok teşekkürler!!! cockeyedcowboy, bu gerçekten harikaydı!!

Şimdi hata mesajı uzakta!

Ama 2. gösterge çizilmedi ve neden bilmiyorum

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

 

İkinci tamponla ilgili bir sorununuz var çünkü hesaplar için veri yok.

Buffer_Mom , ardından Buffer_Ma içindeki TÜM öğeleri hesaplamaya çalışın.

Misal:

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

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

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

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

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

İyi şanlar.

 

Belirli bir çubuğun OHLC'sini bulma

Biri bana MQL kodunu kullanarak belirli bir çubuğun kapanış fiyatını nasıl öğrendiğimi söyleyebilir mi? Bir bara saatine kadar referans verebilir miyim?

yani: close_price_of_bar = Close("04:59:00 AM") ... keşke bu kadar kolay olsaydı!

Teşekkür ederim

 

selam millet!

tamam başka bir büyük sorunum var...

bu durum nasıl kodlanır:

yalnızca ilk kez uzun veya kısa girin

(yani, takip eden çok sayıda uzun sinyalim varsa, yalnızca ilk seferde girin)

Herkes bana bu konuda yardımcı olabilir ödeyeceğim

bu benim satın alma koşulum için basit kodum:

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
Biri bana MQL kodunu kullanarak belirli bir çubuğun kapanış fiyatını nasıl öğrendiğimi söyleyebilir mi? Bir bara saatine kadar referans verebilir miyim?

yani: close_price_of_bar = Close("04:59:00 AM") ... keşke bu kadar kolay olsaydı!

Teşekkür ederim

Bunu dene:

close_price_of_bar = iClose (Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

 

Al veya Sat

Herkese merhaba,

Her zaman birden fazla pozisyona açık olan EA Satın Al ve EA Sat'a sahibim. Sadece 1(bir) alış pozisyonuna ve 1(bir) satış pozisyonuna ve 1(bir) hesapta izin veren kodun nasıl değiştirileceği veya değiştirileceği konusunda yardım almak istiyorum.

SL ve TP, Fiyat Hedefini kullanacak, yani Alış fiyatı Fiyat Hedefine ulaştıysa, pozisyonu kapatacaktır. Satış fiyatı ile aynı.

Bu forumdaki kod uzmanlarının yardımını takdir ediyorum.

Teşekkür ederim.

=s21=

Dosyalar:
opensell.mq4  2 kb
 

Al ve sat

ayy...

İşte EA Satın Al.

Dosyalar:
openbuy.mq4  2 kb
 

Merhaba, sadece bir siparişin açılması gerekiyorsa, bir sonraki koşulu ekleyebilirsiniz: If (OrdersTotal()==0).

Yani SATIN AL emirleri için kurallarınız şöyle olacak:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
Bunu deneyin: close_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

harika! Tercümanın bir hatadan şikayet etmesini engellemek için fazladan 1 kapatma parantezi eklemek zorunda kaldım ama harika çalıştı.

Teşekkürler, Roger09

 
Avalanche2k:
Merhaba, sadece bir siparişin açılması gerekiyorsa, bir sonraki koşulu ekleyebilirsiniz: If (OrdersTotal()==0).

Yani SATIN AL emirleri için kurallarınız şöyle olacak:

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

Böylece, mevcut siparişiniz açılana kadar açılan ikinci-üçüncü-... emirleri almayacaksınız.

teşekkürler Çığ,

ama benim için bir çözüm değil, çünkü TP'm var, aksi duruma kadar beklemiyorum

Diğerleri fikir? PM at sana ödeyeyim

Neden: