Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 1096
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
Merhaba!
Bir TP pozisyonunun kapalı olup olmadığını nasıl belirleyebilirim? OrderClosePrice()==OrderTakeProfit() öğesinin kullanmanın doğru yolu olacağını düşünmüyorum.
Varsa sipariş yorumunda [tp] arayın...
Varsa sipariş yorumunda [tp] arayın...
Merhaba Pro.
lütfen hatayı düzeltmeme yardım edin...
gösterge çalışıyor.
0. çubukta sinyal tetiklenir.
ancak mevcut çubuğa başka tikler geldiğinde tekrar ateşlenir ve yeni sinyaller verir.
ve bir Sell or Buy olayı meydana geldiğinde, olayın o anki fiyatının yerine bir daire içindeki bu sinyalin konulmasına ve bu açık çubukta daha fazla olay işlenmemesine ihtiyacım var.
bu yeni sinyaller ve daireler bu çubukta olmamalıdır.
________________________
Bunun tamamen saçmalık, yanlış sinyaller vb. olduğunu söyleyeceğinizi anlıyorum ama buna ihtiyacım var.
Bir bayrak, etiket vb. oluşturmam gerektiğini biliyorum - ama dili kendim çalışmak için zamanım yok.
______________________________
Eklenen satırları renkle işaretleyerek ekli dosyaya böyle bir bayrak eklerseniz çok minnettar olurum.....
Teşekkürler ve umarım biri cevap verir
Birkaç hata veriyor, düzeltmek mümkün olmadı. Burada sorun ne?
//+------------------------------------------- --------------------+Lütfen haberlerde ticaret yapmama yardım edin. Gerçekten iki ana işlevi olması gereken bir danışmana ihtiyacımız var.
İlk işlev: belirli bir TP ve SL ile bekleyen emirleri , belirli bir zamanda, belirli bir fiyat seviyesinden yerleştirme.
İkinci işlev: Tasarrufları fiyata paralel tutun. Yani, onları fiyatla birlikte hareket ettirin (elle yapmak çok kasvetli). Ve belirli bir zamanda, haber bülteni sırasında bu eylemi durdurun ve fiyatın siparişlerden birine ulaşmasını bekleyin. Bundan sonraki ikinci sipariş hemen silinir.
Tekrar:
Haberden 2 dakika önce fiyattan 10 puan uzaklıkta iki zıt stop emri verilir, fiyata paralel hareket etme fonksiyonu hemen devreye girer, 2 dakika fiyat ile hareket eder, bir emir fiyattan kaçar , ikincisi fiyatı yakalar. Haberin yayınlanması sırasında, bekleyenleri taşıma işlevini kapatın ve ardından siparişlerden birinin bozulmasını bekleyin. Birincisinin bozulmasından sonraki ikincisi hemen kaldırılır.
EA'nın özelliklerinde değiştirilebilen değişkenler (yaklaşık olarak hayal ettiğim gibi, gerçek uygulamanın ne olduğunu bilmiyorum):
TP - 600 (varsayılan)
Trall - 300 (varsayılan)
SL - 100 (varsayılan)
Pip - 100 (varsayılan fiyattan uzaklık)
Kayma - 100 (varsayılan olarak pip cinsinden kayma)
Parti - 0.1
Risk - yüzde 10 // (pekala, bu gerekli değil, bir şey olursa daha sonra soracağım)
TimeNews1On - true (zamanı girmek için aşağıdaki hücreleri kullanın, false - EA bunları takas etmez)
TimeNewsHour - saat (haber yayın zamanı 1)
TimeNewsMin - dakika (haber yayınlanma zamanı 1)
TimeNews2On - yanlış (varsayılan)
TimeNewsHour - saat (haber yayınlanma zamanı 2)
TimeNewsMin - dakika (haber yayınlanma zamanı 2)
TimeNews3On - yanlış
TimeNewsHour - saat (haber yayın zamanı 3)
TimeNewsMin - dakika (haber yayınlanma süresi 3)
TimeNews4On - yanlış
TimeNewsHour - saat (haber yayın zamanı 4)
TimeNewsMin - dakika (haber yayınlanma süresi 4)
TimeNews5On - yanlış
TimeNewsHour - saat (haber yayınlanma zamanı 5)
TimeNewsMin - dakika (haber yayınlanma zamanı 5)
Insta, beş işaretli
Tüm bunları manuel olarak yapıyorum, bu bir angarya ve şimdi haberleri çözmek için zaman yok, danışmanı sabah veya akşam çiftler halinde koymak istiyorum, o gün haber olacak, böylece hepsi işe yarayacak. dışarı.
--------------------------------------
Bu tür danışmanları tanıyorsanız, tanıştıysanız, lütfen paylaşın
Şimdiden teşekkür ederim!
Orijinal kodunuza geri dönelim. Şu şekilde deneyin:
int OnInit()
{
if (!GlobalVariableCheck("AllowNewOrders")) GlobalVariableSet("AllowNewOrders",1);
dönüş(INIT_SUCCESSED);
}
geçersiz OnDeInit()
{
GlobalVariableSet("YeniSiparişlere İzin Ver",1);
}
geçersiz OnTick()
{
if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)
// Son ticaretin karı sıfırsa, aynısını aç
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder(), 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır
{
if (GlobalVariableGet("AllowNewOrders") > 0) return;
if (SignalBuy() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
}
if (SignalSell() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
}
}
}
}
Kontrol etmedim, çünkü toplam 1 sipariş limiti olan danışmanın birkaç kopyasının hangi sembolün (karlı bir seriden sonra) ticarete başlamak için daha iyi olduğunu nasıl belirleyeceğini anlamıyorum?
Lütfen haberlerde ticaret yapmama yardım edin. Gerçekten iki ana işlevi olması gereken bir danışmana ihtiyacımız var.
İlk işlev: belirli bir TP ve SL ile bekleyen emirleri , belirli bir zamanda, belirli bir fiyat seviyesinden yerleştirme.
İkinci işlev: Tasarrufları fiyata paralel tutun. Yani, onları fiyatla birlikte hareket ettirin (elle yapmak çok kasvetli). Ve belirli bir zamanda, haber bülteni sırasında bu eylemi durdurun ve fiyatın siparişlerden birine ulaşmasını bekleyin. Bundan sonraki ikinci sipariş hemen silinir.
Tekrar:
Haberden 2 dakika önce fiyattan 10 puan uzaklıkta iki zıt stop emri verilir, fiyata paralel hareket etme fonksiyonu hemen devreye girer, 2 dakika fiyat ile hareket eder, bir emir fiyattan kaçar , ikincisi fiyatı yakalar. Haberin yayınlanması sırasında, bekleyenleri taşıma işlevini kapatın ve ardından siparişlerden birinin bozulmasını bekleyin. Birincisinin bozulmasından sonraki ikincisi hemen kaldırılır.
Bu tür danışmanları tanıyorsanız, tanıştıysanız, lütfen paylaşın
Şimdiden teşekkür ederim!
Sana bir dosyadan haber verisi okuma kodunu gönderebilirim, işine yarayabilir. Haftada bir ekonomik takvime bakarsınız, dikkat etmeniz gereken o haberlerin folder_with_terminal\MQL4\Files\novosti.txt dosyasına data girersiniz, hatta haberden hemen önce danışmanı açabilirsiniz (takip edebilirsiniz). örneğin, böyle bir danışmanla Amerikan oturumunun başlangıcı - aniden güçlü bir hareket olacak). Ticaret açısından kod henüz kesinleşmedi, çünkü birkaç kez haberlerde ciddi şekilde “atıldım” :)) En son sürüm farklı mesafelerde altı emir (3 al stop + 3 sat stop) yerleştiriyor. farklı kar al... Genel olarak haber kodu çalışıyor, ancak ticaret kodunun iyileştirilmesi gerekiyor.
#mülkiyet katı
girdi dizisi NewsFilename = "novosti.txt"; // Haber içeren metin dosyasının adı
giriş int DakikaÖnce = 5; // Sipariş vermek için haber bülteninden kaç dakika önce
int DakikaSonrası1 = 15; // 1. grubun siparişlerini silmek için haberin yayınlanmasından kaç dakika sonra
giriş int DakikaAfter2 = 30; // 2. grubun siparişlerini silmek için haberin yayınlanmasından kaç dakika sonra
giriş int Dakika Sonra3 = 30; // 3. grubun siparişlerini silmek için haberin yayınlanmasından kaç dakika sonra
girdi int FiyatIndent1 = 15; // Puan cinsinden fiyattan mahsup
girdi int FiyatIndent2 = 5; // Bir önceki kazançtan puan olarak girinti
giriş int TakeProfit1 = 40; // Puan olarak 1 grup için kar alma boyutu
girdi int TakeProfit2 = 60; // 2. grup için puan olarak kâr al boyutu
girdi int TakeProfit3 = 100; // 3. grup için puan olarak kar al boyutu
giriş int StopLoss = 20; // Puan cinsinden tüm siparişler için kayıp boyutunu durdur
giriş çift Çarpan1 = 1.0; // 2. grubun siparişlerinin çokluğuna katsayı
giriş çift Çarpan2 = 2.0; // 3. grubun siparişlerinin çokluğuna katsayı
girdi int MaksimalRisk = 10; // Yüzde olarak maksimum risk
//============================================== ==================================================
tarihsaat Times[200], LastTime;
diziSembolleri[200];
bool NewsPassed[200];
int NewsCount;
//============================================== ==================================================
int OnInit()
{
// En son haberler yükleniyor
if (!LoadNews()) return(INIT_FAILED);
dönüş(INIT_SUCCESSED);
}
//============================================== ==================================================
geçersiz OnTick()
{
if (!IsTradeAllowed()) dönüşü;
tarihsaat TestTime = iTime(Symbol(), PERIOD_H1, 0);
// Her günün başında haberleri güncelle
if (ZamanGünü(TestZamanı) != ZamanGünü(Son Zaman))
{
geçen zaman = test zamanı;
if (!LoadNews())
{
Alert("Haber güncellemesi başarısız!");
dönüş;
}
}
//------------------------------------------------ -------------------------------------------------
for (int i = 0; i < NewsCount; i++)
{
// Haber bülteninden önce ara siparişleri verin
if (Times[i] > TimeCurrent() && Times[i] - TimeCurrent() <= MinutesBefore * 60 && !NewsPassed[i])
{
PrintFormat("Geçerli saat - %s, para birimine göre sipariş verme zamanı - %s", TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES), Symbols[i]);
KurulumSiparişleri(Semboller[i]);
NewsPassed[i] = doğru;
}
}
//------------------------------------------------ -------------------------------------------------
}
//============================================== ==================================================
bool LoadNews()
{
int Sayı, Tik = 0;
string Str, Veri[40];
ResetLastError();
if (!FileIsExist(NewsFilename, 0))
{
PrintFormat("%s haber dosyası mevcut değil.", HaberDosyaadı);
Print("Dosya, test sırasında \\MQL4\\Files klasöründe - \\Tester\\Files klasöründe bulunmalıdır.");
dönüş(yanlış);
}
int Handle = FileOpen(NewsFilename, FILE_READ|FILE_SHARE_READ|FILE_TXT);
if (İşle != INVALID_HANDLE)
{
while (!FileIsEnding(Handle))
{
Str = FileReadString(İşlemci);
Say = StringSplit(Str, StringGetChar(" ", 0), Veri);
for (int i = 1; i < Sayı; i = ben + 2)
{
Times[Tick] = StringToTime(Data[0] + " " + Data[i]);
Semboller[Tick] = Veri[i + 1];
Kene++;
}
}
FileClose(Kolu);
NewsCount = İşaretle;
for (int i = 0; i < NewsCount; i++)
{
if (Times[i] > TimeCurrent()) NewsPassed[i] = false;
başka NewsPassed[i] = false;
}
PrintFormat("Yüklenen haber sayısı - %i.", NewsCount);
dönüş(doğru);
}
PrintFormat("%s dosyası açılamıyor. Hata kodu %d.", NewsFilename, GetLastError());
dönüş(yanlış);
}
//============================================== ==================================================
geçersiz SetupOrders(stringSym)
{
int Bilet, Kaz, Say;
çift Fiyat, TP, SL, Parti;
datetime KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter1) * 60;
dizi SymList[7];
//------------------------------------------------ -------------------------------------------------
if (Sim == "AUD")
{
SymList[0] = "AUDCAD"; SymList[1] = "AUDCHF"; SymList[2] = "AUDJPY"; SymList[3] = "AUDNZD";
SymList[4] = "USDUSD"; SymList[5] = "EURAUD"; SymList[6] = "GBPAUD";
}
//------------------------------------------------ -------------------------------------------------
if (Sym == "CAD")
{
SymList[0] = "AUDCAD"; SymList[1] = "CADCHF"; SymList[2] = "CADJPY"; SymList[3] = "EURCAD";
SymList[4] = "GBPCAD"; SymList[5] = "NZDCAD"; SymList[6] = "USDCAD";
}
//------------------------------------------------ -------------------------------------------------
if (Sim == "CHF")
{
SymList[0] = "AUDCHF"; SymList[1] = "CADCHF"; SymList[2] = "EURCHF"; SymList[3] = "GBPCHF";
SymList[4] = "CHFJPY"; SymList[5] = "NZDCHF"; SymList[6] = "USDCHF";
}
//------------------------------------------------ -------------------------------------------------
if (Sim == "EUR")
{
SymList[0] = "EURAUD"; SymList[1] = "EURCAD"; SymList[2] = "EURCHF"; SymList[3] = "EURGBP";
SymList[4] = "EURJPY"; SymList[5] = "EURNZD"; SymList[6] = "EURUSD";
}
//------------------------------------------------ -------------------------------------------------
if (Sym == "GBP")
{
SymList[0] = "EURGBP"; SymList[1] = "GBPAUD"; SymList[2] = "GBPCAD"; SymList[3] = "GBPCHF";
SymList[4] = "GBPJPY"; SymList[5] = "GBPNZD"; SymList[6] = "GBPUSD";
}
//------------------------------------------------ -------------------------------------------------
if (Sim == "JPY")
{
SymList[0] = "AUDJPY"; SymList[1] = "CADJPY"; SymList[2] = "CHFJPY"; SymList[3] = "EURJPY";
SymList[4] = "GBPJPY"; SymList[5] = "NZDJPY"; SymList[6] = "USDJPY";
}
//------------------------------------------------ -------------------------------------------------
if (Sym == "NZD")
{
SymList[0] = "AUDNZD"; SymList[1] = "EURNZD"; SymList[2] = "GBPNZD"; SymList[3] = "NZDCAD";
SymList[4] = "NZDCHF"; SymList[5] = "NZDJPY"; SymList[6] = "NZDUSD";
}
//------------------------------------------------ -------------------------------------------------
if (Sim == "USD")
{
SymList[0] = "AUUSD"; SymList[1] = "EURUSD"; SymList[2] = "GBPUSD"; SymList[3] = "NZUSD";
SymList[4] = "USDCAD"; SymList[5] = "USDCHF"; SymList[6] = "USDJPY";
}
//------------------------------------------------ -------------------------------------------------
için (int i = 0; i < 7; i++)
{
sayı = 0;
Dig = int(MarketInfo(SymList[i], MODE_DIGITS));
Lot = NormalizeDouble(0.01, 2);
// Satın almak
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter1) * 60;
Fiyat = NormalizeDouble(MarketInfo(SymList[i], MODE_ASK) + PriceIndent1 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat + TakeProfit1 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat - StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_BUYSTOP, Parti, Fiyat, 5, SL, TP, NULL, 0, KeepAlive, clrLimeGreen);
if (Ticket > 0) Count++; else PrintFormat("%i emri oluşturulurken hata, sembol %s, fiyat %f, %f al, %f dur, %f partisi.", GetLastError(), SymList[i], Price, TP, SL, Lot) ;
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter2) * 60;
Fiyat = NormalizeDouble(TP + PriceIndent2 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat + TakeProfit2 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat - StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_BUYSTOP, Lot * Multiplier1, Price, 5, SL, TP, NULL, 0, KeepAlive, clrLimeGreen);
if (Ticket > 0) Count++; else PrintFormat("%i emri oluşturulurken hata, sembol %s, fiyat %f, %f al, %f'yi durdur, %f partisi.", GetLastError(), SymList[i], Fiyat, TP, SL, Parti* çarpanı1 );
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter3) * 60;
Fiyat = NormalizeDouble(TP + PriceIndent2 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat + TakeProfit2 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat - StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_BUYSTOP, Lot*Multiplier2, Price, 5, SL, TP, NULL, 0, KeepAlive, clrLimeGreen);
if (Ticket > 0) Count++; else PrintFormat("%i emri oluşturulurken hata, sembol %s, fiyat %f, %f al, %f'yi durdur, %f partisi.", GetLastError(), SymList[i], Fiyat, TP, SL, Parti* çarpanı2 );
// Satış
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter1) * 60;
Fiyat = NormalizeDouble(MarketInfo(SymList[i], MODE_BID) - PriceIndent1 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat - TakeProfit1 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat + StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_SELLSTOP, Lot, Price, 5, SL, TP, NULL, 0, KeepAlive, clrOrangeRed);
if (Ticket > 0) Count++; else PrintFormat("%i emri oluşturulurken hata, sembol %s, fiyat %f, %f al, %f dur, %f partisi.", GetLastError(), SymList[i], Price, TP, SL, Lot) ;
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter2) * 60;
Fiyat = NormalizeDouble(TP - PriceIndent2 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat - TakeProfit2 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat + StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_SELLSTOP, Lot, Price, 5, SL, TP, NULL, 0, KeepAlive, clrOrangeRed);
if (Ticket > 0) Count++; else PrintFormat("%i emri oluşturulurken hata, sembol %s, fiyat %f, %f al, %f'yi durdur, %f partisi.", GetLastError(), SymList[i], Fiyat, TP, SL, Parti* çarpanı1 );
KeepAlive = TimeCurrent() + (MinutesBefore + MinutesAfter3) * 60;
Fiyat = NormalizeDouble(TP - PriceIndent2 / pow(10, Dig-1), Dig);
TP = NormalizeDouble(Fiyat - TakeProfit3 / pow(10, Dig-1), Dig);
SL = NormalizeDouble(Fiyat + StopLoss / pow(10, Dig-1), Dig);
Bilet = OrderSend(SymList[i], OP_SELLSTOP, Lot, Price, 5, SL, TP, NULL, 0, KeepAlive, clrOrangeRed);
PrintFormat("%s sembolü için %i sipariş verildi.", SymList[i], Count);0 }
}
Haber dosyası şöyle görünür:
15.09.2016 01:45 NZD 04:30 AUD 10:30 CHF 14:00 GBP 15:30 USD
16.09.2016 15:30 USD 17:00 USD
vb...
Orijinal kodunuza geri dönelim. Şu şekilde deneyin:
int OnInit()
{
if (!GlobalVariableCheck("AllowNewOrders")) GlobalVariableSet("AllowNewOrders",1);
dönüş(INIT_SUCCESSED);
}
geçersiz OnDeInit()
{
GlobalVariableSet("YeniSiparişlere İzin Ver",1);
}
geçersiz OnTick()
{
if (CountTrades() == 0) // Emir sayısı sıfıra eşit olmalıdır
{
if ((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) < PriceOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) > PriceOpenLastHistOrder(OP_SELL)))
// Son anlaşma kârsızsa, aynısı açılır, ancak artan lotla
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder()*Çarpan, 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (PriceCloseLastHistOrder() == PriceOpenLastHistOrder() && CountHistTrades() > 0)
// Son ticaretin karı sıfırsa, aynısını aç
{
GlobalVariableSet("YeniSiparişlere İzin Ver", 0);
Tür = TypeLastHistOrder();
if (Tip == OP_BUY) Fiyat = Sor;
if (Tür == OP_SELL) Fiyat = Teklif;
Parti = NormalizeDouble(LotsLastHistOrder(), 2);
bilet = OrderSend(Symbol(), Type, Lot, Price, Slippage, 0, 0, IntegerToString(Exp), Magic);
}
if (((TypeLastHistOrder() == OP_BUY && PriceCloseLastHistOrder(OP_BUY) > FiyatOpenLastHistOrder(OP_BUY))
|| (TypeLastHistOrder() == OP_SELL && PriceCloseLastHistOrder(OP_SELL) < PriceOpenLastHistOrder(OP_SELL)))
|| CountHistTrades() == 0)// Son işlem karlıysa, sipariş açılır
{
if (GlobalVariableGet("AllowNewOrders") > 0) return;
if (SignalBuy() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
}
if (SignalSell() && MaxOpenOrders > OrdersTotal())
{
bilet = OrderSend(Symbol(), OP_SELL, Lot, Bid, Slippage, 0, 0, IntegerToString(Exp), Magic);
if (ticket>0) GlobalVariableSet("AllowNewOrders", 0);
}
}
}
}
Kontrol etmedim, çünkü toplam 1 sipariş limiti olan danışmanın birkaç kopyasının hangi sembolün (karlı bir seriden sonra) ticarete başlamak için daha iyi olduğunu nasıl belirleyeceğini anlamıyorum?
Alexander, her sembolde, ayarlarda tek yönde ayarlanan bir sıradaki mum sayısını beklemeli ve ardından seriye başlamalıdır, yani bu koşul o sembol için önce hangi sembol üzerinde çalışacaktır ve ilk anlaşmayı açmalıdır. . Aynı zamanda, ilk seri kârla bitene kadar diğer sembollerde seri açılmasını yasaklamak gerekir.
Verdiğiniz son kod zaten bir adım ileri - herhangi bir işlem açmıyor (bu, yasağın yürürlükte olduğu anlamına geliyor). Ta ki neden hiç olmadığını anlayana kadar. Derginin ekran görüntüsü ektedir.
Belki de kodu nasıl yapıştıracağınızı öğrenmenin zamanı gelmiştir?!