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
iCCI Sorusu
MQL4'te yeniyim ve önceki CCI değerini almaya çalışıyorum. 1 Shift değeriyle iCCI işlevini kullanmayı denedim, ancak bana önceki değeri vermiyor. Geçerli değeri bir değişkene kaydetmeden bunu nasıl yapardım? CCİ'nin gittiği yönü belirlemeye çalışıyorum.
Yardımın için teşekkürler.
Kod kene tabanlıdır, bu nedenle o sırada kene yoksa kod zaman kontrolünü kaçıracaktır. Sürekli çalışan bir tür döngü olmadan tam saniyeye ulaşabileceğinizi sanmıyorum.
EA Düzenleme ile Yardım
Bunu anlamaya çalışıyorum... Lütfen yardım eder misiniz?
MB Trading - Hisse Senedi Opsiyon Vadeli İşlemleri Forex Online İndirimli Ticaret
Bunu değiştirdim:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
dönüş(0);
İle:
int bilet = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
Uyku(1500);
OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);
=========================================
Bu hataları alıyorum:
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify işlevi için geçersiz bilet
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend hatası 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify hatası 4051
=====================
Bunu çözmeye çalışıyorum... Lütfen yardım eder misiniz?
MB Trading - Hisse Senedi Opsiyon Vadeli İşlemleri Forex Online İndirimli Ticaret
Bunu değiştirdim:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
dönüş(0);
İle:
int bilet = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0,"MyMEFx EA"+MagicNumber,MagicNumber,0,Arrow sColor);
Uyku(1500);
OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);
=========================================
Bu hataları alıyorum:
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify işlevi için geçersiz bilet
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend hatası 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify hatası 4051
=====================Sorununuz sipariş gönderim deyiminizdeki parti büyüklüğünüz (hacim) ile ilgilidir. hata nedeniyle -1 döndürür. doğrulanabilir bilet bir bilet numarası içermez, ordermodify işleviyle diğer hataları tetikleyen -1 hata bayrağını içerir. Kabul edilebilir bir değer içermesi için parti büyüklüğü değişkeni mylotsi'yi düzeltmelisiniz. ikinci olarak ordermodify rutinini çağırmadan önce bunun bir hata bayrağı içermediğini görmek için bilet değişkenindeki dönüş değerini kontrol etmelisiniz.
keit
EA Maksimum Konum
herhangi biri bu EA için maksimum konum ekleyebilir mi
veya sadece bir pozisyonda çalışmasına izin mi vereceksiniz?
şimdiden teşekkürler
kullansan iyi olur
MathAbs(NormalizeDouble(Teklif,4)-NormalizeDouble(pivot,4))<Delta*Nokta,
Delta=2...5
Birisi bana stoploss ve tp kodunu söyleyebilir mi? Bunu bu EA'ya eklemem gerekiyor.
bu gizli SL ve TP
int TakeProfit=20; // 20 pips take profit
int StopLoss =40; // 40 pips stoploss
int Slippage = 3;
int MagicNumber=1;
int i;
int start(){
//----- exit @ TP
if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
//------exit @ SL
if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
return (0);
}
//----------- Call functions
int ScanTrades()
{
int Tot = OrdersTotal();
int Numb = 0;
for(int cnt=0; cnt<=Tot-1; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++;
}
return(Numb);
}
double ProfitInPips()
{
RefreshRates();
double Prof=0;
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
if(OrderType()==0)
{
Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
}
if(OrderType()==1)
{
Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT);
}
}
}
return(Prof);
}
Diyelim ki birkaç Alış ve Satış emrim var
Yapmak istediğim şey:
- Açık işlemlerin başabaş fiyatından 5 pip daha fazla olan tüm işlemlerden "Sepet" çıkın
İlk for döngüsünde yapmaya çalıştığım şey, açık işlemlerin + takasın değerini bulmak ve onu pip'e dönüştürmek ve bu benim takıldığım kısım.
Birkaç fikir denedim ama çıkmaza girdim, sorunun ilk for ifadesinde olduğunu biliyorum ama çözemiyorum, herhangi bir yardım çok uygun
SymbolPL = 0;
OrdLots = 0;
Equity = 0;
MinPro = 5;
for(i = 0; i < OrdersTotal(); i++)
{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{if(OrderType() == OP_BUY) OrdLots += OrderLots();
if(OrderType() == OP_SELL) OrdLots -= OrderLots();
Equity += OrderProfit() + OrderSwap();
}
}
MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro);
//--- Count the open trades
int i;
int count=0;
for(i=0;i<OrdersTotal();i++)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber && OrderType()<2)
{ count++;
}
}
//--- find the profit in pips of the open trades
RefreshRates();
double profits=0,openPrice=0,points=0;
string sym="";
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
sym=OrderSymbol();
openPrice=OrderOpenPrice();
if(OrderType()==0)
{
profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT);
}
if(OrderType()==1)
{
profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT);
}
}
}
//--- Close when the open trades are 5 pips more than the breakeven price
if (count>1 && profits>MinPro )
{
for(i = OrdersTotal()-1; i >=0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum);
}
}
}
Şu şekilde hesaplanacak bir "equity_per_lotpoint" sabiti kullanabileceğinizi düşünüyorum:
[/PHP]
and then you'd have what you need after the first loop, with:
[PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ...
Teşekkürler Ralph ama takası kaçıracaktım ve takas karını/zararını sipariş kararının kapanışına dahil etmek istiyorum