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
bilinmeyen alt pencere numarası
Merhaba kodlayıcı arkadaşlar
Herhangi biri iCustom aramalarıyla bu soruna bir çözüm buldu, aklıma gelen her şeyi denedim ama yine de Uzmanlar sekmesinde aynı mesajı alıyorum.
ObjectCreate işlevi için bilinmeyen alt pencere numarası -1
Saygılarımızla
Göstergedeki alt pencere çağrılarını kaldırın
Merhaba kodlayıcı arkadaşlar
Herhangi biri iCustom aramalarıyla bu soruna bir çözüm buldu, aklıma gelen her şeyi denedim ama yine de Uzmanlar sekmesinde aynı mesajı alıyorum.
ObjectCreate işlevi için bilinmeyen alt pencere numarası -1
SaygılarımızlaMerhaba CJA,
Bu soruna geçici bir çözüm bulmak için kullandığım bir çözümüm var.
EA'nızın iCustom'da aradığı gösterge, Nesnelerini çizmek için bir alt pencere bulmaya çalışıyor.
Çoğu durumda, göstergenizin herhangi bir şey çizmesine ihtiyacınız yoktur, yalnızca gösterge değerlerini EA'nıza sağlarsınız.
Benim çözümüm, göstergenin bir kopyasını yapmak ve alt pencere çağrılarını ve Nesne çizim rutinlerini silmek.
Bu, alt pencere hatalarını ortadan kaldırır ve EA'nın daha hızlı çalışmasını sağlar.
Ardından, EA'nız için iCustom ifadelerinizde bu yeni gösterge adını kullanın.
Muhtemelen daha iyi bir kod çözümü olduğundan eminim, ancak bu benim için çalışıyor.
Bu yardımcı olur umarım,
Robert
iCustom alt pencere hataları
Merhaba CJA,
Bu soruna geçici bir çözüm bulmak için kullandığım bir çözümüm var.
EA'nızın iCustom'da aradığı gösterge, Nesnelerini çizmek için bir alt pencere bulmaya çalışıyor.
Çoğu durumda, göstergenizin herhangi bir şey çizmesine ihtiyacınız yoktur, yalnızca gösterge değerlerini EA'nıza sağlarsınız.
Benim çözümüm, göstergenin bir kopyasını yapmak ve alt pencere çağrılarını ve Nesne çizim rutinlerini silmek.
Bu, alt pencere hatalarını ortadan kaldırır ve EA'nın daha hızlı çalışmasını sağlar.
Ardından, EA'nız için iCustom ifadelerinizde bu yeni gösterge adını kullanın.
Muhtemelen daha iyi bir kod çözümü olduğundan eminim, ancak bu benim için çalışıyor.
Bu yardımcı olur umarım,
RobertTeşekkürler Robert - öneriniz işe yarıyor, ancak internette bir arama yapmama ve işe yarayan veya mantıklı gelen hiçbir çözüm bulamamama rağmen, bunu yapmanın başka bir yolu olması gerektiğinden şüpheleniyorum, sadece bir sürü soru ve cevap yok. Bu yüzden yardımın için bir kez daha teşekkürler.
Saygılarımızla
CJA
Sadece bir öneri: neden (iCustom() ile çağrıldığında) istenen pencere numarasını iletmek için bir parametre kullanmıyorsunuz? Şuna benzer bir şey: if (ParameterWindowID>=0) o zaman iCustom'dandır, yoksa bazı varsayılan kodlar yapın .
Bu şekilde, başka bir koddan çağrıldığında bile onu nesneleri çizmeye zorlayabilir ve nesneleri doğru bir yere çizebilirdi.
Kodlama Yardımı
Merhaba millet.
Lütfen biri bana e-posta uyarı raporunda BOLD textFONTtype kullanmanın mümkün olup olmadığını söyleyebilir mi? Evet olduğunda bunu nasıl kodlayabilirim?
Yardım için çok teşekkürler.
CSV dosyasına nasıl kaydedileceğini mi kastediyorsunuz?
Şuna göz at:
Araçlar - .csv okuyucuMerhaba, Guru,
Web sitenizde bu dll'yi indirebileceğim bir yer var mı? Bence bu harika bir araç ve benden daha iyi yazabileceğinden oldukça eminim, bu yüzden onunla uğraşmayacağım. Şimdiden teşekkürler.
Kayıt olmam gerekiyor mu? Bu, indirme bölümünün altında bulunur ancak nasıl bir şey indireceğimi bulamadım.
hızlı EA değişikliği
Merhaba,
Biraz yardıma ihtiyacım var, aşağıdaki kodu değiştirmeye çalıştım ama EA MT4'ü çökertmeye devam etti.
Mevcut çubuk (yani emrin yürütüldüğü çubuk) kapandığında emrin kapanmasını istiyorum. Temel olarak bir bar ticareti yapın.
Bu orijinal koddur, sinyalden sinyale işlem yapar.
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (signaldown!=EMPTY_VALUE&&signaldown!=0) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (signalup!=EMPTY_VALUE&&signalup!=0) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
//if (timeprev!=Time[0]){
// timeprev = Time[0];
if (signalup!=EMPTY_VALUE&&signalup!=0)
{
Order = SIGNAL_BUY;
}
if (signaldown!=EMPTY_VALUE&&signaldown!=0){
Order = SIGNAL_SELL;
}
// }
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * 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);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (100 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+Biri bana yardım edebilir mi?
Ben de bu kodu buldum,
if(data!=iTime(Symbol(),0,0))
{
if(signalup!=EMPTY_VALUE&&signalup!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Ask,slip))
Print("short was closed");
}
}
}
Print("try open long");
Print(Symbol());
nt=OrderSend(Symbol(),OP_BUY,lots,Ask,slip,0,0,"ab",mn,0,Green);
if(nt>0)
Print("long order was opened");
}
if(signaldown!=EMPTY_VALUE&&signaldown!=0)
{
if(openpos()>0)
{
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&OrderMagicNumber()==mn)
{
if(OrderClose(OrderTicket(),lots,Bid,slip))
Print("long was closed");
}
}
}
Print("try open short");
Print(Symbol());
nt=OrderSend(Symbol(),OP_SELL,lots,Bid,slip,0,0,"ab",mn,0,Red);
if(nt>0)
Print("short was opened");
}
data=iTime(Symbol(),0,0);
}
//----
//----
return(0);
}
//+------------------------------------------------------------------+
int openpos()
{
int j=0;
int i,n;
n=OrdersTotal();
for(i=0;i<n;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==mn&&(OrderType()==OP_SELL||OrderType()==OP_BUY))
j++;
}
return(j);
Herhangi bir uzman bana hangisinin daha iyi yazılmış olduğunu söyleyebilir mi?
Bir çiftin tüm siparişleri için başabaş (sihir)
Herkese selam,
Bir çiftin tüm emirlerini (al ve sat) sihirle toplamak istiyorum ve eğer bir başabaşa ulaşırlarsa, tüm emirler kapatılmalıdır.
herhangi bir rehberlik çok hoş geldiniz, teşekkürler
extern bool PairBreakeven=true;// Aynı çiftin/büyünün tüm siparişleri için çift başına başabaş
extern double Pairbreakevengain=6;// başabaşa olanak sağlamak için gereken pip cinsinden kazanç
dış çift Başabaş=3;// başabaş, sipariş kapandı, 3 pip kâr/kayma
çift Pairmovebreakeven;
if(PairBreakeven==true){
if(Pairbreakevengain>0)Pairmovebreakeven(Pairbreakevengain,Pairbreakeven);
CloseBuyOrders(Sihirli);
CloseSellOrders(Sihirli);
}
void Pairmovebreakeven(double Pairbreakevengain,double Pairbreakeven){
Yenileme Oranları();
if(SiparişToplam()>0){
for(int i=OrdersTotal();i>=0;i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic ){
dönüş;
}
}
}
}
int CloseBuyOrders(int Magic){ //op_sell benzer
int toplam=SiparişToplam();
for(int cnt=toplam-1;cnt>=0;cnt--){
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()){
if(OrderType()==OP_BUY){
OrderClose(OrderTicket(),OrderLots(),Bid,3*mt);
}
}
}
dönüş(0);
}
3 veya daha fazla boyutlu ArraySort.
Bu konuda herhangi bir uzman yardımcı olabilir mi?
1 veya 2 boyutlu dizi için arraysort'u başarıyla kullanmayı denedim. Ama 3 boyutta takılıp kaldım. Bildiğim kadarıyla arraysort, sıralama için yalnızca ilk sütunu kullanır . Bu dizi sıralamanın 3 veya daha fazla boyutta nasıl çözüleceği konusunda tavsiyede bulunan var mı?
bool Restart = true;
double arraystore[20][20][20];
double ArrayActual[20] = {1.23,3.65,0.02,5.44,0.92,0.11,1.21,999.0,555.5,0.0001,44.221,1.01,0.002};
void init()
{
if (Restart == true)
{
Go();
Restart = false;
}
}
void start()
{
}
void Go()
{
for (int a = 1; a<=3; a++)
{
for (int b = 1; b<=6; b++)
{
int c = b+ (a-1)*6;
arraystore[a][0] = ArrayActual[c];
arraystore[a][1] = a;
arraystore[a][2] = b +a;
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
ArraySort(arraystore,WHOLE_ARRAY,1,MODE_DESCEND);
for ( a = 1; a<=3; a++)
{
for ( b = 1; b<=6; b++)
{
Print ( arraystore[a][0] + " . " + arraystore[a][1] + " . " + arraystore[a][2]);
}
}
}