Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret 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
Seçmek için seçenekler ekleme şansı var mı?
Örneğin,
Ayrı ayrı al ve ayrı sat
Modifikasyon: BE hepsi 0, +1 veya +2 pip satın al veya hepsini 0, 1 veya 2 pip sat?
Mümkün mü?
be.mq4
Merhaba Mladen,
Birisi bana neyi yanlış yaptığımı söyleyebilir mi, çoğunlukla FX Gen kullanarak snippet'ler ve kodlar kullanarak mq4 derleyicisinden ve çevrimiçi forumlardan örnekler kullanarak yazıyorum. Daha kolay ticaret için stratejimi kodlamaya çalışıyorum, son siparişi başarıyla seçebildim bu kodu kullanarak.
geçersiz OpenNewTrade()
{ datetime lastTime = 0;
int lastTicket = -1; // Hiçbiri açık değil.
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && OrderOpenTime() >= lastTime && OrderTicket() > lastTicket )
{
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
if (OrderType() == OP_BUY || OrderType() == OP_SELL
&& Sor - OrderOpenPrice() >= Grid*PipValue*Point
{
{
BuySipariş();
}
}
if (OrderType() == OP_BUY || OrderType() == OP_SELL
&& OrderOpenPrice() - Teklif >= Grid*PipValue*Puan
{
{
SellOrder();
}
}
}
dönüş(sonTicket);
}
başka
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
Bu koda bir göz atabilir misiniz, tarih ve sipariş biletini kullanarak önce en eski siparişi silmeye çalışıyorum, örneğin açık sipariş>2 ise en eski siparişi sil.
//------------------------------------------------ -------------
// Etasoft Inc. Forex EA ve Script Generator sürüm 4.1 EA
//------------------------------------------------ -------------
// Anahtar Kelimeler: MT4, Forex EA oluşturucu, EA oluştur, uzman danışman geliştirici
#özellik telif hakkı "Telif hakkı © 2011, Etasoft Inc. Forex EA Jeneratör v4.1"
#özellik bağlantısı
#Dahil etmek
#Dahil etmek
// dışa aktarılan değişkenler
harici int OrderId = 1;
extern int Kayma = 2;
dış çift Lot = 0,01;
extern int MaxOrdersAllowed = 2;// satın alma ve satma izin verilir
harici int Izgara = 10; // siparişleri açmak için pip cinsinden toplam mesafe
extern string EAComment = "564 test";
// yerel değişkenler
çift PipValue=1; // bu değişken 5 basamaklı aracıları desteklemek için burada
bool Sonlandırılmış = yanlış;
string LF = "\n"; // bunu, satır beslemelerine ihtiyaç duyduğunuz özel veya yardımcı program bloklarında kullanın
int NDigits = 4; // Flex tipi bloklarda çoğunlukla NormalizeDouble için kullanılır
int NesneSayısı = 0; // grafikte oluşturulan tüm nesnelerin sayısı, benzersiz adlara sahip nesnelerin oluşturulmasına izin verir
int akım = 0;
int init()
{
NDigits = Rakamlar;
if (yanlış) ObjectsDeleteAll(); // grafiği temizle
Yorum(""); // grafiği temizle
}
// Uzman başlangıç
int başlangıç()
{
if (Çubuk < 10)
{
Comment("Yeterli çubuk yok");
dönüş (0);
}
if (Sonlandırılmış == doğru)
{
Comment("EA Sonlandırıldı.");
dönüş (0);
}
OnEveryTick1();
}
geçersiz OnEveryTick1()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
IfOrderDoesNotExist2();
IfOrderDoesNotExist4();
MaksimumSipariş();
}
geçersiz IfOrderDoesNotExist2()
{
bool var = yanlış;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
var = doğru;
}
}
başka
{
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
if (varsa == yanlış)
{
BuyPendingOrder();
}
}
geçersiz IfOrderDoesNotExist4()
{
bool var = yanlış;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
var = doğru;
}
}
başka
{
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
if (varsa == yanlış)
{
SellPendingOrder();
}
}
void BuyPendingOrder()
{
int sona erme = TimeCurrent() + 60 * 0;
double fiyat = NormalizeDouble((Ask-((Ask-Bid)/2))), NDigits) + Grid*PipValue*Point;
çift SL = fiyat - 0*PipValue*Puan;
if (0 == 0) SL = 0;
çift TP = fiyat + 0*PipValue*Puan;
eğer (0 == 0) TP = 0;
if (0 == 0) sona erme = 0;
int bilet = OrderSend(Symbol(), OP_BUYSTOP, Lot, fiyat, Slippage, SL, TP, EAComment, OrderId, son kullanma, Mavi);
if (bilet == -1)
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
}
geçersiz SellPendingOrder()
{
int sona erme = TimeCurrent() + 60 * 0;
double fiyat = NormalizeDouble((Bid+((Ask-Bid)/2)), NDigits) - Grid*PipValue*Point;
çift SL = fiyat + 0*PipValue*Puan;
if (0 == 0) SL = 0;
çift TP = fiyat - 0*PipValue*Puan;
eğer (0 == 0) TP = 0;
if (0 == 0) sona erme = 0;
int bilet = OrderSend(Symbol(), OP_SELLSTOP, Lot, fiyat, Slippage, SL, TP, EAComment, OrderId, son kullanma, Red);
if (bilet == -1)
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
}
void MaximumOrder()
{
if (MaksOrdersAllowed> 0)
{
OrderCount();
}
}
geçersiz OrderCount()
{
int sayı = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
if (OrderMagicNumber() == OrderId)
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
say++;
}
}
başka
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
if (sayım > MaxOrdersAllowed )
{
SilOlestOrder();
}
}
geçersiz DeleteOldestOrder()
{
tarihsaat lastTime = 0;
int lastTicket = -1; // Hiçbiri açık değil.
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && OrderOpenTime() < lastTime && OrderTicket() < lastTicket )
{
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
if (OrderType() == OP_BUY || OrderType() == OP_SELL )
{
{
OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),Kayma,Kırmızı);
}
}
}
dönüş(sonTicket);
}
başka
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
int tanım()
{
if (yanlış) ObjectsDeleteAll();
}
Merhaba Mladen,
Birisi bana neyi yanlış yaptığımı söyleyebilir mi, çoğunlukla FX Gen kullanarak snippet'ler ve kodlar kullanarak mq4 derleyicisinden ve çevrimiçi forumlardan örnekler kullanarak yazıyorum. Daha kolay ticaret için stratejimi kodlamaya çalışıyorum, son siparişi başarıyla seçebildim bu kodu kullanarak.
geçersiz OpenNewTrade()
{ datetime lastTime = 0;
int lastTicket = -1; // Hiçbiri açık değil.
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && OrderOpenTime() >= lastTime && OrderTicket() > lastTicket )
{
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
if (OrderType() == OP_BUY || OrderType() == OP_SELL
&& Sor - OrderOpenPrice() >= Grid*PipValue*Point
{
{
BuySipariş();
}
}
if (OrderType() == OP_BUY || OrderType() == OP_SELL
&& OrderOpenPrice() - Teklif >= Grid*PipValue*Puan
{
{
SellOrder();
}
}
}
dönüş(sonTicket);
}
başka
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
Bu koda bir göz atabilir misiniz, tarih ve sipariş biletini kullanarak önce en eski siparişi silmeye çalışıyorum, örneğin açık sipariş>2 ise en eski siparişi sil.
//------------------------------------------------ -------------
// Etasoft Inc. Forex EA ve Script Generator sürüm 4.1 EA
//------------------------------------------------ -------------
// Anahtar Kelimeler: MT4, Forex EA oluşturucu, EA oluştur, uzman danışman geliştirici
#özellik telif hakkı "Telif hakkı © 2011, Etasoft Inc. Forex EA Jeneratör v4.1"
#özellik bağlantısı
#Dahil etmek
#Dahil etmek
// dışa aktarılan değişkenler
harici int OrderId = 1;
extern int Kayma = 2;
dış çift Lot = 0,01;
extern int MaxOrdersAllowed = 2;// satın alma ve satma izin verilir
harici int Izgara = 10; // siparişleri açmak için pip cinsinden toplam mesafe
extern string EAComment = "564 test";
// yerel değişkenler
çift PipValue=1; // bu değişken 5 basamaklı aracıları desteklemek için burada
bool Sonlandırılmış = yanlış;
string LF = "\n"; // bunu, satır beslemelerine ihtiyaç duyduğunuz özel veya yardımcı program bloklarında kullanın
int NDigits = 4; // Flex tipi bloklarda çoğunlukla NormalizeDouble için kullanılır
int NesneSayısı = 0; // grafikte oluşturulan tüm nesnelerin sayısı, benzersiz adlara sahip nesnelerin oluşturulmasına izin verir
int akım = 0;
int init()
{
NDigits = Rakamlar;
if (yanlış) ObjectsDeleteAll(); // grafiği temizle
Yorum(""); // grafiği temizle
}
// Uzman başlangıç
int başlangıç()
{
if (Çubuk < 10)
{
Comment("Yeterli çubuk yok");
dönüş (0);
}
if (Sonlandırılmış == doğru)
{
Comment("EA Sonlandırıldı.");
dönüş (0);
}
OnEveryTick1();
}
geçersiz OnEveryTick1()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
IfOrderDoesNotExist2();
IfOrderDoesNotExist4();
MaksimumSipariş();
}
geçersiz IfOrderDoesNotExist2()
{
bool var = yanlış;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
var = doğru;
}
}
başka
{
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
if (varsa == yanlış)
{
BuyPendingOrder();
}
}
geçersiz IfOrderDoesNotExist4()
{
bool var = yanlış;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
var = doğru;
}
}
başka
{
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
if (varsa == yanlış)
{
SellPendingOrder();
}
}
void BuyPendingOrder()
{
int sona erme = TimeCurrent() + 60 * 0;
double fiyat = NormalizeDouble((Ask-((Ask-Bid)/2))), NDigits) + Grid*PipValue*Point;
çift SL = fiyat - 0*PipValue*Puan;
if (0 == 0) SL = 0;
çift TP = fiyat + 0*PipValue*Puan;
eğer (0 == 0) TP = 0;
if (0 == 0) sona erme = 0;
int bilet = OrderSend(Symbol(), OP_BUYSTOP, Lot, fiyat, Slippage, SL, TP, EAComment, OrderId, son kullanma, Mavi);
if (bilet == -1)
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
}
geçersiz SellPendingOrder()
{
int sona erme = TimeCurrent() + 60 * 0;
double fiyat = NormalizeDouble((Bid+((Ask-Bid)/2)), NDigits) - Grid*PipValue*Point;
çift SL = fiyat + 0*PipValue*Puan;
if (0 == 0) SL = 0;
çift TP = fiyat - 0*PipValue*Puan;
eğer (0 == 0) TP = 0;
if (0 == 0) sona erme = 0;
int bilet = OrderSend(Symbol(), OP_SELLSTOP, Lot, fiyat, Slippage, SL, TP, EAComment, OrderId, son kullanma, Red);
if (bilet == -1)
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
}
void MaximumOrder()
{
if (MaksOrdersAllowed> 0)
{
OrderCount();
}
}
geçersiz OrderCount()
{
int sayı = 0;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
if (OrderMagicNumber() == OrderId)
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
say++;
}
}
başka
{
Print("OrderSend() hatası - ", ErrorDescription(GetLastError()));
}
if (sayım > MaxOrdersAllowed )
{
SilOlestOrder();
}
}
geçersiz DeleteOldestOrder()
{
tarihsaat lastTime = 0;
int lastTicket = -1; // Hiçbiri açık değil.
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && OrderOpenTime() < lastTime && OrderTicket() < lastTicket )
{
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
if (OrderType() == OP_BUY || OrderType() == OP_SELL )
{
{
OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),Kayma,Kırmızı);
}
}
}
dönüş(sonTicket);
}
başka
Print("OrderSelect() hatası - ", ErrorDescription(GetLastError()));
}
int tanım()
{
if (yanlış) ObjectsDeleteAll();
}
Bunun gibi bir işlev kullanmayı deneyin:
{
datetime lastTime = Time[0]+Period()*60;
int lastTicket = -1; // None open.
for (int i=OrdersTotal()-1; i >= 0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if ((OrderType() == OP_BUY || OrderType() == OP_SELL) && OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId && OrderOpenTime() <= lastTime)
{
lastTime = OrderOpenTime();
lastTicket = OrderTicket();
}
}
if (lastTicket>-1)
if (OrderSelect(lastTicket,SELECT_BY_TICKET,MODE_TRADES))
OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(),Slippage,Red);
}Teşekkürler Mladen
Kusursuz çalıştı, ancak forumda bu kadar uzun bir kod parçası yayınladığım için özür dilerim. Arayüze hala alışıyorum. Teşekkür ederim.
Gösterge otomatik olarak yenilenmiyor.
Burada ticaretim için çok uygun bir göstergem var.
Maalesef kendi kendine güncelleme yapmıyor. Yenilendiğini her zaman manuel olarak yenilemeliyim.
Bu sorunu çözmenin bir yolu var mı?
Çok yardımcı olurdu !!
Şimdiden teşekkürler.
Not: Sahip olduğum her şeyi ekledim.
Bildirim sms'ini istiyor. Kod nasıl görünüyor?
Bildirim sms'ini istiyor. Kod nasıl görünüyor?
popej30
Bunun gibi yapın:
SendNotification ("göndermek istediğiniz bildirim mesajı");
Ve telefon numaranızı nereye giriyorsunuz? Numaram 0039 555-23-45. Nereden girilir?
Misal:
#property indicator_minimum -1.1
#property indicator_maximum 1.1
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Lime
extern int period = 25;
extern int limit = 5000;
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
int init() {
IndicatorBuffers(3);
SetIndexStyle(0, DRAW_ARROW);
SetIndexStyle(1, DRAW_ARROW);
SetIndexStyle(2, DRAW_NONE);
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
SetIndexArrow(0, 233);
SetIndexArrow(1, 234);
SetIndexBuffer(0, g_ibuf_88);
SetIndexBuffer(1, g_ibuf_92);
SetIndexBuffer(2, g_ibuf_84);
IndicatorShortName("BR16");
return (0);
}
int start() {
double ld_72;
double ld_24 = 0;
double ld_32 = 0;
double ld_unused_40 = 0;
double ld_unused_48 = 0;
double ld_56 = 0;
double ld_unused_64 = 0;
double l_low_80 = 0;
double l_high_88 = 0;
for (int li_96 = 0; li_96 <= limit; li_96++) {
g_ibuf_88[li_96] = 0;
g_ibuf_92[li_96] = 0;
}
for (li_96 = 0; li_96 <= limit; li_96++) {
l_high_88 = High;
l_low_80 = Low;
ld_72 = (High[li_96] + Low[li_96]) / 2.0;
if (l_high_88 != l_low_80) ld_24 = 0.66 * ((ld_72 - l_low_80) / (l_high_88 - l_low_80) - 0.5) + 0.67 * ld_32;
else ld_24 = 0.0;
ld_24 = MathMin(MathMax(ld_24, -0.999), 0.999);
g_ibuf_84[li_96] = MathLog((ld_24 + 1.0) / (1 - ld_24)) / 2.0 + ld_56 / 2.0;
ld_32 = ld_24;
ld_56 = g_ibuf_84[li_96];
}
for (li_96 = 0; li_96 <= limit; li_96++) {
if (g_ibuf_84[li_96] >= 0.0 && g_ibuf_84[li_96 + 1] < 0.0) g_ibuf_88[li_96] = -1;
if (g_ibuf_84[li_96] 0.0) g_ibuf_92[li_96] = 1;
}
return (0);
}Ve telefon numaranızı nereye yazıyorsunuz? Numaram 0039 555-23-45. Nereden girilir?
Misal:
#property indicator_minimum -1.1
#property indicator_maximum 1.1
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 Lime
extern int period = 25;
extern int limit = 5000;
double g_ibuf_84[];
double g_ibuf_88[];
double g_ibuf_92[];
int init() {
IndicatorBuffers(3);
SetIndexStyle(0, DRAW_ARROW);
SetIndexStyle(1, DRAW_ARROW);
SetIndexStyle(2, DRAW_NONE);
SetIndexEmptyValue(0, 0.0);
SetIndexEmptyValue(1, 0.0);
SetIndexArrow(0, 233);
SetIndexArrow(1, 234);
SetIndexBuffer(0, g_ibuf_88);
SetIndexBuffer(1, g_ibuf_92);
SetIndexBuffer(2, g_ibuf_84);
IndicatorShortName("BR16");
return (0);
}
int start() {
double ld_72;
double ld_24 = 0;
double ld_32 = 0;
double ld_unused_40 = 0;
double ld_unused_48 = 0;
double ld_56 = 0;
double ld_unused_64 = 0;
double l_low_80 = 0;
double l_high_88 = 0;
for (int li_96 = 0; li_96 <= limit; li_96++) {
g_ibuf_88[li_96] = 0;
g_ibuf_92[li_96] = 0;
}
for (li_96 = 0; li_96 <= limit; li_96++) {
l_high_88 = High;
l_low_80 = Low;
ld_72 = (High[li_96] + Low[li_96]) / 2.0;
if (l_high_88 != l_low_80) ld_24 = 0.66 * ((ld_72 - l_low_80) / (l_high_88 - l_low_80) - 0.5) + 0.67 * ld_32;
else ld_24 = 0.0;
ld_24 = MathMin(MathMax(ld_24, -0.999), 0.999);
g_ibuf_84[li_96] = MathLog((ld_24 + 1.0) / (1 - ld_24)) / 2.0 + ld_56 / 2.0;
ld_32 = ld_24;
ld_56 = g_ibuf_84[li_96];
}
for (li_96 = 0; li_96 <= limit; li_96++) {
if (g_ibuf_84[li_96] >= 0.0 && g_ibuf_84[li_96 + 1] < 0.0) g_ibuf_88[li_96] = -1;
if (g_ibuf_84[li_96] 0.0) g_ibuf_92[li_96] = 1;
}
return (0);
}İşte bunu nasıl yapabileceğinize dair iyi bir açıklama:
Gösterge otomatik olarak yenilenmiyor.
Burada ticaretim için çok uygun bir göstergem var.
Maalesef kendi kendine güncelleme yapmıyor. Yenilendiğini her zaman manuel olarak yenilemeliyim.
Bu sorunu çözmenin bir yolu var mı?
Çok yardımcı olurdu !!
Şimdiden teşekkürler.
Not: Sahip olduğum her şeyi ekledim.Jim
Her şeyi yeniden yazmak yerine, çubukları hesaplamak için bir sınır ekledi ve ardından tüm bu çubuklar yeniden hesaplanır. Bu, yenileme sorununu çözmelidir (jutlar, BarsTocalculate'i makul bir seviyede tutar - çok büyük değil, çok küçük bir değerde tutar. Varsayılan olarak 1000 kullandım ve bu şekilde sorun yok gibi görünüyor). Denemek