Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+externdouble Lots = 1 ;
externint TakeProfit = 300 ;
externint StopLoss = 50 ;
externint Magic = 111 ;
externint Slippage = 3 ;
//+------------------------------------------------------------------+externstring TMA = "Параметры индикатора TMA" ;
externstring TimeFrame = "current time frame" ;
externint HalfLength = 56 ;
externint Price = PRICE_CLOSE ;
externdouble ATRMultiplier = 2.0 ;
externint ATRPeriod = 100 ;
externbool Interpolate = true ;
//+------------------------------------------------------------------+double PriceHigh,PriceLow,SL,TP,OrderMagicNumber;
int ticket;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
if ( Digits == 3 || Digits == 5 )
{
TakeProfit *= 10 ;
StopLoss *= 10 ;
Slippage *= 10 ;
}
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
PriceHigh= iCustom ( NULL , 0 , "TMA_Fair" ,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate, 1 , 0 );
PriceLow = iCustom ( NULL , 0 , "TMA_Fair" ,TimeFrame,HalfLength,Price,ATRMultiplier,ATRPeriod,Interpolate, 2 , 0 );
if (CountSell()== 0 && Bid>=PriceHigh)
{
ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "ТМА" ,Magic, 0 ,Red);
if (ticket> 0 )
{
SL = NormalizeDouble (Bid + StopLoss* Point , Digits );
TP = NormalizeDouble (Bid - TakeProfit* Point , Digits );
if ( OrderSelect (ticket,SELECT_BY_TICKET))
if (!OrderModify(ticket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на продажу" );
}
elsePrint ( "Ошибка открытия ордера на продажу" );
}
if (CountBuy()== 0 && Ask<=PriceLow)
{
ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "ТМА" ,Magic, 0 ,Blue);
if (ticket> 0 )
{
TP = NormalizeDouble (Ask + TakeProfit* Point , Digits );
SL = NormalizeDouble (Ask - StopLoss* Point , Digits );
if ( OrderSelect (ticket,SELECT_BY_TICKET))
if (!OrderModify(ticket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на покупку" );
}
elsePrint ( "Ошибка открытия ордера на покупку" );
}
if (Ask<=PriceLow && CountSell()> 0 )
{
for ( int i= OrdersTotal () - 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magic && OrderType()==OP_SELL)
if (!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black))
Print ( "Ошибка закрытия ордера на продажу" );
}
}
}
if (Bid>=PriceHigh && CountBuy()> 0 )
{
for (i= OrdersTotal () - 1 ; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magic && OrderType()==OP_BUY)
if (!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black))
Print ( "Ошибка закрытия ордера на покупку" );
}
}
}
}
//+------------------------------------------------------------------+int CountSell()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber && Magic && OrderType()==OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+int CountBuy()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber && Magic && OrderType()==OP_BUY)
count++;
}
}
//+------------------------------------------------------------------+
Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
Kod, kod düzenleyiciyi kullanarak kod düzenleyicide normal şekilde biçimlendirilebilir : Ctrl + <
Sizin için biçimlendirdim - artık normalde okunabilir durumda.
Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
Konum kontrol işlevlerinde hatayı doğru bir şekilde tanımladınız
//+------------------------------------------------------------------+int CountSell()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber() == Magic && OrderType()==OP_SELL)
count++;
}
}return (count);
}
//+------------------------------------------------------------------+int CountBuy()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber() == Magic && OrderType()==OP_BUY)
count++;
}
}
//+----------------------
Yanlışlıkla tüm kodu kopyalamadım. Orada her şey yolunda geri dönüş(sayım);
}
Beklendiği gibi kod bu şekilde sona erer. Derlerken, hiçbir hata veya uyarı yoktur. Bir hata yaptığım fonksiyonlarda yürüyüş, tam olarak nerede olduğunu anlayamıyorum. Yukarıda önerildiği gibi, düzeltildi. Ayrıca hata yok, ancak danışmanın kendisi aynı şekilde çalışıyor (ilk sinyalde, tüm depozito için satın alıyor, belirli lotlarda, örneğin, 1 lot belirledim ve 1 lot 200 veya daha fazla işlem satın alıyor, çünkü depozito yeterli olduğu sürece ve böylece sinyal doğru bir şekilde verir, ayrıca doğru satın alır, sadece çok)
Yanlışlıkla tüm kodu kopyalamadım. Orada her şey yolunda geri dönüş(sayım);
}
Beklendiği gibi kod bu şekilde sona erer. Derlerken, hiçbir hata veya uyarı yoktur. Bir hata yaptığım fonksiyonlarda yürüyüş, tam olarak nerede olduğunu anlayamıyorum. Yukarıda önerildiği gibi, düzeltildi. Ayrıca hata yok, ancak danışmanın kendisi aynı şekilde çalışıyor (ilk sinyalde, tüm depozito için satın alıyor, belirtilen lotlarda, örneğin, 1 lot belirledim ve 1 lot 200 veya daha fazla işlem alıyor, çünkü depozito yeterli olduğu sürece ve böylece sinyal doğru bir şekilde verir, ayrıca doğru satın alır, sadece çok)
Alexander Fedosov : Tarihler arasındaki mum sayısı nasıl bulunur?
TF senkronize edilirse, herhangi bir CopyXXXX() işlevi:
Gerekli zaman aralığının başlangıç ve bitiş tarihlerine göre arama
intCopyTime( sicimsembol_adı,// sembol adı ENUM_TIMEFRAMESzaman çerçevesi,// dönem tarih saatstart_time,// hangi tarihten itibaren tarih saatstop_time,// hangi tarih tarih saatzaman_dizi[]// açılış zamanını kopyalayacak dizi );
Geri dönüş değeri
Kopyalanan dizi öğelerinin sayısı veya bir hata olması durumunda -1.
zamana göre 2 çubuğu bulmak için iBarShift()'i kullanabilirsiniz
TF senkronize edilirse, herhangi bir CopyXXXX() işlevi:
Gerekli zaman aralığının başlangıç ve bitiş tarihlerine göre arama
intCopyTime( sicimsembol_adı,// sembol adı ENUM_TIMEFRAMESzaman çerçevesi,// dönem tarih saatstart_time,// hangi tarihten itibaren tarih saatstop_time,// hangi tarih tarih saatzaman_dizi[]// açılış zamanını kopyalayacak dizi );
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
Kod, kod düzenleyiciyi kullanarak kod düzenleyicide normal şekilde biçimlendirilebilir : Ctrl + <
Sizin için biçimlendirdim - artık normalde okunabilir durumda.
Beyler, danışmanı düzeltmeye yardım edin. Siparişleri kontrol etmek yerine, ilk sinyalde depozitonun tamamını harcayana kadar durmadan satın alır. hepinize şimdiden teşekkürler
Konum kontrol işlevlerinde hatayı doğru bir şekilde tanımladınız
kırmızıyla vurgulanmış, düzeltilmiş
Bunun gibi bir şey.
Konum kontrol işlevlerinde hatayı doğru bir şekilde tanımladınız
kırmızıyla vurgulanmış, düzeltilmiş
Bunun gibi bir şey.
Düzeltildi hala aynı. Sorun hala alakalı
tüm kodu kopyaladın mı?
tüm kodu kopyaladın mı?
Yanlışlıkla tüm kodu kopyalamadım. Orada her şey yolunda geri dönüş(sayım);
}
Beklendiği gibi kod bu şekilde sona erer. Derlerken, hiçbir hata veya uyarı yoktur. Bir hata yaptığım fonksiyonlarda yürüyüş, tam olarak nerede olduğunu anlayamıyorum. Yukarıda önerildiği gibi, düzeltildi. Ayrıca hata yok, ancak danışmanın kendisi aynı şekilde çalışıyor (ilk sinyalde, tüm depozito için satın alıyor, belirli lotlarda, örneğin, 1 lot belirledim ve 1 lot 200 veya daha fazla işlem satın alıyor, çünkü depozito yeterli olduğu sürece ve böylece sinyal doğru bir şekilde verir, ayrıca doğru satın alır, sadece çok)
Yanlışlıkla tüm kodu kopyalamadım. Orada her şey yolunda geri dönüş(sayım);
}
Beklendiği gibi kod bu şekilde sona erer. Derlerken, hiçbir hata veya uyarı yoktur. Bir hata yaptığım fonksiyonlarda yürüyüş, tam olarak nerede olduğunu anlayamıyorum. Yukarıda önerildiği gibi, düzeltildi. Ayrıca hata yok, ancak danışmanın kendisi aynı şekilde çalışıyor (ilk sinyalde, tüm depozito için satın alıyor, belirtilen lotlarda, örneğin, 1 lot belirledim ve 1 lot 200 veya daha fazla işlem alıyor, çünkü depozito yeterli olduğu sürece ve böylece sinyal doğru bir şekilde verir, ayrıca doğru satın alır, sadece çok)
Kontrol edildi, düzeltildi, çalışıyor.
Tarihler arasındaki mum sayısı nasıl bulunur?
TF senkronize edilirse, herhangi bir CopyXXXX() işlevi:
Gerekli zaman aralığının başlangıç ve bitiş tarihlerine göre arama
int CopyTime (
sicim sembol_adı , // sembol adı
ENUM_TIMEFRAMES zaman çerçevesi , // dönem
tarih saat start_time , // hangi tarihten itibaren
tarih saat stop_time , // hangi tarih
tarih saat zaman_dizi[] // açılış zamanını kopyalayacak dizi
);
Geri dönüş değeri
Kopyalanan dizi öğelerinin sayısı veya bir hata olması durumunda -1.
zamana göre 2 çubuğu bulmak için iBarShift()'i kullanabilirsiniz
TF senkronize edilirse, herhangi bir CopyXXXX() işlevi:
Gerekli zaman aralığının başlangıç ve bitiş tarihlerine göre arama
int CopyTime (
sicim sembol_adı , // sembol adı
ENUM_TIMEFRAMES zaman çerçevesi , // dönem
tarih saat start_time , // hangi tarihten itibaren
tarih saat stop_time , // hangi tarih
tarih saat zaman_dizi[] // açılış zamanını kopyalayacak dizi
);
Geri dönüş değeri
Kopyalanan dizi öğelerinin sayısı veya hata durumunda -1.